欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Django3+uwsgi+nginx前后端分离部署(Ubuntu18.04)

程序员文章站 2022-06-13 17:00:51
...

准备工作:
系统:Ubuntu18.0.4
其他:git、nignx、uwsgi、python3.6
一、python环境部署(python3.6 ubuntu18.0.4系统可能自带,安装不做过多解释):
二、uwsgi安装:

        注:python3.6以上版本下载uwsgi会报错,已测试过python3.8

pip install uwsgi

三、git安装,百度就行,一般Ubuntu18.04系统自带,然后pull下项目;

sudo apt-get install git


四、uwsgi文件配置:(注:uwsgi.ini文件一般放在项目根目录):

[uwsgi]
# 项目目录:绝对路径
chdir=/opt/pythonproject/project
#此路径为相对路径,注意是在chemaid/chemaid/wsgi.py
wsgi-file=project/wsgi.py
processes=4
http= :8000
vacuum=true
# 每个进程的线程个数
threads=2
# 是否开启管理员进程,该进程用于管理其它进程,不与用户交互,如果需要,设为true
master=true
# 服务的pid记录文件,不需要自己动手新建
pidfile=cmp.pid
# 服务的目志文件位置,不需要自己动手新建
daemonize=cmp.log

五、在部署下去之前,先启动项目检查项目是否正常。

        uwsgi命令启动:

#启动项目
uwsgi --ini [uwsgi.ini] #ini文件名
#查看端口
sudo netstat -tlpn
#关闭项目
uwsgi stop uwsgi.pid

六、nginx文件配置:

# Default server configuration
server {
  #SSL 访问端口号为 443
    listen 443 ssl;
    #填写绑定证书的域名
    server_name www.xxx.xxx;
    #证书文件名称地址
    ssl_certificate  /opt/html/NginxSSL/1_www.xxx.xxx.crt;
    #私钥文件名称地址
    ssl_certificate_key /opt/html/NginxSSL/2_www.xxx.xxx.key;
    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;  
  
  #server_name _;#不需要域名的默认配置
    #网站主页路径。此路径仅供参考,具体请您按照实际目录操作。  
    root /opt/html;
    # Add index.php to the list if you are using PHP
    index index.html index.htm index.nginx-debian.html;
    #nginx默认配置
    location / {
        # First attempt to serve request as file, then
        # as directory, then fall back to displaying a 404.
        try_files $uri $uri/ =404;
    }
  #后端接口转发
    location ^~/app/{
        #include /etc/nginx/uwsgi_params;
        add_header Access-Control-Allow-Origin *;
        #uwsgi_pass 127.0.0.1:8000/;
        proxy_pass  http://127.0.0.1:8000/; #端口后面接"/"(8000/;),表示后端路由不接app/,后端不需要+app
    }
  #后端接口转发
    location ^~/admin/{
    add_header Access-Control-Allow-Origin *;
    proxy_pass  http://127.0.0.1:8000;#端口后面不接"/"(8000;),表示后端admin接口需要+admin打头,是后端真实存在的;
    }
    #后端静态文件路径指定
    location ^~/static/ {
    alias /opt/pythonproject/object/static/;#项目静态文件绝对路径
    expires 30d;
  }
}
#域名配置
server {
    listen 80;
    #填写绑定证书的域名
    server_name www.xx.xxx; 
    #把http的域名请求转成https
    return 301 https://$host$request_uri; 
}

7、nginx命令:

#重新加载配置
sudo nginx -s reload

另外文章转载请标明源地址,谢谢!