项目发布配置手册
准备环境
1.准备python环境,准备虚拟环境,激活了虚拟环境
python3安装和virtualenv安装配置连接
2.安装django模块(此时的操作都是在你安装的venv这个虚拟环境下了)
pip3 install django==1.11.11 #下载你需要的版本
3.项目启动检测
python manage.py runserver 127.0.0.1:8000 # 报错 缺少pymysql模块
#安装pymysql
pip3 install pymysql
4.继续启动报错 No module named 'multiselectfield'
pip3 install django-multiselectfield
5.解决项目sql连接问题,修改s项目中的ettings文件
1.启动linux的数据库,创建对应的数据库,密码设置等等 create database nb_crm; 2.更改settings.py DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'nb_crm', #数据库名 'HOST': '127.0.0.1', #这里服务器的ip地址 'PORT': 3306, #端口 'USER': 'root', #用户名 'PASSWORD': 'root1234', #用户密码 } } 3.更改允许主机 ALLOWED_HOSTS = ['*'] 4.线上关闭debug,部署先用True,记着修改成False debug=True
uwsgi启动django
1.安装uwsgi
pip3 install -i https://pypi.douban.com/simple uwsgi
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
正常流程可以pass 2.通过uwsgi命令启动python应用 uwsgi --http 0.0.0.0:8888 --wsgi-file test1.py --http 指明是http协议 --socket 启动一个socket 链接 --wsgi-file 指明一个python应用文件 3.通过uwsgi启动django项目(问题是,uwsgi不处理static静态文件的配置) uwsgi --http :8888 --module Nb_crm.wsgi 4.uwsgi可以热加载项目 uwsgi --http :9999 --module mycrm.wsgi --py-autoreload=1 --py-autoreload是告诉uwsgi自动重启加载django项目
上线部署,直接走第五步
5.通过uwsgi的配置文件启动项目
1.手动创建uwsgi.ini文件 touch uwsgi.ini 2.写入如下配置 [uwsgi] #项目的绝对路径,定位到项目的第一层 chdir = /opt/NB_crm #指明项目的wsgi文件路径 module = NB_crm.wsgi #指明你的虚拟解释器的第一层路径 home = /root/Envs/nbcrm #指明通过uwsgi,启动多少个进程 processes = 1 #非常重要 #非常重要 #非常重要 #如果你已经配置了nginx(启动了nginx服务,配置了uwsgi_pass),请用这个socket连接 socket = 0.0.0.0:8000 #如果你没用nginx,想通过uwsgi直接启动web服务,指明http协议 #http = 0.0.0.0:9999 #在退出uwsgi环境后,清空环境变量 vacuum = true
6.通过配置文件启动NB_crm
注意uwsgi不会处理静态文件,如果有,也是浏览器的缓存!!!
uwsgi --ini uwsgi.ini
7.配置django的settings.py,收集所有项目所需的静态文件
1.#通过命令,收集整个项目所有的静态文件,放入到/opt/static/ STATIC_ROOT='/opt/static/' 2.执行命令 python3 manage.py collectstatic 3.此时NB_crm的所有静态文件,都跑到/opt/static/底下了 ls /opt/static/ # admin css imgs js plugins
8.配置nginx
1.配置一个网站入口,当用户访问192.168.12.96:80 这个web应用时,自动将请求转发给uwsgi,uwsgi处理后,返回给nginx,返回给用户 当请求是192.168.12.96:80的时候,其实访问的是192.168.12.96:9999 这是动态请求,因为我是找到的uwsgi 2.通过nginx去处理静态文件 nginx.conf配置如下
#定义负载均衡池,里面放入uwsgi的地址 upstream nbcrm { server 127.0.0.1:8000; } server { listen 80; server_name www.s14huoying.com; #讲nginx入口的请求,直接反向代理给uwsgi location / { uwsgi_pass nbcrm; include /opt/nginx1-12/conf/uwsgi_params; } #通过nginx处理nbcrm的静态文件 location /static { alias /opt/static/; } }
9.更改uwsgi.ini ,指明socket连接,结合uwsgi 和nginx
第五步的操作中 #如果你已经配置了nginx,请用这个socket连接 socket = 0.0.0.0:8000
10.启动uwsgi和nginx
uwsgi --ini uwsgi.ini nginx软件中的sbin/nginx /opt/nginx1-12/sbin/nginx
并且访问nginx的域名入口,查看是否能访问到uwsgi项目,并且静态文件是否正常
supversior
.配置supversior,管理uwsgi进程
注意,请退出虚拟环境,在宿主机环境下,安装supvervisor
1.安装easy_install ,python2的软件包管理工具 ,如果有了可以忽略
yum install python-setuptools
#安装软件
easy_install supervisor
2.使用supervisor命令,常用命令如下
生成配置文件
echo_supervisord_conf > /etc/supervisord.conf
3.修改配置文件,添加任务,按照自己的机器环境修改此命令
# 进程名字 [program:nbcrm] #启动uwsgi的命令就是这个 (根据自身路径路径去修改下边命令) command=/root/Envs/nbcrm/bin/uwsgi --ini /opt/NB_crm/uwsgi.ini #自动启动uwsgi,挂了之后自动加载 autorestart=true
4.启动supvervisord服务,启动uwsgi
#服务端命令,用于启动这个服务
supervisord -c /etc/supervisord.conf
5.通过命令管理uwsgi
supervisorctl 直接回车,进入交互式管理状态 #展示如下 supervisorctl nbcrm RUNNING pid 2008, uptime 0:01:56 也可以通过命令交互式的管理uwsgi #服务端启动后,通过命令管理软件 supervisorctl start nbcrm supervisorctl stop nbcrm supervisorctl status nbcrm 交互模式中去掉supervisorctl