1. 程式人生 > >django部署方式之Gunicorn+Django+nginx+mysql

django部署方式之Gunicorn+Django+nginx+mysql

本文假設你已經按照之前章節安裝了Python3.4.3,Django 1.8. 以及MySQL,並建立了資料庫以及資料庫帳號密碼。

安裝並啟動nginx

yum -y install nginx

如果安裝不了或者找不到nginx的源,則手動新增檔案:

終端輸入:

vi /etc/yum.repos.d/nginx.repo

在裡面填入:

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/6/$basearch/
gpgcheck=0
enabled=1

然後在執行一次 
yum -y install nginx

 配置成開機啟動,並手動啟動nginx服務:

chkconfig nginx on
service nginx start

如果啟動失敗,可能是80埠被佔用

此時關閉佔用80埠所在的服務,再重新啟動即可(我的是80埠被apache服務佔用,所以關閉服務)

此時開啟網頁,輸入localhost,即可看到

接下來,更改下nginx的配置

vi /etc/nginx/nginx.conf

將user改成自己的賬號

安裝gunicorn

/usr/local/bin/pip install gunicorn

然後切換到專案目錄下,新建gunicorn的配置檔案gunicorn.conf.py

vi gunicorn.conf.py

新增以下內容

import multiprocessing
bind = "127.0.0.1:8080"
workers = 2
errorlog = '/home/zhangpp/blog/gunicorn.error.log'
#accesslog = './gunicorn.access.log'
#loglevel = 'debug'
proc_name = 'gunicorn_blog_project'

注意:workers是工作執行緒數,一般設定成:伺服器CPU個數 + 1

然後在專案目錄下新建nginx的配置檔案nginx.conf

新增以下內容

server {
     listen 80;
     server_name localhost example.com;
     access_log /home/zhangpp/blog/nginx.access.log;
     error_log /home/zhangpp/blog/nginx.error.log;
     location / {
         proxy_pass http://127.0.0.1:8080;
         proxy_set_header Host $host;
         proxy_set_header X-Real-IP $remote_addr;
         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
     }
     location /robots.txt {
        alias /home/zhangpp/blog/static/robots.txt;
     }
     location /favicon.ico {
          alias /home/zhangpp/blog/static/img/favicon.ico;
     }
     location ~ ^/(media|static)/  {
         root    /home/zhangpp/blog;
         expires 30d;
     }
     # this prevents hidden files (beginning with a period) from being served
      location ~ /\. { 
        access_log off; log_not_found off; deny all;
     }
}

然後將其連結到/etc/nginx/conf.d/blog.conf (需要root帳號許可權或者sudo)

ln -s /home/zhangpp/blog/nginx.conf /etc/nginx/conf.d/blog.conf

同時,必須把nginx.conf裡server_name後面的內容(localhost)加入到 settings.py裡的ALLOWED_HOSTS

ALLOWED_HOSTS = ['localhost','example.com']

這樣我們現在可以執行一下gunicorn:

nohup /usr/local/bin/gunicorn blog.wsgi:application -c /home/zhangpp/blog/gunicorn.conf.py&

然後再開啟另一個終端重啟nginx服務即可

service nginx restart

這樣我們訪問 http://localhost或者在外網訪問example.com就可以訪問我們的專案了。