1. 程式人生 > >Django專案部署:Python3+Django2+Nginx+Uwsgi

Django專案部署:Python3+Django2+Nginx+Uwsgi

一.版本說明

  1. 系統:Ubuntu16.04(阿里雲)
  2. Python:Python3.7
  3. Django:Django2
  4. Nginx:Nginx1.10.3

二.安裝軟體

該操作使用的是root賬號,如果不是root賬號,那麼需要在命令前面加sudo.示例:sudo apt-get update

1.升級系統(慎重選擇)

[email protected]:~# apt-get update

[email protected]:~# apt-get upgrade

2.安裝git,python3,pip

[email protected]
:~# apt-get install git python3 python3-pip

3.安裝Nginx

(1)安裝

[email protected]:~# apt-get install nginx

(2)目錄結構

安裝完Nginx後,檔案結構大致為:
所有的配置檔案都在 /etc/nginx下;
啟動程式檔案在 /usr/sbin/nginx下;
日誌檔案在 /var/log/nginx/下,分別是access.log和error.log;
並且在 /etc/init.d下建立了啟動指令碼nginx。

(3)相關命令

sudo /etc/init.d/nginx start # 啟動 
sudo /etc/init.d/nginx stop # 停止 
sudo /etc/init.d/nginx restart # 重啟

(4)啟動Nginx服務

[email protected]:~# service nginx start

在瀏覽器輸入阿里雲伺服器域名(如http://47.107.136.2/),看Nginx是否啟動成功:

 

四.部署程式碼

1.部署前的專案配置

(1)指定靜態檔案目錄(setting.py)

# STATIC_ROOT 指明瞭靜態檔案的收集目錄,即專案根目錄(BASE_DIR)下的 static 資料夾。
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')

(2)關閉DEBUG模式(setting.py)

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = False

(3)設定允許訪問的域名(setting.py)

ALLOWED_HOSTS = ['*']

(4)生成requirements.txt

專案還會依賴一些第三方 Python 庫,為了方便在伺服器上一次性安裝,我們將全部依賴寫入一個叫 requirements.txt 的文字檔案中。啟用本地的虛擬環境(如果你使用了虛擬環境的話),並進入專案的根目錄,執行 pip freeze > requirements.txt 命令:

第一步:啟用虛擬環境(該操作是在git bash下操作,如果是不同的控制檯,需要更換命令,如windows下是輸入:activate

[email protected] MINGW64 /e/tool/django/mysite/venv1/Scripts (master)

$ source activate

(venv1)

[email protected] MINGW64 /e/tool/django/mysite/venv1/Scripts (master)

第二步:在專案根目錄下執行pip freeze > requirements.txt命令

(venv1)

[email protected] MINGW64 /e/tool/django/mysite (master)

$ pip freeze > ./requirements.txt

這時專案根目錄下會生成了一個 requirements.txt 的文字檔案,其內容記錄了專案的全部依賴。

2.將專案上傳到碼雲(或者github)

略。git的使用參考廖雪峰Git教程

3.設定伺服器目錄結構

[email protected]:~# mkdir -p ~/sites/demo.sweeneys.com

4.建立虛擬環境:

[email protected]:~/sites/demo.sweeneys.com# python3 -m venv venv

5.從碼雲(或者github)把專案拉取過來:

[email protected]:~/sites/demo.sweeneys.com#
git clone https://gitee.com/sweeneys/mysite.git

6.安裝專案依賴

先啟用虛擬環境,再進入到專案根目錄,即 requirements.txt 所在的目錄,安裝專案的全部依賴:

[email protected]:~/sites/demo.sweeneys.com# source venv/bin/activate
(venv) [email protected]:~/sites/demo.sweeneys.com# cd mysite/
(venv) [email protected]:~/sites/demo.sweeneys.com/mysite# pip3 install -r requirements.txt

7.收集靜態檔案

(venv) [email protected]:~/sites/demo.sweeneys.com/mysite#
python manage.py collectstatic

8.生成資料庫

(venv) [email protected]:~/sites/demo.sweeneys.com/mysite# python manage.py migrate

9.建立超級使用者

(venv) [email protected]:~/sites/demo.sweeneys.com/mysite#
python manage.py createsuperuser

10.專案啟動測試

[email protected]:~/sites/demo.sweeneys.com/mysite# python3 manage.py  runserver

五.配置Nginx

先在伺服器的 /etc/nginx/sites-available/ 目錄下新建一個配置檔案,寫上下面的配置內容:

server {
    charset utf-8;
    listen 80;
    server_name demo.sweeneys.com;
    location /static {
		alias   /sites/demo.sweeneys.com/mysite/static;
    }
    location / {
        proxy_set_header Host $host;
        proxy_pass http://unix:/tmp/demo.sweeneys.com.socket;
    }
}

(venv) [email protected]:~/sites/demo.sweeneys.com/mysite# ln -s /etc/nginx/sites-available/demo.sweeneys.com /etc/nginx/sites-enabled/demo.sweeneys.com

六.uwsgi配置

1.安裝全域性uwsgi

[email protected]:~# apt-get install uwsgi

2.uwsgi配置

在專案的根目錄下,也就是有manage.py的目錄下,新建一個uwsgi.ini檔案。檔名可以隨便,但字尾必須是ini。

[email protected]:~/sites/demo.sweeneys.com/mysite#touch uwsgi.ini

開啟uwsgi.ini檔案

[email protected]:~/sites/demo.sweeneys.com/mysite#vi uwsgi.ini

uwsgi.ini 裡面輸入下面的配置內容:

#my_uwsgi.ini
socket = :9000
chdir=/sites/demo.sweeneys.com/mysite # 根目錄
module=mysite.wsgi # django的wsgi檔案
master = true # master設定
processes=2
threads=2
max-requests=2000
chmod-socket=664
vacuum=true

3.執行uwsgi

[email protected]:~/sites/demo.sweeneys.com/mysite# uwsgi --ini my_uwsgi.ini