天天看點

Ubuntu16.04使用nginx+uwsgi 部署Django項目

Ubuntu16.04使用nginx+uwsgi 部署Django項目

1.修改settings配置
DEBUG = False
ALLOWED_HOSTS = ['*']
           
2.收集項目靜态檔案

當Django運作在生産環境時,将不再提供靜态檔案的支援,需要将靜态檔案交給靜态檔案伺服器。

我們需要收集項目中靜态檔案,并放到靜态檔案伺服器中。

我們使用Nginx伺服器作為靜态檔案伺服器。

  1. 收集項目靜态檔案
    1. 配置收集靜态檔案存放的目錄
      # STATIC_ROOT = os.path.join(os.path.dirname(BASE_DIR), 'static')
      STATIC_ROOT='/home/zhao/python_django/static' # 收集到指定的檔案夾,随便一個檔案夾都行
                 
    2. 執行收集靜态檔案指令
      python manage.py collectstatic
                 
  2. 安裝Nginx:

    上nginx官網:http://nginx.org/

    點選右邊的download

    最下邊的 :Linux packages for stable and mainline versions.

    看到:Ubuntu,按照流程進行下載下傳安裝就行

    安裝好了就使用一下指令啟動nginx

    # nginx檔案路徑:
    使用 nginx -t (檢查檔案)
    # 首次啟動 如果不行就帶參檔案路徑
    $ sudo nginx
    # 重新開機
    $ sudo nginx -s reload
    # 停止
    $ sudo nginx -s stop
               
  3. 部署Nginx伺服器提供靜态資料(使用sudo nginx -t 檢視位置)
    1. 方法一:進入nginx的目錄 找到nginx.conf 打開并且編輯:
      user  nginx;
      worker_processes  1;
      
      error_log  /var/log/nginx/error.log warn;
      pid        /var/run/nginx.pid;
      
      
      events {
          worker_connections  1024;
      }
      
      
      http {
          include       /etc/nginx/mime.types;
          default_type  application/octet-stream;
      
          log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                            '$status $body_bytes_sent "$http_referer" '
                            '"$http_user_agent" "$http_x_forwarded_for"';
      
          access_log  /var/log/nginx/access.log  main;
      
          sendfile        on;
          #tcp_nopush     on;
      
          keepalive_timeout  65;
      
          #gzip  on;
      
      #    include /etc/nginx/conf.d/*.conf;
      
      # include servers/*;
      # 加入這個server 一個server就是一個項目
              server {
                      listen       80;
                      server_name  www.diamon.cn;  # 虛拟域名
                      location /static {
                               alias /home/zhao/python_django/static; # 靜态檔案路徑
                       }
                      location / {
                              uwsgi_pass 0.0.0.0:9999;  # 與稍後的uwsgi配置一緻
                              include uwsgi_params;
                       }
              }
      }
      
                 
    2. 方法二:在nginx.conf檔案最後一行加上: include servers/*; 意思是會加載在servers檔案裡的所有配置檔案.

      進入servers目錄建立配置檔案

      diaminds.conf

    3. 配置如下 一個server就是一個項目
      server {
                      listen       80;
                      server_name  www.diamon.cn;  # 虛拟域名
                      location /static {
                               alias /home/zhao/python_django/static; # 靜态檔案路徑
                       }
                      location / {
                              uwsgi_pass 0.0.0.0:9999;  # 與稍後的uwsgi配置一緻
                              include uwsgi_params;
                       }
              }
                 
    4. 修改

      /etc/hosts

      檔案, 新增如下配置 window的hosts在: windows/system32/drivers/etc/hosts
      127.0.0.1 www.diamon.cn
                 
    5. 啟動Nginx伺服器
      # 檢查配置檔案 如果說找不打檔案就指定nginx的目錄
      $ sudo nginx -t
      # 首次啟動
      $ sudo /nginx
      # 重新開機
      $ sudo nginx -s reload
      # 停止
      $ sudo /nginx -s stop
                 

uWSGI伺服器配置

  1. 進入虛拟環境安裝uwsgi包
    pip3 install uwsgi
               
  2. 準備uwsgi伺服器配置檔案, 在項目根目錄建立 uwsgi.ini
    # uwsgi.ini
    
    [uwsgi]
    # 使用Nginx連接配接時使用,Django程式所在伺服器位址
    socket=0.0.0.0:9999
    # 直接做web伺服器使用,Django程式所在伺服器位址
    # http=127.0.0.1:9999
    # 項目目錄
    chdir=/home/zhao/桌面/diamonds
    # 項目中wsgi.py檔案的目錄,相對于項目目錄
    wsgi-file=diamonds/wsgi.py
    # 程序數
    processes=4
    # 線程數
    threads=2
    # uwsgi伺服器的角色
    master=True
    # 存放程序編号的檔案
    pidfile=uwsgi.pid
    # 日志檔案
    daemonize=uwsgi.log
    # 虛拟環境路徑
    virtualenv=/home/zhao/.virtualenvs/diamonds
               
  3. 啟動

    uwsgi伺服器

    # 啟動
    $ uwsgi --ini uwsgi.ini
    産看是否啟動:
    ps -ef | grep uwsgi # 會看到指定程序的服務個數
    # 關閉
    $ uwsgi --stop uwsgi.pid
               

部署Nginx伺服器反向代理(在上邊以有,在這個隻是為了說明)

  1. 修改Nginx伺服器配置檔案
server {
        listen       80;
        server_name  www.diamon.cn;
        ......
        location / {
        		uwsgi_pass 0.0.0.0:9999;
            include uwsgi_params;
        }

    }
           
  1. 啟動Nginx伺服器
    # 檢查配置檔案
    $ sudo /usr/local/nginx/sbin/nginx -t
    # 重新開機
    sudo /usr/local/nginx/sbin/nginx -s reload
               
    所有配置都設定好了就重新開機檢查nginx配置與啟動nginx,啟動uwsgi
sudo nginx -t
sudo nginx -s reload
# 進入項目跟目錄啟動uwsgi
uwsgi --ini uwsgi.ini
ps -ef | grep uwsgi # 檢視是否啟動了指定的程序數的uwsgi服務
           

如圖:

Ubuntu16.04使用nginx+uwsgi 部署Django項目
Ubuntu16.04使用nginx+uwsgi 部署Django項目
Ubuntu16.04使用nginx+uwsgi 部署Django項目