**crm项目部署**

crm项目部署

1.nginx + uwsgi + django+虚拟环境+supervisor+mysql

2.django的启动方式 python3 manage.py runserver 为什么不能在生产环境用?4

django只是一个web逻辑框架,它通过python3 manage.py runserver 命令启动socket服务端

是借助python内置的wsgi框架,wsgiref框架实现的

他是一个单机模块,单进程模块,性能很低

因此在线上需要借助通过c语言编写的uwsgi这个web服务器软件,启动django

3.在进行uwsgi启动django的时候,是需要找到wsgi.pyzheg 文件模块

4.为什么要用nginx和uwsgi?

nginx 可以解决uwsgi的静态文件问题,并且支持高并发,还能限流,保障后台服务器安全等等

为什么要用uwsgi

因为uwsgi支持多进程 多线程的方式,性能很高,启动django性能更好,但是uwsgi不解析django的静态文件

我们以后会收集所有的django项目静态文件,丢给nginx取处理

5.准备crm代码

6.准备新的虚拟环境启动crm,使用virtualenvwrapper创建新的虚拟环境

1.复制环境中的模块数据:pip3 freeze > requirements.txt

2.在opt中创建虚拟环境:mkvirtualenv nginx_crm

3.创建crm所需要的依赖:pip3 install -i https://pypi.douban.com/simple -r requirements.txt

7.使用uwsgi启动crm项目

确保进入虚拟环境,然后安装uwsgi

1.进入虚拟环境:workon nginx_crm

2.安装uwsgi:pip3 install uwsgi

8.使用uwsgi命令启动django项目

uwsgi --http :8088 --module CRM.wsgi

--http指定http协议启动在 8088端口

--module 找到项目第二层的目录,里面的wsgi.py文件

如果你想启动一个http页面,提供测试访问,就用--http参数

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

uwsgi --socket :8000 --module CRM.wsgi --py-autoreload=1

由于参数过多,这里引入配置文件的概念 叫做uwsgi.ini my.ini nginx.conf

启动crm的配置文件如下 uwsgi.ini内容如下

[uwsgi]# Django-related settings# the base directory (full path)# 填写项目的绝对路径(第一层路径)chdir   =/opt/CRM1# Django‘s wsgi file# 填写crm第二层目录下的wsgi.py文件的路径module  =CRM.wsgi# 填写虚拟环境的绝对路径   cdvirtualenv(进入当前环境的绝对路径)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参数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 exitvacuum = true

此时通过:uwsgi --ini uwsgi.ini 方式启动代码

9.uwsgi支持热加载的启动方式:

uwsgi --http :8088 --module CRM.wsgi --py-autoreload=1 或

uwsgi --socket :8088 --module CRM.wsgi --py-autoreload=1

此时后端已完毕

10.配置crm收集所有的crm静态文件

编辑项目的setting.py写入如下参数:

STATIC_ROOT = ‘/opt/crmstatic‘

11.执行命令,收集crm所有静态文件

python3 manage.py collectstatic

12.配置nginx,一是支持反向代理,二是支持静态文件加载

修改nginx.conf

   location / {        # 反向代理       uwsgi_pass 0.0.0.0:8000;       include uwsgi_params;    }    #这个location是解决crm静态文件的问题    location /static {    #alias参数 就是将/static转化为/opt/crmstatic    alias /opt/crmstatic;

}

总结:1.后台django启动用uwsgi 2.nginx做反向代理,并且加载静态资源

配置supervisro工具

注意退出虚拟环境

1.安装easy_install

yum install python-setuptools

2.安装supervisor

easy_install supervisor

3.创建superisor的配置文件

echo_supervisord_conf > /etc/supervisord.conf

4.修改perivisor的配置文件,添加启动uwsgi的命令

supervisor其实就是帮咋们执行,需要手动执行命令

1.修改配置文件:vim /etc/supervisord.conf

2.在最底部添加代码如下:

#which uwsgi 查看虚拟环境启动uwsgi ,绝对路径启动uwsgi.ini(pwd)

[program:CRM1] # 任务名字

command=/root/Envs/nginx_crm/bin/uwsgi --ini /opt/CRM1/uwsgi.ini

stopasgroup=true ? killasgroup=true

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

supervisord -c /etc/supervisord.conf    #启动supervisor服务端命令supervisorctl -c /etc/supervisord.conf    # supervisor客户端管理命令

6.学习supervisor的命令

start CRM1 :启动任务

stop CRM1 :关闭所有任务

status CRM1 :查看任务状态

start all :开启所有任务

stop all :关闭所有任务

status :查看任务状态

 

相关推荐