主要内容:https://www.cnblogs.com/pyyu/p/9481344.html?tdsourcetag=s_pcqq_aiomsg
1 使用linux运行django项目
a : 准备python环境, 准备虚拟环境, 激活虚拟环境: mkvirtualenv nbcrm
b : 安装django模块: pip3 install django==1.11.11
c : 安装pymysql连接mysql数据库 pip3 install pymysql
d : 安装django的一个django-mutiselectfield : pip3 install django-mutiselectfield
e : 解决项目的数据库连接问题, 修改settngs.py:
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': 'redhat123', #用户密码 } }
3) 更改允许主机: ALLOWED_HOSTS = ['*']
2 使用uwsgi启动django
1) 安装uwsgi: pip3 install -i https://pypi.douban.com/simple uwsgi
2) 通过uwsgi命令启动python项目(问题: uwsgi不处理static静态文件)
uwsgi --http :8888 --module Nb_crm.wsgi
3) uwsgi可以热加载项目
uwsgi --http :9999 --module mycrm.wsgi --py-autoreload=1 --py-autoreload是告诉uwsgi自动重启加载django项目
4) 通过uwsgi的配置文件启动项目
a : 手动创建uwsgi.ini文件 touch uwsgi.ini
b : 写下如下配置:
[uwsgi] #项目的绝对路径,定位到项目的第一层 chdir = /opt/NB_crm #指明项目的wsgi文件路径 module = NB_crm.wsgi #指明你的虚拟解释器的第一层路径 home = /root/Envs/nbcrm #指明通过uwsgi,启动多少个进程 processes = 5 #非常重要 #非常重要 #非常重要 #如果你已经配置了nginx(启动了nginx服务,配置了uwsgi_pass),请用这个socket连接 #socket = 0.0.0.0:8000 #如果你没用nginx,想通过uwsgi直接启动web服务,指明http协议 http = 0.0.0.0:9999 #在退出uwsgi环境后,清空环境变量 vacuum = true
5) :通过配置文件, 启动nb_crm(注意uwsgi不会处理静态文件, 如果有,也是浏览器的缓存)
uwsgi --ini uwsgi.ini
6): 配置django的settings.py, 手机所有的nb_crm项目所需的静态文件
1 通过命令, 收集整个项目的所有静态文件, 放入到/opt/static
2 执行命令python manage.py collectstatic
3 此时nb_crm的所有静态文件, 都在opt/static下
7) 配置nginx:
1 配置一个网站入口,当用户访问192.168.12.96:80 这个web应用时,自动将请求转发给uwsgi,uwsgi处理后,返回给nginx,返回给用户当请求是192.168.12.96:80的时候,其实访问的是192.168.12.96:9999 这是动态请求,因为我是找到的uwsgi#匹配度最低的写法,因此就是任何的请求都访问到这里
2通过nginx去处理静态文件
3 nginx.conf的配置如下:
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/; } }
8) 更改uwsgi.ini, 指明socket连接, 结合uwsgi和nginx: 如果你已经配置了nginx, 请用这个socket连接
9) 启动uwsgi: uwsgi --ini uwsgi.ini
10) 启动nginx, 访问nginx的域名入口, 看能否访问到uwsg项目, 并且静态文件是否正常.
11) 配置supervisor, 管理uwsgi进程(此时退出虚拟环境, 在宿主机环境下安装supervisor)
1.安装easy_install ,python2的软件包管理工具 ,如果有了可以忽略
yum install python-setuptools; easy_install supervisor
2 使用supervisor命令, 常用命令如下: echo_supervisord_conf > /etc/supervisord.conf(生成配置文件)
3 修改配置文件,添加任务,按照自己的机器环境修改此命令
[program:s14nbcrm] #启动uwsgi的命令就是这个 command=/root/Envs/nbcrm/bin/uwsgi --ini /opt/NB_crm/uwsgi.ini #自动启动uwsgi,挂了之后自动加载 autorestart=true
4启动supervisor服务, 启动uwsgi: supervisord -c /etc/supervisord.conf
5 通过命令管理uwsgi supervisor直接回车, 进入到交互式管理状态
[root@node1 ~ 11:53:32]#supervisorctl s14nbcrm RUNNING pid 2008, uptime 0:01:56 也可以通过命令交互式的管理uwsgi #服务端启动后,通过命令管理软件 supervisorctl start s14nbcrm supervisorctl stop s14nbcrm supervisorctl status s14nbcrm