nginx + gunicorn + supervisor 部署 django 项目
写好Django项目后,要将项目部署到服务器上,可以采用nginx,gunicorn和supervisor的方式进行部署。
安装虚拟环境
当一台机器上部署多个项目的时候,各个项目依赖的包可能有冲突,互相影响。使用虚拟环境可以将各个项目的执行环境隔离,互不影响。
安装virtualenv
pip install virtualenv
安装virtualenvwrapper
为了简化virtualenv的操作,可以安装virtualenvwrapper,它简化了virtualenv的操作,并且将所有的虚拟环境放置到同一个目录下。
pip install virtualenvwrapper
然后配置WORKON_HOME
首先找到virtualenvwrapper.sh文件的路径
whereis virtualenvwrapper.sh
将路径添加到/etc/profile中
export WORKON_HOME=~/.virtualenvs // export 地址是以后虚拟环境放置的地址,可以自己选择 source /usr/local/bin/virtualenvwrapper.sh
然后使/etc/profile文件的配置生效
source /etc/profile
之后就可以使用啦
创建一个虚拟环境
mkvirtualenv project
切换到虚拟环境
workon project
退出虚拟环境
deactivate
删除虚拟环境
rmvirtualenv project
全局安装nginx
安装完成后添加项目的配置,新建.conf文件
server {
       listen 80; //端口
       server_name localhost ;//ip地址
       access_log /data/log/nginx-access.log; // 成功日志地址
       error_log  /data/log/nginx-error.log; // 错误日志地址
       keepalive_timeout 3600;
       client_max_body_size 5120M;
       location /static/ {
          alias /data/static; // 静态文件的地址
       }
       location / {
           include uwsgi_params;
           add_header Access-Control-Allow-Origin *;
           proxy_set_header Host $http_host;
           proxy_set_header X-Forward-HOST $server_name;
           proxy_set_header X-Real-IP $remote_addr;
           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
           proxy_redirect off;
           proxy_connect_timeout 3800s;
           proxy_read_timeout 3600s;
           proxy_http_version 1.1;
           proxy_set_header Connection "";
           proxy_pass http://127.0.0.1:80;
        }
  }配置完成后测试正确性
nginx -t
配置完成后启动nginx:
/usr/local/nginx/sbin/nginx -s reload // 前面是nginx安装地址
安装gunicorn
可以在虚拟环境中安装gunicorn
pip install gunicorn
安装supervisor
配置supervisor,新建.ini文件
command=/data/.virtualenvs/project/bin/gunicorn -w 3 -b 127.0.0.1:80 project.wsgi:application //切换到虚拟环境启动项目 directory=/data/project // 切换到执行目录下 user=root autostart=true autorestart=true startsecs=10 redirect_stderr=true stderr_logfile=/data/log/stderr.log // 错误日志地址 stdout_logfile=/data/log/stdout.log // 正确日志地址 stopasgroup=true stopsignal=QUIT
重启supervisor,载入新配置
supervisorctl update supervisorctl reload
最后,整个部署就完成了
相关推荐
  htofly    2020-06-03  
 username=user ; should be same as http_username if set. password=123 ; should be same as http_passwo
  bysidewithsun    2020-05-14  
   lap00    2020-05-05  
   SDUTACM    2020-05-03  
   wangyibo00    2020-03-07  
   柠檬班    2020-02-03  
   lap00    2014-01-19  
   wangyibo00    2019-10-06  
   dashoumeixi    2019-09-11  
   xufwind    2012-06-27  
   lnkToKing    2019-06-30  
   七夕小子    2019-06-29  
   bigzhao    2019-06-28  
   mingrixing    2019-06-28  
   kewei    2019-06-27  
   Owengoodman    2019-06-26  
   wangyibo00    2019-06-26  
   Owengoodman    2014-01-19