nginx + gunicorn + supervisor 部署 django 項目

寫好Django項目後,要將項目部署到服務器上,能夠採用nginx,gunicorn和supervisor的方式進行部署。nginx

安裝虛擬環境

當一臺機器上部署多個項目的時候,各個項目依賴的包可能有衝突,互相影響。使用虛擬環境能夠將各個項目的執行環境隔離,互不影響。服務器

安裝virtualenvapp

pip install virtualenv

安裝virtualenvwrapper

爲了簡化virtualenv的操做,能夠安裝virtualenvwrapper,它簡化了virtualenv的操做,而且將全部的虛擬環境放置到同一個目錄下。測試

pip install virtualenvwrapper

而後配置WORKON_HOME
首先找到virtualenvwrapper.sh文件的路徑rest

whereis virtualenvwrapper.sh

將路徑添加到/etc/profile中日誌

export WORKON_HOME=~/.virtualenvs // export 地址是之後虛擬環境放置的地址,能夠本身選擇
source /usr/local/bin/virtualenvwrapper.sh

而後使/etc/profile文件的配置生效code

source /etc/profile

以後就能夠使用啦server

建立一個虛擬環境ip

mkvirtualenv project

切換到虛擬環境rem

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

最後,整個部署就完成了

相關文章
相關標籤/搜索