Nginx部署Django

本文部署教程主要參照B站和djangoproject上的教程,及附上一些個人的踩坑記錄

B站鏈接:https://www.bilibili.com/video/av31456425/?spm_id_from=333.788.videocard.0

官方教程:https://uwsgi.readthedocs.io/en/latest/tutorials/Django_and_nginx.html


系統(tǒng)環(huán)境:ubuntu 16.04

Django:2.1.4

Python:3.6.8


目錄:

1. uwsgi

????????? 1.1 安裝uwsgi

?????????? 1.2 用文件測試uwsgi? ?

?????????? 1.3 用項目測試運行uwsgi

2. nginx

?????????? 2.1 安裝nginx

?????????? 2.2 修改nginx.conf

?????????? 2.3 編寫項目配置文件

?????????? 2.4 為自己的配置文件添加軟連接

3. 編寫uwsgi配置文件

?????????? 3.1 檢查當前uwsgi 狀態(tài)

4 啟動nginx

?????????? 4.1 檢查nginx狀態(tài)

?????????? 4.2 啟動nginx

5 收集static

?????????? 5.1 修改setting文件

?????????? 5.2 收集靜態(tài)文件

?????????? 5.3 修改nginx配置文件

?????????? 5.4 重啟nginx



1 uwsgi

1.1? 安裝uwsgi

pip install uwsgi

1.2 測試uwsgi

①準備一個簡單的python文件,比如 新建一個test.py

def application(env, start_response):

??????? start_response('200 OK',[('Content-Type','text/html')])

?? ? ?? return[b"Hello World"]

②用文件測試是否可用

uwsgi --http :8000 --wsgi-file test.py

到本地機器瀏覽器中輸入服務器ip+8000看看是否出現(xiàn)HelloWorld

(如果是阿里云要到控制臺安全組那里這是運行8000端口運行)

x.x.x.x:8000

③用項目測試是否可用

uwsgi --http (端口) :8000 --chdir 項目路徑(即項目文件manage.py所在的文件夾的路徑,比如/home/mysite) --home python路徑,一般填寫自己的虛擬環(huán)境的python的路徑(即bin所在的文件夾的路徑,比如/home/mysite_env/) --module (wsgi所在地方,一般寫法為mysite.wsgi:application)

然后在瀏覽器輸入服務器ip+8000看是否出現(xiàn)網(wǎng)站的主頁(沒有任何樣式的主頁)

x.x.x.x:8000




2. nginx

2.1 安裝nginx

????pip install nginx

2.2 修改nginx.conf

vim /etc/nginx/nginx.conf


!?。?!把第一行user www-data里面的www-data改為自己的賬戶,如果是管理員則直接改為root
,不然最后會因為當前賬戶權(quán)限不足而失敗

2.3 編寫項目配置文件

vim /etc/nginx/sites-available/mysite.conf

寫入如下代碼:

server{

? ? listen 80;

? ? server_name mysite;

? ? charset utf-8;

? ? client_max_body_size 75M;

? ? location /static {

? ? ? ? alias /root/mysite/static;

? ? }

? ? location /media {

? ? ? ? alias /root/mysite/media;

? ? }

? ? location / {

? ? ? ? uwsgi_pass 127.0.0.1:8001;

? ? ? ? include /etc/nginx/uwsgi_params;

? ? }

}

這里對這個文件說明一下:

server_name 可以填寫自己網(wǎng)站的名稱

location /static 下填寫的是自己的網(wǎng)站下的static文件夾路徑

location /media 下填寫的是自己的網(wǎng)站下的media文件夾路徑

2.4 為自己的配置文件添加軟連接

ln -s /etc/nginx/sites-available/mysite.conf /etc/nginx/sites-enabled/mysite.conf

添加軟連接而不是復制的目的是如果要修改配置文件的話可以直接修改available文件夾里面的即可以了,不用兩個一起修改




3. 編寫uwsgi配置文件

在一個自己喜歡的地方新建一個文件夾并添加ini文件

mkdir mysite_uwsgi

cd mysite_uwsgi

vim mysite.ini

添加下面代碼:

[uwsgi]

chdir = /root/mysite

home = /root/env/py36

module = mysite.wsgi:application

master = True

processes = 4

harakiri = 60

max-requests = 5000

socket = 127.0.0.1:8001

pidfile = /root/mysite_uwsgi/master.pid

daemonize = /root/mysite_uwsgi/mysite.log

vacuum = True

這里說明一下:

mysite改為自己的項目

process 決定用多少個子進程運行uwsgi

socket的8001端口好改為自己喜歡的端口

其他參數(shù)可以參照本文開頭的B站鏈接,那里說的很詳細

編寫完成后運行

uwsgi --ini /home/mysite_uwsgi/mysite.ini


3.1 檢查當前uwsgi 狀態(tài)

ps -aux | grep uwsgi

因為配置文件中process=4,如果uwsgi進程只有一個則說明沒有啟動,請檢查uwsgi配置文件,如果有5個(一個主進程4個子進程)則說明成功啟動




4 啟動nginx

4.1 檢查nginx狀態(tài)

nginx -t

顯示successful即通過測試

4.2 啟動nginx

service nginx restart




5 收集static

5.1 修改setting文件

進入django項目中的setting.py,添加如下代碼:

STATIC_ROOT = os.path.join("BASE_DIR","static_collected")


5.2 收集靜態(tài)文件

到虛擬環(huán)境中,進入自己的項目文件夾

python manage.py collectstatic


5.3 修改nginx配置文件

把alias /root/mysite/static修改為alias /root/mysite/static_collect


5.4 重啟nginx



至此,完成部署任務

下面講解一些事情:

1. 對uwsgi進程進行操作 (重啟、停止)

uwsgi --reload /root/mysite_uwsgi/master.pid

uwsgi --stop /root/mysite_uwsgi/master.pid


對項目文件進行修改之后必須使用第一條命令重啟uwsgi?。。。。〔蝗徊荒軕眯薷模?!


2. 錯誤

一定要學會查日志?。。?!nginx的日志文件在/var/log/nginx/中,有access.log和error.log兩個文件,錯誤通常都在error.log文件當中。

我遇到的是403錯誤

查看項目文件是否開放訪問權(quán)限

chmod -R 755 /home/mysite

查看運行nginx的是不是自己當前用戶

ps -aux | grep nginx

如果用戶是www-data,請參照2.2

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容