Django nginx + uwsgi部署,Django + Vue前后端分离内网linux部署
网上写的七七八八的,我这里做一个总结
1.Django项目完成,配置python环境和uwsgi
安装好所有的安装包, 可以使用requirement.txt 批量安装
安装uwsgi环境,有网使用
方法1:
pip install uwsgi
可能报错:报错可以使用conda安装
conda install uwsgi
方法二:
使用压缩包安装:
去镜像源或者pypi下载压缩包。
下载后解压
解压后进入解压目录中
python setup.py install
如果出现报错编译错误
,编译python.h错误的话,查看python-dev
安装合适版本的dev,我这里是38的。
yum install python38-devel
不同环境也有可能是yum install python-dev
运行python manage.py runserver 0.0.0.0:8000
本地访问127.0.0.1:8000查看是否可以运行
远程访问ip地址:8000,如果失败的话注意防火墙端口是否关闭
进入django项目目录中
新建uwsgi.ini文件进行编写,将下列注释删除,否则可能运行报错
内容:
[uwsgi]
# Django-related settings
#socket = 你的项目位置/uwsgi.sock
http= :9000 #uwsgi访问端口,设置你自己想要的端口
socket=127.0.0.1:8001 #uwsgi和nginx交互端口
chdir=你的项目位置
static-map=/static/=静态资源位置,一般是项目位置/static
http-timeout=172800 #如果你的前后端时间交互较长,设置一下响应时间,如果没有限制,可以注释掉。
socket-timeout=172800 #同上述,这里我设置了48小时是因为我程序后台会一直跑。
module=项目名.wsgi
uid=root #root账户管理进程
gid=root
master=true
processes=8
vacuum=true
daemonize=/var/log/web_demo.log #日志存放位置
thunder-lock=true
enable-threads=true
在项目目录里启动uwsgi
uwsgi --ini uwsgi.ini
查看uwsgi运行状态
ps aux | grep uwsgi
查看9000端口, 8001端口
netstat -nap | grep 9000
如果中间问题出错,请检查配置文件是否出错,用kill -9 kid杀死进程,重启uwsgi监听端口
实在不会就 killall -s INT uwsgi
如果配置好了应该可以在9000界面访问到你的地址
2.安装nginx
有网命令,无网下载安装包
yum install nginx
进入nginx配置界面
一般目录在etc/nginx/下
不同环境版本配置文件不一样,我这里是nginx.conf,含有目录conf.d
配置环境
方法一:直接修改nginx.conf,在下面直接添加代码
方法二:在conf.新建配置自己的文件如demo.conf,加代码内容
代码内容
server{
listen 8002;#访问端口,配置80的话配置失败会直接进入nginx界面,不同于uwsgi端口
server_name ip地址或者域名
access_log /var/log/nginx/access.log main;
charset utf-8;
gzip on;
gzip_types text/plain application/x-javascript text/css text/javascript application/x-httpd-php application/json text/json text/json image/jpeg image/gif image/png application/octet-stream;
error_page 404 /404.html
error_page 500 502 503 504 /50x.html;
location /{
include uwsgi_params;
uwsgi_connect_timeout 30;
uwsgi_pass 0.0.0.0:8081; #uwsgi和nginx交互端口,和上面uwsgi保持一致
}
location /static/{
expired 30d
autoindex on;
add_header Cache-Control private;
alias 静态资源位置;
}
}
启动nginx
/etc/init.d/nginx start
查看nginx运行状态
systemctl status nginx.servic
查看nginx配置文件是否是success
nginx -t -c /etc/nginx/nginx.conf
如果nginx端口被占用,启动其他端口或者杀死端口,和uwsgi查看端口命令一样
3.vue 打包
vue build
将访问地址改成后端地址,我这里改成9000端口
打包后的文件dist应该包括
mock
static
index.html
将index.html 放入templates
将static 放入django static中
注意一定要在django中配置index路由,否则可能找不到
from djangoz.views.generic import TemplateView
path('', TemplateView.as_view(template_name='index.html'), name='index'),