原文链接:https://blog.csdn.net/c465869935/article/details/53242126
项目流程:
1.客户端请求服务资源。
2.nginx作为对外暴露的服务接口,获取http请求,进行解包分析。
3.如果是静态文件请求如/static/或者/media/等,就会请求nginx配置的静态文件目录,返回请求资源。
4.如果是动态请求,则会根据配置文件转发给uWSGI,uWSGI处理接收到的请求并转发给wsgi。
5.wsgi根据请求调用django工程的某个文件或函数,处理完后django将返回值交给wsgi。
6.wsgi再传给uWSGI,再传给nginx,最后传到客户端。
安装部署流程:
一.安装uWSGI并测试
1.安装:
pip3 install uwsgi
或者通过豆瓣源更快安装
pip3 install -i https://pypi.douban.com/simple uwsgi
2.新建test.py文件,代码如下:
def application(env, start_response): start_response('200 OK', [('Content-Type','text/html')]) return [r("Hello World")]
3.终端输入
sudo uwsgi --http :8000 --wsgi-file test.py
打开浏览器输入localhost:8000,看到Hello World表示安装成功。
二.写配置文件:uwsgi.ini和mysite.conf
1.找到nginx配置文件目录
nginx -t # 配置文件目录 nginx: the configuration file /usr/local/etc/nginx/nginx.conf syntax is ok nginx: configuration file /usr/local/etc/nginx/nginx.conf test is successful
工程目录为/Users/dabao/uwsgi/mysite。将/usr/local/etc/nginx/mime.types文件拷贝到项目根目录下新建mime.types;
在自己的工程目录下建立mysite.conf文件,并将nginx默认配置文件nginx.conf内容复制到mysite.conf中,并将server部分替换为下面内容:
server {
# 监听的端口号和ip地址 listen 80; server_name localhost; charset utf-8;
# 访问日志 access_log /Users/dabao/uwsgi/mysite/nginx_access.log;
# 错误日志 error_log /Users/dabao/uwsgi/mysite/nginx_error.log; client_max_body_size 75M; # 设置访问/static/和/media/时静态文件路径 location /static { alias /Users/dabao/uwsgi/mysite/static; } location /media { alias /Users/dabao/uwsgi/mysite/media; } # 设置访问根目录时的路径 location / { include /usr/local/etc/nginx/uwsgi_params; uwsgi_pass 127.0.0.1:9898; } }
2.在django工程目录下新建uwsgi.ini文件
[uwsgi] socket = 127.0.0.1:9898
# 工程目录
chdir=/Users/dabao/uwsgi/mysite/
# wsgi.py文件
module=mysite.wsgi master = true
# 线程和进程数 processes=2 threads=2 max-requests=2000 chmod-socket=664 vacuum=true
# log日志 daemonize = /Users/dabao/uwsgi/mysite/uwsgi.log
# 进程状态
stats=%(chdir)/uwsgi.status
# 记录pid号
pidfile=%(chdir)/uwsgi.pid
# the virtualenv (full path)
# home = /path/to/virtualenv
3.在工程目录下启动uWSGI,要使用sudo,不然可能会报错。
sudo uwsgi --ini uwsgi.ini
[uWSGI] getting INI configuration from uwsgi.ini
如果显示如上结果表示启动成功,如果要停止服务可以使用下面命令,uwsgi.pid会记录当前运行的master进程的pid:
sudo uwsgi --stop uwsgi.pid
4.nginx使用django目录下的配置文件启动
# 启动
nginx -c /Users/dabao/uwsgi/mysite/mysite.conf
# 停止
nginx -s stop
# 重启
nginx -s reload
客户端访问
在/Users/dabao/uwsgi/mysite/static/中放入图片default.jpg
浏览器输入localhost/static/default.jpg,访问静态文件:
输入localhost/index/,访问动态数据:
uWSGI+Django+nginx的简单的部署过程成功啦。