nginx+uWSGI+django+virtualenv+supervisor发布web项目
在windows本地 通过
pip3 freeze > requirements.txt
就能将python3解释器中所有的模块导出到这个文件中
将这个 requirements.txt 文件传输到服务器上,进行安装,就可以自动解决所有模块问题
pip3 install -r requirements.txt
进入虚拟环境
workon nginx_crm
下载uwsgi
pip3 install uwsgi
使用uwsgi命令启动django项目
是在项目的第一层
uwsgi支持热加载的启动方式命令如下
uwsgi --http :8000 --module mysite.wsgi --py-autoreload=1
uwsgi --http :8080 --module Crm_Project.wsgi
--http指定http协议启动在 8080端口
--module 找到项目第二层的目录,里面的wsgi.py文件
django的静态文件nginx配置
在项目setting.py文件中修改
STAIC_ROOT='/opt/crmstatic' STATIC_URL = '/static/' STATICFILES_DIRS=[ os.path.join(BASE_DIR,"static"), ]
收集所有你使用的静态文件保存到STATIC_ROOT
python3 manage.py collectstatic
配置nginx结合uWSGI
配置nginx.conf
vim /opt/s18tngx/conf/nginx.conf
修改内容
server { listen 80; server_name 120.79.237.52; #charset koi8-r; #access_log logs/host.access.log main; #access_log "pipe:rollback logs/host.access_log interval=1d baknum=7 maxsize=2G" main; location / { uwsgi_pass 0.0.0.0:8000; include uwsgi_params; } location /static{ alias /opt/static; }
在项目的第一层加配置 uwsgi.ini
[uwsgi] # Django-related settings # the base directory (full path) #填写项目的绝对路径(第一层路径) chdir = /opt/Crm_Project # Django's wsgi file #填写crm第二层目录下的wsgi.py文件的路径 module = Crm_Project.wsgi # the virtualenv (full path) #填写虚拟环境的绝对路径 home = /root/Envs/mycrm # 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
如果你结合了nginx反向代理,必须用--socket参数
uwsgi --socket :8000 --module Crm_Project.wsgi
方式启动代码
uwsgi --ini uwsgi.ini
安装easy_install
pip3是python3的软件包管理工具
easy_install 是python2的软件包管理工具
yum install python-setuptools
安装supervisor
easy_install supervisor
创建supervisor的配置文件
echo_supervisord_conf > /etc/supervisor.conf
修改supervisor的配置文件,添加启动uwsgi的命令
supervisor其实就是帮咱们执行了,需要手动执行的命令而已
vim /etc/supervisor.conf
写入如下内容,在最底部写
[program:s18crm] command=/root/Envs/mycrm/bin/uwsgi --ini /opt/Crm_Project/uwsgi.ini stopasgroup=true killasgroup=true
测试用supervisor启动uwsgi ,注意要确保此时uwsgi已经退出
supervisord -c /etc/supervisor.conf #这是启动supervisor服务端命令
supervisorctl -c /etc/supervisor.conf #这是supervisor客户端管理命令
supervisor的命令
status s18crm #查看状态
start s18crm #启动任务
stop s18crm #停止任务
笔记
crm部署 nginx + uwsgi + django + mysql crm是一个单体的应用,前端代码和后端代码,融合在了一起 linux默认终端有7个 按住ctrl + alt 从 f1-f7是7个终端 f1是图形化终端,f2-f7是黑屏 我们用的是xshell远程连接,连接到linux,可以有N个终端 1.先去启动后端,uwsgi + django 2.先准备项目 xftp lrzsz 3.先准备虚拟环境 4.安装uwsgi 5.用uwsgi启动crm项目 -一是命令 + 参数 (不建议使用,请用配置文件 uwsgi.ini) uwsgi --http :8000 --module crm.wsgi 解释:--http 就是直接可以通过浏览器访问,不通过nginx uwsgi --socket :8000 --module crm.wsgi 解释: --socket 是必须用nginx去反向代理,才能找到,浏览器直接访问找不到 正确的方式: 二,用配置文件uwsgi.ini [uwsgi] # Django-related settings # the base directory (full path) #填写项目的绝对路径(第一层路径) chdir = /opt/Crm_Project # Django's wsgi file #填写crm第二层目录下的wsgi.py文件的路径 module = Crm_Project.wsgi # the virtualenv (full path) #填写虚拟环境的绝对路径 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参数 #如果你用了nginx反向代理,就填写socket参数 #如果你用了nginx反向代理,就填写socket参数 #如果你用了nginx反向代理,就填写socket参数 #如果你用了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 三,通过配置文件,启动crm,启动后端!!!! uwsgi --ini uwsgi.ini 四。关闭防火强 iptables -F #清空规则 systemctl stop firewalld #关闭防火墙服务 systemctl disable firewalld #禁止开机自启 五,收集crm的静态文件 修改settings.py 写入 STATIC_ROOT= '/opt/crmstatic' 六:用命令收集静态文件 python3 manage.py collectstatic 2.准备数据库,启动 #保证mariadb已经安装了 yum install mariadb-server mariadb -y systemctl start mariadb #启动数据库 3.准备nginx,进行反向代理 1.安装nginx 2.修改nginx的配置文件 nginx.conf 3.修改代码如下,截取的片段代码如下,参照着修改 upstream mycrm { server 0.0.0.0:8000; } #nginx的虚拟主机参数 server { #第一个虚拟主机,监听的80端口 listen 80; #填写的是你自定义的域名 或者服务器的ip地址,或者写locathost server_name 192.168.226.128; #当用户访问 www.s18dnf.com的时候,就进入这个虚拟主机 location / { uwsgi_pass http://mycrm; include uwsgi_params; } #这个location是解决crm的静态文件的问题的 #只要请求url是192.168.226.128/static/admin/admin.css location /static { #alias参数 就是将/static转化为/opt/crmstatic ,也就找到了我们所有的静态文件 alias /opt/crmstatic; } 4.还差一个supervisor 1.下载安装 2.修改supervisor的配置文件 写入任务 3.这里有个坑 我们用supervisor,其实就是帮咱们执行了一下启动uwsgi的命令而已 4.注意后台不能启动过uwsgi