部署Django Application(一)使用Nginx + gunicorn + supervisord

初始化服務(wù)器環(huán)境

yum -y install vim git screen python-pip
curl -L https://github.com/robbyrussell/oh-my-    zsh/raw/master/tools/install.sh | sh
pip install virtualenvwrapper gunicorn django
mkdir /usr/local/virtualenv
mkvirtualenv python

配置gunicorn服務(wù)器

Gunicorn(gunicorn.org)是一個(gè)Python WSGI UNIX的HTTP服務(wù)器。,從Ruby的獨(dú)角獸(Unicorn)項(xiàng)目移植。

在Django項(xiàng)目下建立shell腳本

#!/bin/bash
set -e 
LOGFILE=guni.log
LOGDIR=$(dirname $LOGFILE)
NUM_WORKERS=3  # cpu core nums * 2 + 1
USER=nobody
GROUP=nogroup
# WORKER=gevent # install python gevent
ADDRESS=127.0.0.1:8000
test -d $LOGDIR || mkdir -p $LOGDIR
exec gunicorn_django -w $NUM_WORKERS --bind=$ADDRESS \
 # -k $WORKER 
  --daemon \
  --user=$USER --group=$GROUP --log-level=error \
  --log-file=$LOGFILE 2>>$LOGFILE

安裝Nginx用作反向代理與靜態(tài)服務(wù)器

  • 使用http://lnmp.org/ 安裝Nginx

  • 用Lnmp一鍵安裝包帶的腳本新建一個(gè)虛擬主機(jī)

  • 更改主機(jī)的Nginx配置文件

      server {
    
          listen       80;
          server_name  nuptapi.nupter.org;
          access_log   /home/wwwlogs/nuptapi.nupter.org.log;
          error_log    /home/wwwlogs/nuptapi.nupter.org.error.log;
          root /home/wwwroot/nuptapi.nupter.org;
    
          location  /static/ {
              alias /home/wwwroot/nuptapi.nupter.org/static/;
          }
    
          location  / {
              proxy_pass            http://127.0.0.1:8000;
              proxy_redirect        off;
              proxy_set_header      Host             $host;
              proxy_set_header      X-Real-IP        $remote_addr;
              proxy_set_header      X-Forwarded-For  $proxy_add_x_forwarded_for;
              client_max_body_size  10m;
          }
    
      }
    

用Supervisord守護(hù)進(jìn)程

  • echo_supervisord_conf > /etc/supervisord.conf
  • vim /etc/supervisord.conf

更改配置文件以下的內(nèi)容

  • chown=lxy:lxy ; socket file uid:gid owner

  • [program:nuptapi]
    command=/home/wwwroot/django_helloworld/gunicorn_start.sh

  • Shell運(yùn)行supervisord

  • 同時(shí)supervisord 默認(rèn)會(huì)在9001端口打開一個(gè)HTTP服務(wù)器,可以在Nginx再配置一個(gè)反向代理來遠(yuǎn)程登陸

其它

  • 配置DNS服務(wù)器,解析域名A記錄到服務(wù)器IP
  • 重啟Nginx
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容