crm 项目部署流程
· 阅读需 13 分钟
crm 项目部署流程
- 配置 nginx,提供反向代理功能。将 80 端口的请求,转发给 django 的 8000 端口;
- uwsgi + django 启动后端进程,部署在 8000 端口,处理用户的动态逻辑,包括登录、注册、查询等 curd(增删改查)操作
- mariadb(MySQL 数据库),进行数据导出、导入操作
- 虚拟环境的创建
- supervisor 进程管理工具 ,防止 uwsgi 突然崩溃,supervisor 能够自动启动 uwsgi
配置 uwsgi
部署 django 项目使用的命令 python3 manage.py runserver 其实是调用 wsgiref 这个 Python 内置的 wsgi 服务器,性能很低。
wsgi 实际上是运行一个 socket 服务端,便于程序员调试 django 程序,它是单线程,单进程,性能不高。
在 Linux 服务器线上,主流的部署形式是 uwsgi 对 django 进行启动,支持多进程,多线程,以及各种优化。
uwsgi 并发性更好,因为它是 C 写的一个基于 uwsgi 协议运行的高性能 Web 服务器。

服务器中环境比较复杂,为了不影响其他项目的运行,项目部署一般在虚拟的 Python 环境中进行。
因此,首先要配置一个 Python 的虚拟环境。在配置之前,要查看是否安装了 virtualenv:
[root@localhost etc]# which virtualenv/usr/bin/which: no virtualenv in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/etc/python36/bin:/opt/python36/bin)
若出现上面的提示,说明需要先安装:
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple virtualenv
进入想要存放虚拟环境的文件夹,创建虚拟 Python 环境:
[root@localhost etc]# mkdir /opt/venvs[root@localhost etc]# cd /opt/venvs/[root@localhost venvs]# virtualenv --no-site-packages --python=python3 venv_crm[root@localhost venvs]# cd venv_crm/[root@localhost venv_crm]# [root@localhost venv_crm]# source ./bin/activate(venv_crm) [root@localhost venv_crm]#
以后的配置,都会在这个虚拟环境中进行。
虚拟环境激活后,安装 uwsgi 工具:
(venv_crm) [root@localhost venv_crm]# pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple uwsgi
上传 crm 代码
把我们的 crm 项目打包成 zip,在 Xshell 上通过 lrzsz 工具上传至 Linux。

若没有 lrzsz 工具,可能会无法发送,需要先安装这个工具:
yum install lrzsz
若是 mac 用户,可以使用 scp 命令传输。
收到 crm 项目的 zip 压缩文件后,使用 unzip 命令解压缩。当然,要先安装 unzip 工具:
(venv_crm) [root@localhost ~]# yum install unzip -y(venv_crm) [root@localhost ~]# unzip CRM.zip
安装 crm 项目依赖的环境
安装 django
进入 crm 项目第一层文件夹,尝试启动 crm 项目:
(venv_crm) [root@localhost ~]# cd CRM(venv_crm) [root@localhost CRM]# lsapp01 CRM manage.py rbac utils(venv_crm) [root@localhost CRM]# python3 manage.py runserver
运行出错,错误信息为:
ImportError: Couldn't import Django. Are you sure it's installed and available on your PYTHONPATH environment variable? Did you forget to activate a virtual environment?
这是因为虚拟环境中没有 django。兵来将挡水来土掩,安装 django 就是了:
(venv_crm) [root@localhost CRM]# pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple django==1.11.9