Linux基础之部署项目注意事项
一.部署项目大致步骤
# 第一步: 先创建虚拟环境 virtualenv --python=python3 crmvenv
windows下能正常运行项目,通过pip3 freeze > requirement.txt导出项目所需要的全部模块
进行虚拟环境:source /opt/myvenv/crm/bin/activate,然后通过:
pip3 install -i https://pypi.douban.com/simple -r requirement.txt安装模块
# 第二步:上传代码,调试,看能否运行:暂时通过python manage.py runserver 调式 # 第三步:安装maridb,导入原数据库 # 导出: mysqldump -uroot -p --database crm > crm.sql # 导入: mysql -uroot -p crm < crm.sql # 第四步: 在线上,是通过uwsgi结合uwsgi.ini启动我们项目, uwsgi.ini配置文件如下: [uwsgi] #http = :8080 socket = 0.0.0.0:8000 #项目路径 chdir= /opt/crm2 # uwsgi的文件 wsgi-file= crm2/wsgi.py # 虚拟环境 virtualenv = /opt/crmvenv # 进程个数 processes = 3 # 线程个数 # threads=2 # 后台启动,指定日志的输出 #daemonize=/opt/django.log # 清除临时文件 vacuum = true # python文件发生改变自动重启 py-autoreload=1 # 第五步: 通过supervisor启动uwsgi: echo_supervisord_conf > /etc/supervisord.conf生成配置文件: /etc/supervisord.conf [program:crm2] command=/opt/crmvenv/bin/uwsgi --ini /opt/uwsgi.ini autostart=true ; 在supervisord启动的时候也自动启动 startsecs=10 ; 启动10秒后没有异常退出,就表示进程正常启动了,默认为1秒 autorestart=true ; 程序退出后自动重启,可选值:[unexpected,true,false],默认为unexpected,表示进程意外杀死后才重启 stopasgroup=true ;默认为false,进程被杀死时,是否向这个进程组发送stop信号,包括子进程 killasgroup=true ;默认为false,向进程组发送kill信号,包括子进程 第六步: 配置nginx: server { listen 80; server_name localhost; charset utf-8; location / { uwsgi_pass 0.0.0.0:8000; include uwsgi_params; } location /static { alias /opt/crmstatic; } } 注意:先配置:
django中settings中的配置:STATIC_ROOT = '/opt/crmstatic/'后,
这个alias配置的静态文件地址:是通过执行 python3 manage.py collectstatic 得来的
注意:最好关闭防火墙和selinux:
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config # 写入配置文件,长久生效
setenforce 0 # 立即就会生效,如果不写入配置文件,重启后恢复
# 然后重启后生效