nginx+uWSGI+django+virtualenv+supervisor发布web项目

在windows本地 通过

 pip3 freeze > requirements.txt
 就能将python3解释器中所有的模块导出到这个文件中

将这个 requirements.txt  文件传输到服务器上,进行安装,就可以自动解决所有模块问题

pip3 install -r requirements.txt  

进入虚拟环境

workon nginx_crm

下载uwsgi

pip3 install uwsgi 

使用uwsgi命令启动django项目

是在项目的第一层
uwsgi支持热加载的启动方式命令如下

uwsgi --http :8000 --module mysite.wsgi --py-autoreload=1 

uwsgi --http :8080 --module Crm_Project.wsgi
    --http指定http协议启动在 8080端口
    --module 找到项目第二层的目录,里面的wsgi.py文件

django的静态文件nginx配置

在项目setting.py文件中修改

STAIC_ROOT='/opt/crmstatic'
STATIC_URL = '/static/'
STATICFILES_DIRS=[
    os.path.join(BASE_DIR,"static"),
]

 收集所有你使用的静态文件保存到STATIC_ROOT

python3 manage.py collectstatic

配置nginx结合uWSGI

配置nginx.conf

vim /opt/s18tngx/conf/nginx.conf

修改内容

  server {
        listen       80;
        server_name  120.79.237.52;
             
        #charset koi8-r;

        #access_log  logs/host.access.log  main;
        #access_log  "pipe:rollback logs/host.access_log interval=1d baknum=7 maxsize=2G"  main;
    
        location / {
            uwsgi_pass 0.0.0.0:8000;
            include uwsgi_params;
        }
    
location /static{
  alias /opt/static;
}

在项目的第一层加配置 uwsgi.ini

[uwsgi]
# Django-related settings
# the base directory (full path)
#填写项目的绝对路径(第一层路径)
chdir           = /opt/Crm_Project
# Django's wsgi file
#填写crm第二层目录下的wsgi.py文件的路径
module          = Crm_Project.wsgi
# the virtualenv (full path)
#填写虚拟环境的绝对路径
home            = /root/Envs/mycrm
# process-related settings
# master
master          = true
# maximum number of worker processes
#基于uwsgi的多进程,根据cpu来优化 
processes       = 4
# the socket (use the full path to be safe

#如果你用了nginx反向代理,就填写socket参数
socket          = 0.0.0.0:8000

#如果你没用nginx,想直接通过浏览器测试后端,使用http 
#http = 0.0.0.0:8000

# ... with appropriate permissions - may be needed
# chmod-socket    = 664
# clear environment on exit
vacuum          = true

如果你结合了nginx反向代理,必须用--socket参数

uwsgi --socket :8000 --module Crm_Project.wsgi

方式启动代码

uwsgi --ini  uwsgi.ini

安装easy_install
    pip3是python3的软件包管理工具
    easy_install 是python2的软件包管理工具

yum install python-setuptools

安装supervisor

easy_install supervisor

创建supervisor的配置文件

 echo_supervisord_conf >  /etc/supervisor.conf 

修改supervisor的配置文件,添加启动uwsgi的命令
    supervisor其实就是帮咱们执行了,需要手动执行的命令而已

vim /etc/supervisor.conf

    写入如下内容,在最底部写

[program:s18crm]
command=/root/Envs/mycrm/bin/uwsgi  --ini /opt/Crm_Project/uwsgi.ini
stopasgroup=true
killasgroup=true

测试用supervisor启动uwsgi ,注意要确保此时uwsgi已经退出

supervisord -c  /etc/supervisor.conf   #这是启动supervisor服务端命令

supervisorctl -c /etc/supervisor.conf     #这是supervisor客户端管理命令

supervisor的命令

status s18crm #查看状态
start s18crm  #启动任务
stop  s18crm #停止任务
    

 笔记

crm部署 nginx + uwsgi + django + mysql 

crm是一个单体的应用,前端代码和后端代码,融合在了一起

linux默认终端有7个 
按住ctrl + alt 从 f1-f7是7个终端   f1是图形化终端,f2-f7是黑屏
我们用的是xshell远程连接,连接到linux,可以有N个终端

1.先去启动后端,uwsgi + django 
2.先准备项目  xftp  lrzsz  
3.先准备虚拟环境
4.安装uwsgi 
5.用uwsgi启动crm项目
    -一是命令 +  参数   (不建议使用,请用配置文件 uwsgi.ini)
        uwsgi --http  :8000 --module  crm.wsgi  
        解释:--http  就是直接可以通过浏览器访问,不通过nginx
        uwsgi --socket :8000 --module crm.wsgi 
        解释:  --socket 是必须用nginx去反向代理,才能找到,浏览器直接访问找不到

    正确的方式:
        二,用配置文件uwsgi.ini 
                [uwsgi]
                # Django-related settings
                # the base directory (full path)
                #填写项目的绝对路径(第一层路径)
                chdir           = /opt/Crm_Project
                # Django's wsgi file
                #填写crm第二层目录下的wsgi.py文件的路径
                module          = Crm_Project.wsgi
                # the virtualenv (full path)
                #填写虚拟环境的绝对路径
                home            = /root/Envs/nginx_crm

                # process-related settings
                # master
                master          = true
                # maximum number of worker processes
                #基于uwsgi的多进程,根据cpu来优化 
                processes       = 4
                # the socket (use the full path to be safe

                #如果你用了nginx反向代理,就填写socket参数
                #如果你用了nginx反向代理,就填写socket参数
                #如果你用了nginx反向代理,就填写socket参数
                #如果你用了nginx反向代理,就填写socket参数
                #如果你用了nginx反向代理,就填写socket参数
                socket          = 0.0.0.0:8000

                #如果你没用nginx,想直接通过浏览器测试后端,使用http 
                #http = 0.0.0.0:8000

                # ... with appropriate permissions - may be needed
                # chmod-socket    = 664
                # clear environment on exit
                vacuum          = true
                
        三,通过配置文件,启动crm,启动后端!!!!
        uwsgi --ini uwsgi.ini 
        
        四。关闭防火强
        iptables -F  #清空规则
        systemctl stop firewalld  #关闭防火墙服务
        systemctl disable firewalld  #禁止开机自启
 
        五,收集crm的静态文件
        修改settings.py 写入
        STATIC_ROOT= '/opt/crmstatic'

        六:用命令收集静态文件
        python3 manage.py collectstatic

2.准备数据库,启动
#保证mariadb已经安装了  
yum install mariadb-server mariadb -y 

systemctl start mariadb   #启动数据库



3.准备nginx,进行反向代理
    1.安装nginx 
    2.修改nginx的配置文件  nginx.conf 
    3.修改代码如下,截取的片段代码如下,参照着修改
    
upstream  mycrm {
    server  0.0.0.0:8000;
}
    #nginx的虚拟主机参数
    server {
        #第一个虚拟主机,监听的80端口
        listen       80;
        #填写的是你自定义的域名 或者服务器的ip地址,或者写locathost
        server_name  192.168.226.128;

        #当用户访问 www.s18dnf.com的时候,就进入这个虚拟主机
        location / {
        uwsgi_pass  http://mycrm;
        include uwsgi_params;
        }

        #这个location是解决crm的静态文件的问题的
        #只要请求url是192.168.226.128/static/admin/admin.css
location /static  {
#alias参数 就是将/static转化为/opt/crmstatic ,也就找到了我们所有的静态文件
alias /opt/crmstatic;
}


4.还差一个supervisor 
    1.下载安装
    2.修改supervisor的配置文件
    写入任务
    3.这里有个坑
    
    我们用supervisor,其实就是帮咱们执行了一下启动uwsgi的命令而已
    
    4.注意后台不能启动过uwsgi
    
View Code

 

posted @ 2019-04-02 19:53  等待の喵  阅读(163)  评论(0编辑  收藏  举报