環(huán)境:
python3.6
centos 7
Django1.11
用Django寫了個(gè)小網(wǎng)站,只能在自己本地跑一跑!這怎么行?聽說可以部署在云服務(wù)器上,這樣別人就可以訪問了!
從哪兒開始?就從Django開始吧!老規(guī)矩,按步驟:
1、本地跑起來Django
這里不講Django項(xiàng)目實(shí)施過程,假設(shè)你已經(jīng)寫了一個(gè)Django項(xiàng)目,并且在本地127.0.0.1:8000能夠跑起來。喏,給你個(gè)參考,項(xiàng)目大概長這樣:
- kindle目錄為我創(chuàng)建的Django App
2、修改項(xiàng)目配置
也就是項(xiàng)目目錄下的settings.py文件,主要強(qiáng)調(diào)幾個(gè)地方:
①關(guān)閉DEBUG模式:
②修改ALLOWED_HOSTS:
③配置靜態(tài)文件存放路徑:
修改好配置之后執(zhí)行:
將項(xiàng)目用到的靜態(tài)文件復(fù)制到項(xiàng)目根目錄下的static文件中python manage.py collectstatic
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里進(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
OK,完事!就是這么簡單!
然后就可以根據(jù)域名(前提是要將域名解析到服務(wù)器ip地址)或者服務(wù)器ip來訪問網(wǎng)站了!
嗯
參考資料:
劉江的博客
博客園
知乎問答
無名Blog
自強(qiáng)學(xué)堂Django教程
Django文檔
empty_xl Blog