location配置
Nginx配置文件中的location部分主要用来对于传入的URL进行匹配到特定的location,并从这个location中定义的目录下查找请求的文件。
location的优先级
使用Nginx Location可以控制访问网站的路径, 但一个server可以有多个location配置,为区分优先级而需要设定location的匹配规则。
location中的优先级规则为(从上到下优先级依次降低):
等号类型(=),该类型为精确匹配,一旦匹配成功则不再查找其他匹配项
前缀普通匹配(^~),不支持正则表达式;如果有多个location都能匹配的话,优先匹配表达式最长的location
正则表达式匹配,包括~(区分大小写)和~*(不区分大小写);正则匹配以从上到下的顺序为优先级,一旦匹配一个则不再继续匹配
常规字符串匹配,如果有多个location都能匹配的话,优先匹配表达式最长的location。
案例:
测试location的优先级
结果:
LNMP架构
LNMP是一套技术的组合,L=Linux、N=Nginx、M~=MySQL、P~=Python
首先Nginx服务是不能处理动态请求,那么当用户发起动态请求时, Nginx又是如何进行处理的。
1.静态请求:请求的内容是静态文件就是静态请求
1)静态文件:文件上传到服务器,永远不会改变的文件就是静态文件
2)html就是一个标准的静态文件
2.动态请求:请求的内容是动态的就是动态请求
1)不是真实存在服务器上的内容,是通过数据库或者其他服务拼凑成的数据
当用户发起http请求,请求会被Nginx处理,如果是静态资源请求Nginx则直接返回,如果是动态请求Nginx则通过uwsgi协议转交给后端的Python程序处理
uwsgi
因为nginx不支持wsgi协议,无法直接调用py开发的webApp。
在nginx+uWsgi+Django的框架里,nginx代理+webServer,uWsgi是wsgiServer,Django是webApp。
nginx接收用户请求,并判定哪些转发到uWsgi,uWsgi再去调用pyWebApp。
uwsgi服务部署
1.安装依赖文件
由于Django和uwsgi都需要基于Python,所以要先下载依赖文件
2.安装Django和uwsgi
3.创建项目
1.安装完环境后就可以创建项目,
在某个文件夹下创建一个项目文件
2.再到创建好的项目文件下创建一个程序
3.修改linux下的配置文件,
允许所有ip访问,
删除原有数据库。
4.测试Django是否正常
打开网站测试是否正常
这样在Python环境下django算是搭建完成,但为了提高承载能力,一般需要使用uwsgi配合
5.编辑项目配置文件
使用uwsgi需要在项目目录下增加配置文件
[uwsgi] # 端口号 socket = :8000 # 指定项目的目录 chdir = /opt/linux # wsgi文件路径 wsgi-file = linux/wsgi.py # 模块wsgi路径 module = linux.wsgi # 是否开启master进程 master = true # 工作进程的最大数目 processes = 4 # 结束后是否清理文件 vacuum = true配置文件
6.启动uwsgi
7.编辑Nginx配置文件并重启Nginx
server { listen 80; server_name py.test.com; location / { include uwsgi_params; uwsgi_pass 127.0.0.1:8000; uwsgi_read_timeout 2; uwsgi_param UWSGI_SCRIPT linux.wsgi; uwsgi_param UWSGI_CHDIR /opt/linux; index index.html index.htm; client_max_body_size 35m; } }Nginx配置
8.域名解析
9.尝试访问
部署bbs项目
接下来尝试使用数据库部署一个动态的请求。
1.部署数据库
首先需要安装数据库
mariadb其实就是mysql
安装成功后启动数据库
2.远程链接数据库
首先打开mysql创建一个数据库并执行远程链接
打开pycharm并链接数据库
3.上传网站代码
4.数据库迁移
1.确保bbs/app01/migrations目录下只有__init__.py一个文件
2.确保Django版本与当前项目的版本相符(此项目为1.11版本)
3.安装MySQL数据库插件
4.修改bbs配置文件
使所有ip可访问
修改数据库
创建数据库迁移文件
数据库迁移
在Python中确认
5.配置uwsgi
配置uwsgi
启动uwsgi
6.配置Nginx
设置Nginx配置文件
重启Nginx
7.测试访问