django部署方式之Gunicorn+Django+nginx+mysql
阿新 • • 發佈:2019-02-02
本文假設你已經按照之前章節安裝了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就可以訪問我們的專案了。