**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 exit
vacuum = 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 :查看任务状态

 

 

 

 

 

 

posted @ 2020-01-02 21:24  凯帅  阅读(244)  评论(0编辑  收藏  举报