nginx+uwsgi+Django部署线上环境

环境安装

Python点这里

nginx点这里

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
homs_uwsgi.ini

创建好后,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
    }
}
uwsgi.conf

问题

1、如果出现无法加载css、js等静态文件将/etc/nginx/nginx.con中的user修改为root即可。

更新中...............

原文地址:https://www.cnblogs.com/Dream-huang/p/10486654.html