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
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

 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文件。

# 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

posted on 2020-07-17 17:32  超nmmmmm  阅读(221)  评论(0编辑  收藏  举报

导航