Django项目部署

crm项目部署流程笔记

1.创建一个新的虚拟环境,用于运行crm新业务

mkvirtualenv crm

2.解决代码的模块依赖

pip3 freeze >  requirements.txt 

pip3 install -i https://pypi.douban.com/simple  -r requirements.txt 

3.安装uwsgi工具,启动crm

pip3 install -i https://pypi.douban.com/simple uwsgi 
  • 查看uwsgi的版本:

    uwsgi --version
    
    (crm) [root@zfy1 code]# uwsgi --version
    2.0.18
    

4.使用uwsgi的配置文件,启动crm项目

  • 手动创建uwsgi的配置文件
# 首先是创建名为 uwsgi.ini 的配置文件
touch uwsgi.ini  
  • 下边是文件配置内容:
[uwsgi]
# 填写项目的完整绝对路径,第一层
chdir = /code/crm_zfy

#指定django的wsgi文件路径,填写相对路径
module = crm_zfy.wsgi 

#填写虚拟环境的绝对路径
home = /root/Envs/crm

master = true

#定义程序的多进程数量的,以cpu核数的2倍+1数量填写   2n+1 数量 
processes = 9

#把uwsgi启动在socket协议上,的8000端口
socket = 0.0.0.0:8000
    
#指定http协议的话,用户是可以直接访问到的,不安全的,因此使用socket协议
#http =0.0.0.0:8000
vacuum  = true

5.启动uwsgi的命令

uwsgi --ini  uwsgi.ini    # 指定配置文件启动 

6.配置nginx,进行静态文件解析,以及反向代理crm的动态请求

  server {
        listen       80;   
        server_name  _;
        #只要在server{}标签中看到root关键字,说明这个虚拟主机是一个静态文件服务器
        #将www.s24pythoncrm.com 这个域名所有的请求,都分发给uwsgi
        location / {
        uwsgi_pass  127.0.0.1:8000;
        include uwsgi_params;
        }
    }

重新加载nginx,让配置生效

nginx -s reload        # 平滑启动

7.把ip做一个本地的hosts解析,添加一个假的域名(线上部署不需要执行,只限在虚拟机上练习使用)

# 找到本地机器的hosts文件C:WindowsSystem32driversetc
192.168.16.85  www.s24pythoncrm.com  

8.收集crm所有的静态文件,交给nginx去处理

# 修改django的settings.py配置文件,添加如下配置
STATIC_URL = '/static/'
STATIC_ROOT='/opt/s24crmstatic'  

# 通过命令收集django所有的静态文件
python3  manage.py collectstatic

9.配置nginx找到crm的静态文件

# 修改配置如下形式
# 配置nginx找到crm所有的静态文件
# 只要是以/static开头的请求,就走如下配置
location  /static {
    alias  /opt/s24crmstatic/;
}

10.重启nginx,查看crm项目

systemctl restart nginx

11.通过supervisor进程管理工具,管理uwsgi的后台,这个工具,其实就是在帮我们执行启动命令

# 需要下载安装即可 
yum install supervisor

12.配置supervisor的配置文件

  • 通过命令生成supervisor的配置文件
echo_supervisord_conf > /etc/supervisord.conf
# 修改配置文件,加载crm项目
[program:s24crm]
command=/root/Envs/s24crm/bin/uwsgi --ini  /s24fuxi/IGnb/uwsgi.ini     ; 程序启动命令
autostart=true       ; 在supervisord启动的时候也自动启动
stopasgroup=true     ;默认为false,进程被杀死时,是否向这个进程组发送stop信号,包括子进程
killasgroup=true     ;默认为false,向进程组发送kill信号,包括子进程

13.启动supervisord服务端

supervisord -c  /etc/supervisord.conf 

# 进入supervisor的管理交互式终端,管理任务
[root@s24_linux css]# supervisorctl -c /etc/supervisord.conf 
s24crm                           RUNNING   pid 39763, uptime 0:00:06

14.supervisor的管理命令

status #查看状态
start all #启动所有任务
restart all #重启所有任务
原文地址:https://www.cnblogs.com/zhufanyu/p/12075203.html