uWSGI+Django+nginx部署过程

原文链接: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的简单的部署过程成功啦。

原文地址:https://www.cnblogs.com/bzsszhao/p/12560130.html