Nginx+Uwsgi+Vue+Django服务器配置
一:背景
项目是前后端分离开发,开发环境是前端起一个服务,后端起一个服务;在部署到服务器时,后端服务使用uwsgi,具体是该请求后端接口还是该访问前端自定义路由,在nginx中做配置
二:Nginx配置
upstream myproject_pool{
server unix:/tmp/myproject.sock;
}
server {
listen 80;
server_name 192.168.1.10;
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.0;
gzip_comp_level 2;
gzip_types text/plain application/x-javascript text/css application/xml;
gzip_vary on;
client_max_body_size 300m;
# 后端接口转发
location /api {
uwsgi_connect_timeout 3000;
uwsgi_send_timeout 3000;
uwsgi_read_timeout 3000;
uwsgi_param Host $host;
uwsgi_param X-Real-IP $remote_addr;
uwsgi_param X-Forwarded-For $proxy_add_x_forwarded_for;
uwsgi_param X-Forwarded-Proto $http_x_forwarded_proto;
include uwsgi_params;
uwsgi_pass myproject_pool;
}
# 前端vue转发
location / {
try_files $uri $uri/ @router;
index index.html;
}
root /var/www/myproject/html/dist; # 注意此项,前端开发完成后,会做打包处理,此文件夹为打包后的文件夹
index login.html;
location @router {
rewrite ^.*$ /index.html last;
}
}
三:Uwsgi
[uwsgi]
socket = /tmp/myproject.sock
pythonpath = /var/www/myproject
pythonpath = /var/www/myproject/myproject
pidfile2 = /tmp/myproject.pid
master = True
processes = 4
# uid=root
# gid=root
plugin = python
# daemonize = /data/log/myproject.log
logto = /data/log/myproject.log
module = wsgi:application
四:Django
需要说明的一点是,django settings.py配置文件中不需要做静态文件配置,不需要做静态文件收集。
五:启动服务
uwsgi配置文件放在/etc/uwsgi/apps-enables/文件夹下
nginx配置文件放在/etc/nginx/sites-enables/文件夹下
启动uwsgi,启动nginx
sudo service nginx start
sudo service uwsgi start