为了部署自己的一个项目,搞了3天,真的是各种问题,下次再弄个docker 部署吧,这个真的是麻烦。
我的项目目录结构
uwsgi:部署 web_app
准备工作:
1、确认远程主机的ip地址
2、确定远程主机安装完成mysql
3、安装python3
4、安装虚拟环境
5、安装项目本是需要的第三份包
6、上传项目至服务器【使用软件xshell,xftp 进行服务器远程及,文件拷贝】简单。这里不做介绍
7、配置uwsgi
8、配置nginx
9、运行
1、安装Python3
链接:
2、安装虚拟环境
3、进入虚拟环境,安装项目所需的包【第一次部署项目比较吃力】 hzt_env 虚拟环境名
workon hzt_env
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文件内容
# 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
uwsgi.ini
7、当前目录下,启动uwsgi是否正常
uwsgi --ini uwsgi.ini
备注:可以在uwsgi_conf目录下,查看是否有uwsgi.pid 此文件,如果有代表uwsgi已经运行
可以在前端打开浏览器进行测试
8、安装nginx
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文件。
# 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
wsgi.ini
11、启动Nginx.测试
查看进程
结果成功!!!!!!
c