nginx+uwsgi+Django部署线上环境
环境安装
uwsgi安装配置
pip3 install uwsgi # 不建立软连接可能会出现找不到命令 ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi3
项目流程
在三面上个都安装好后,你得确保一下几点:
- Django项目能正常运行。
- 使用uwsgi能启动你的Django项目,并能正常访问。
- nginx能访问默认首页。
请求步骤:
1、首先客户端请求服务资源, 2、nginx作为直接对外的服务接口,接收到客户端发送过来的http请求,会解包、分析, 3、如果是静态文件请求就根据nginx配置的静态文件目录,返回请求的资源, 4、如果是动态的请求,nginx就通过配置文件,将请求传递给uWSGI;uWSGI 将接收到的包进行处理,并转发给wsgi, 5、wsgi根据请求调用django工程的某个文件或函数,处理完后django将返回值交给wsgi, 6、wsgi将返回值进行打包,转发给uWSGI, 7、uWSGI接收后转发给nginx,nginx最终将返回值返回给客户端(如浏览器)。 # 注:不同的组件之间传递信息涉及到数据格式和协议的转换
配置文件
uwsgi
在Django项目manage.py同级目录创建uwsgi ini启动文件
[uwsgi] # 与nginx通信的端口,必须与nginx一致 socket = :8001 # 项目路径 chdir = /root/HOMS/ wsgi-file = HOMS/wsgi.py # 是否使用主线程 master = true # 进程数 processes = 4 # 线程数 threads = 2 # 后台运行日志保存 daemonize = /root/HOMS/log/uwsgi.log # 日志大小,当大于这个值会进行切分 (Byte) log-maxsize = 5000000 # 当服务器退出的时候自动清理环境 vacuum = true # 排队请求数 可以理解为最高并发量范围是0 - 65000 listen = 60000 # 权限 chmod-socket = 666
创建好后,uwsgi文件启动项目
# ini文件启动 uwsgi3 --ini homs_uwsgi.ini
Nginx
在/etc/nginx/conf.d目录下新建一个uwsgi.conf文件
upstream django { # server unix:///path/to/your/mysite/mysite.sock; # for a file socket server 127.0.0.1:8001; # for a web port socket (we'll use this first) } # configuration of the server server { # the port your site will be served on listen 8181; # the domain name it will serve for server_name localhost; # substitute your machine's IP address or FQDN charset utf-8; # max upload size client_max_body_size 75M; # adjust to taste # Django media # location /media { # alias /path/to/your/mysite/media; # your Django project's media files - amend as required # } location /static { alias /root/HOMS/static/; # your Django project's static files - amend as required } # Finally, send all non-media requests to the Django server. location / { uwsgi_pass django; include uwsgi_params; # the uwsgi_params file you installed } }
问题
1、如果出现无法加载css、js等静态文件将/etc/nginx/nginx.con中的user修改为root即可。
更新中...............
即将秃头的程序员