Django部署——uwsgi+Nginx(超詳細(xì))

環(huán)境:
python3.6
centos 7
Django1.11
用Django寫了個(gè)小網(wǎng)站,只能在自己本地跑一跑!這怎么行?聽說可以部署在云服務(wù)器上,這樣別人就可以訪問了!

biu~

從哪兒開始?就從Django開始吧!老規(guī)矩,按步驟:

1、本地跑起來Django

這里不講Django項(xiàng)目實(shí)施過程,假設(shè)你已經(jīng)寫了一個(gè)Django項(xiàng)目,并且在本地127.0.0.1:8000能夠跑起來。喏,給你個(gè)參考,項(xiàng)目大概長這樣:

Django Project

  • kindle目錄為我創(chuàng)建的Django App

2、修改項(xiàng)目配置

也就是項(xiàng)目目錄下的settings.py文件,主要強(qiáng)調(diào)幾個(gè)地方:
①關(guān)閉DEBUG模式:

具體為
關(guān)閉DEBUG模式

②修改ALLOWED_HOSTS:

具體為
ALLOWED_HOSTS

③配置靜態(tài)文件存放路徑:

具體為
靜態(tài)文件路徑

修改好配置之后執(zhí)行:

python manage.py collectstatic

將項(xiàng)目用到的靜態(tài)文件復(fù)制到項(xiàng)目根目錄下的static文件中
靜態(tài)文件夾

3、安裝uwsgi和Nginx

這個(gè)沒什么說的。。。在自己的云服務(wù)器上裝好這兩個(gè)工具
安裝好uwsgi后最好驗(yàn)證一下,驗(yàn)證方法:
創(chuàng)建一個(gè)test.py文件:

def application(env, start_response):
    start_response('200 OK', [('Content-Type', 'text/html')])
    return [b'Hello world!']    #python3
    # return ['Hello world!']    #python2

啟動(dòng)uwsgi服務(wù)器:

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

如果可以正常啟動(dòng)而不報(bào)錯(cuò)那就應(yīng)該沒問題,不放心的話再在終端驗(yàn)證一下:

wget http://127.0.0.1:8000
看一下能否正確獲取內(nèi)容

4、配置項(xiàng)目的uwsgi

在項(xiàng)目所在文件夾下創(chuàng)建uwsgi.ini配置文件,也就是這里
uwsgi.ini

在uwsgi.ini里進(jìn)行如下配置:

[uwsgi]
# Django-related settings

# 這里的端口可以根據(jù)自己需要設(shè)定
socket = 127.0.0.1:8001        

# the base directory (full path)
# 這個(gè)是Django項(xiàng)目的根目錄,也就是包含App的那個(gè)目錄,仔細(xì)對照上圖
chdir           = /home/python/book2kindle

# Django s wsgi file
# 這里是項(xiàng)目名(不是App名).wsgi
module          = book2kindle.wsgi

# process-related settings
# master
master          = true

# maximum number of worker processes
processes       = 32

# ... with appropriate permissions - may be needed
# chmod-socket    = 664
# clear environment on exit
vacuum          = true

plugin python = true

# 這個(gè)是項(xiàng)目的虛擬python環(huán)境,如果沒用虛擬環(huán)境,可以不設(shè)定
home = /home/python/book2kindle_env

5、配置項(xiàng)目的nginx

找到nginx的配置文件夾,centos7的nginx配置文件在/etc/nginx下,該路徑下有一個(gè)nginx.conf總配置文件,還有兩個(gè)文件夾./conf.d、./default.d,我們將nginx.conf復(fù)制一份到conf.d文件夾下,命名為nginx.conf(或者項(xiàng)目名.conf)進(jìn)行如下修改(根據(jù)中文注釋進(jìn)行相應(yīng)配置即可):

http {
    upstream django {
        # 注意這里的server要和uwsgi.ini配置文件中的socket保持一致
        server 127.0.0.1:8002; # for a web port socket
    }
    server {
        listen       80;
        server_name  xxx.com;  # 這里填自己的域名或者服務(wù)器的ip(決定你今后訪問網(wǎng)站的方式)
        charset      utf-8;
        root         /usr/share/nginx/html;
        location / {
        root        /home/python/book2kindle/kindle;  # 這是Django App的路徑
            uwsgi_pass  django;
            include     uwsgi_params; # the uwsgi_params file you installed
        }
        location /static {
            # Django項(xiàng)目靜態(tài)文件的路徑
            alias /home/python/book2kindle/static; 
        }
    }
    
}

6、啟動(dòng)uwsgi和nginx

進(jìn)入uwsgi.ini文件夾下執(zhí)行:

uwsgi --ini uwsgi.ini

在終端執(zhí)行:

service nginx restart
然后就可以根據(jù)域名(前提是要將域名解析到服務(wù)器ip地址)或者服務(wù)器ip來訪問網(wǎng)站了!

OK,完事!就是這么簡單!

參考資料:
劉江的博客
博客園
知乎問答
無名Blog
自強(qiáng)學(xué)堂Django教程
Django文檔
empty_xl Blog

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容