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
另外文章转载请标明源地址,谢谢!