1. 程式人生 > >django部署

django部署

利用Nginx部署django網站

在這裡插入圖片描述

  • 伺服器: Centos
  • 工具:XShell

系統配置

系統環境

  1. yum update :更新系統
  2. yum install yum-utils :安裝工具與開發相關元件
  3. yum groupinstall development : 打包安裝開發相關元件

Python 環境

  1. yum install https://centos7.iuscommunity.org/ius-release.rpm 軟體資源庫
  2. yum install python36u :安裝Python3.6
  3. yum install python36u-pip :安裝Python3.6的pip包
  4. yum install python36u-devel
  5. 修改預設開啟的python版本

centos預設的python版本是python2.7,如果要使用3.6版本,可以用python3.6來執行,也可以直接修改預設的python版本 在這裡插入圖片描述

  • vi ~/.bashrc
  • 新增 alias python='/usr/bin/python3.6'
  • Esc:wq 儲存退出 -. .bashrc 應用修改 在這裡插入圖片描述

上傳站點配置虛擬環境

liunx命令

  1. ls檢視當前目錄下的檔案
  2. cd進入某個目錄
  3. mkdir 建立目錄

python 匯入匯出依賴包

  1. pip freeze > requirements.txt
    匯出所依賴的包到requirements.txt
  2. pip install -r requirements.txt 安裝requirements.txt中的所以庫

上傳站點

  1. 選擇ftp工具上傳
  2. 使用git上傳

配置虛擬環境

  1. python3.6 -m venv venv_myspace建立虛擬環境 在這裡插入圖片描述

  2. source venv_myspace/bin/activate啟用虛擬環境

  3. pip install -r requirements.txt匯入站點的依賴庫 在這裡插入圖片描述

Web 伺服器

uwsgi 安裝使用

  • pip3 install uwsgi 安裝uwsgi閘道器介面
  • 測試閘道器介面
    • 使用vi test.py

      建立測試程式碼 在這裡插入圖片描述

    • 使用uwsgi --http :8000 --wsgi-file test.py執行測試檔案

    測試 在這裡插入圖片描述 如果沒開啟不開上述頁面,請檢查伺服器是否啟用8000埠 騰訊雲入站規則

Nginx安裝啟動

-. 安裝:yum install nginx -. 操作

  • 啟動 :systemctl start nginx.service “Centos 7系統”

    Centos 6及以下版本:service start nginx

  • 重啟 :systemctl restart nginx.service

  • 停止 :systemctl stop nginx.service

  • 安裝完成後在/etc/nginx/nginx.conf 檔案中可以看到一個配置節inxlude /etc/nginx/conf.d/*.conf,它的含義是匯入/etc/nginx/conf.d/下的所有.conf檔案。這樣我們在配置nginx的時候就不用去操作nginx.conf主檔案,保證了主配置檔案的完整性也給我們提供了最大的靈活性。在這裡插入圖片描述

Nginx特定站點配置

  1. /etc/nginx/目錄下有一個uwsgi_params配置檔案,這個檔案是nginx於uwsgi銜接的一個主要配置檔案,我們需要將這個檔案拷貝到站點跟中 cp /etc/nginx/uwsgi_params /站點根/uwsgi_params 在這裡插入圖片描述
  2. 建立站點的Nginx配置檔案在/etc/nginx/conf.d/ 在這裡插入圖片描述
upstream django {
    server unix:///var/run/myspace.sock;   # 指定uwsgi的sock檔案所有動態請求就會直接丟給他
}

server {
    listen 80;   # 監聽的埠
    server_name    jung.wang;  # 配置域名
    charset        utf-8;   # 字符集

    client_max_body_size    75M;  # 客戶端請求傳送的內容最大不要超過多少M

# 指定靜態檔案路徑
    location /static {
        alias    /var/www/MySpace/static;
    }

# 指定專案路徑uwsgi
# 這個location就和咱們Django的url類似,
    location / {
        uwsgi_pass     django;
        include        /var/www/MySpace/uwsgi_params;  # 匯入一個Nginx模組他是用來和uWSGI進行通訊的
    }
}

uwsgi特定站點配置

  1. 在站點下建立.ini的uwsgi配置檔案 vi myspace.ini
[uwsgi]

chdir         = /var/www/MySpace  # 指定專案的根目錄
module        = MySpace.wsgi   # 指定專案的wsgi
home          = /var/www/venvs/venv_myspace   # 指定虛擬環境的位置

master        = true  # 是否主程序
processes     = 20   # 工作程序

socket        = /var/run/myspace.sock  # socket 在程式執行時會自動建立
chmod-socket  = 666  # socket檔案許可權
vaccum        = true  # 每次啟動時清除之前配置

2.在專案下的settings.py中配置ALLOWED_HOSTS(允許的主機) ALLOWED_HOSTS = ['118.***.***.156','junh.wang',]

注意檢查是否關閉除錯模式DEBUG = False

3.因為新增了.ini配置檔案,所以要重啟ngnix 4.在虛擬環境中執行uwsgi --ini /var/www/MySpace/myspace.ini

5.如果站點訪問有問題,可以檢視nginx的日誌檔案,查詢問題原因cat /var/log/nginx/error.log