python django 项目部署:centos 7 +Django + uwsgi + nginx 部署
为了部署自己的一个项目,搞了3天,真的是各种问题,下次再弄个docker 部署吧,这个真的是麻烦。
我的项目目录结构
uwsgi:部署 web_app
nginx:反向代理、静态文件服务器
准备工作:
1、确认远程主机的ip地址 2、确定远程主机安装完成mysql 3、安装python3 4、安装虚拟环境 5、安装项目本是需要的第三份包 6、上传项目至服务器【使用软件xshell,xftp 进行服务器远程及,文件拷贝】简单。这里不做介绍
7、配置uwsgi
8、配置nginx
9、运行
1、安装Python3
链接:https://www.cnblogs.com/sunjinchao/p/13307026.html
2、安装虚拟环境
https://www.cnblogs.com/sunjinchao/p/13320891.html
3、进入虚拟环境,安装项目所需的包【第一次部署项目比较吃力】 hzt_env 虚拟环境名
workon hzt_env
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
pip3 install django==2.2.12
pip3 install pymysql
pip3 install pillow
.........
等等,看自己的项目情况安装即可
4、安装uwsgi
pip3 install uwsgi #安装
#ln -s /usr/local/python356/bin/uwsgi /usr/local/bin/uwsgi #建立软链接
5、测试wsgi是否可用
# uwsgi --http 0.0.0.0:80 --chdir /data/www/HZT/ --wsgi-file HztBack/wsgi.py --master --processes 4 --threads 2 不带静态文件 使用浏览器访问服务器地址,即可访问 chdir :项目的根目录 wsgi-file: wsgi.py的目录 # uwsgi --http 0.0.0.0:80 --chdir /data/www/HZT/ --wsgi-file HztBack/wsgi.py --static-map=/static=static --static-map=/static=media --master --processes 4 --threads 2 带静态文件 ~
正常情况:使用浏览器访问服务器地址,即可访问
6、通过配置wsgi的配置文件进行启动
(1)在项目的根目录新建uwsg.ini 及 新建 uwsgi_conf 文件目录
(2)uwsgi_conf 文件目录 是为了存放 uwsg的日志等文件
(3)uwsgi.ini文件内容
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
# uwsig使用配置文件启动 [uwsgi] # 项目目录 chdir=/data/www/HZT # 指定项目的application module=HztBack.wsgi:application # 进程个数 processes=4 threads=2 workers=5 pidfile=/data/www/HZT/uwsgi_conf/uwsgi.pid # 指定IP端口 http=0.0.0.0:8000 # 指定静态文件 for =static media #static-map=/static=%(chdir)/%(_) endfor = # 启动uwsgi的用户名和用户组 uid=root gid=root # 启用主进程 master=true # 自动移除unix Socket和pid文件当服务停止的时候 vacuum=true # 序列化接受的内容,如果可能的话 thunder-lock=true # 启用线程 enable-threads=true # 设置自中断时间 harakiri=30 # 设置缓冲 post-buffering=4096 # 设置日志目录 daemonize=%(chdir)/uwsgi_conf/uwsgi.log
7、当前目录下,启动uwsgi是否正常
uwsgi --ini uwsgi.ini
备注:可以在uwsgi_conf目录下,查看是否有uwsgi.pid 此文件,如果有代表uwsgi已经运行
可以在前端打开浏览器进行测试
8、安装nginx
https://www.cnblogs.com/sunjinchao/p/13331334.html
9、编辑nginx.conf 文件
(1)修改Nginx.conf 文件 再最后一行加上 代码方便导入
include /usr/local/nginx/conf/*.config;
备注:这样做的好处就是,每个应用你都可以直接导入,不用修改本身的nginx.conf个文件,方便管理。
(2)新建web应用 config文件 填写以下代码(我自己新建了个,hzt.config)
server { listen 80; server_name 10.168.1.104; location / { include uwsgi_params; uwsgi_pass 127.0.0.1:8000; } location /static { alias /data/www/HZT/static; } # 如果写成/media/,nginx无法找到项目媒体文件路径 location /media { alias /data/www/HZT/media; } }
10,再次修改uwsgi.ini文件。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
# uwsig使用配置文件启动 [uwsgi] # 项目目录 chdir=/data/www/HZT # 指定项目的application module=HztBack.wsgi:application # 指定sock的文件路径 #socket=/data/www/HZT/uwsgi_conf/uwsgi.socki socket=127.0.0.1:8000 # 进程个数 processes=4 threads=2 workers=5 pidfile=/data/www/HZT/uwsgi_conf/uwsgi.pid # 指定IP端口 #http=0.0.0.0:9999 # 指定静态文件 for =static media #static-map=/static=%(chdir)/%(_) endfor = # 启动uwsgi的用户名和用户组 uid=root gid=root # 启用主进程 master=true # 自动移除unix Socket和pid文件当服务停止的时候 vacuum=true # 序列化接受的内容,如果可能的话 thunder-lock=true # 启用线程 enable-threads=true # 设置自中断时间 harakiri=30 # 设置缓冲 post-buffering=4096 # 设置日志目录 daemonize=%(chdir)/uwsgi_conf/uwsgi.log
11、启动Nginx.测试
查看进程
结果成功!!!!!!
c