在nginx上部署django項目--------Gunicorn+Django+nginx+mysql


一、安裝nginx

以前的博客我有寫,這里就不寫了

http://www.cnblogs.com/wt11/p/6420442.html

二、安裝mysql

我用的mysql5.7  64位的二進制包,官網下載安裝編譯好的二進制包,解壓直接使用即可

https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz

安裝二進制mysql5.7http://blog.csdn.net/wb96a1007/article/details/51559741

三、安裝gunicorn

pip install gunicorn

在項目目錄EdmureBlog下新建gunicorn配置文件gunicorn.conf.py

[root@localhost EdmureBlog]# pwd
/EdmureBlog

[root@localhost EdmureBlog]# ls
backend  db.sqlite3   gunicorn.conf.py    manage.py   nginx.conf   repository    static     utils
blogss   debug.log   EdmureBlog            gunicorn.error.log  Monaco.ttf  __pycache__  singleton.py  templates  web

gunicorn.conf.py

import multiprocessing

bind = "127.0.0.1:8080"
workers = 2  #workers是工作線程數,一般設置成:服務器CPU個數 + 1
errorlog = '/EdmureBlog/gunicorn.error.log'
#accesslog = './gunicorn.access.log'
#loglevel = 'debug'
proc_name = 'gunicorn_blog_project'

四、在EdmureBlog下新建nginx配置文件dj.conf ,將其鏈接到/app/nginx/conf/extra下      ln -s /EdmureBlog/dj.conf   /app/nginx/conf/extra/dj.conf

/EdmureBlog/dj.conf 

server {
     listen 8000;
     server_name www.wt.com;   #訪問django項目的網站
     access_log /EdmureBlog/logss/nginx.access.log;#訪問日志
     error_log //EdmureBlog/logss//nginx.error.log;#錯誤日志

     location / {
         proxy_pass http://127.0.0.1:8080;#動態請求交給gunicorn,8080端口就是gunicorn用的端口
         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 /EdmureBlog/logss/static/robots.txt;
     }

     location /favicon.ico {
          alias /EdmureBlog/logss/static/img/favicon.ico;
     }

     location ~ ^/(media|static)/  {  # 注意這個static,如果項目中靜態文件的存放目錄是  /項目/statics,那么這里也要寫成media|statics,然后在html文件中引用css和js的時候,路徑也要寫成/statics/css/...
         root    /EdmureBlog/;  #靜態文件存放路徑
         expires 30d;
     }


     # this prevents hidden files (beginning with a period) from being served
      location ~ /\. { 
        access_log off; log_not_found off; deny all;
     }

}

nginx主配置文件/app/nginx/conf/nginx.conf

user  root;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;

events {
    worker_connections  1024;
}
http {
    include       mime.types;
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    include       extra/dj.conf; #django站點
    include       extra/www.conf; # 其他站點
    include       extra/bbs.conf;  #其他站點
    include       extra/status.conf;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    
}

五、同時,django項目的站點名(www.wt.com)加入 settings.pyALLOWED_HOSTS里。

ALLOWED_HOSTS = ['www.wt.com',]

如果要外部訪問,則打開8000端口

/sbin/iptables -I INPUT -p tcp --dport 8000 -j ACCEPT

service iptatbles save

六、運行gunicorn:

[root@localhost EdmureBlog]# pwd
/EdmureBlog

[root@localhost EdmureBlog]# nohup   /usr/local/bin/gunicorn   EdmureBlog.wsgi:application   -c   /EdmureBlog/gunicorn.conf.py  &

七、啟動nginx

 /app/nginx/sbin/nginx -t 檢查配置語法是否正確

/app/nginx/sbin/nginx   啟動nginx服務

八、關閉防火牆,沒有dns的話,Windows修改hosts文件,瀏覽器訪問www.wt.com即可 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM