項目開發完畢後,須要將代碼放到服務器上,這樣用戶才能訪問。接下來咱們一步一步來進行一波部署操做。html
項目開發完畢,在部署以前須要再配置文件中將 ALLOWED_HOSTS配置設置爲:當前服務器IP或*,如:node
1
|
ALLOWED_HOSTS
=
[
"*"
,]
|
示例源碼:猛擊下載python
而後將源碼上傳至服務器指定目錄,如:/data/ ,而後執行命令來運行:nginx
注: 上傳命令: scp /Users/wupeiqi/PycharmProjects/oldboy-1.zip root@192.168.10.33:/data/django
解壓,進入目錄並執行如下命令:vim
1
|
python3 mange.py runserver
0.0
.
0.0
:
8000
|
Django框架運行依賴wsgi(本質提供socket服務端),衆多模塊實現了wsgi規範,而django框架中默認使用wsigiref模塊來實現,他因爲性能比較低,因此用於本地開發和測試,而線上部署時須要使用uwsgi來代替。bash
a. 在服務器上安裝uwsgi服務器
1
|
pip3 install uwsgi
|
b. 單文件使用uwsgiapp
在服務器上編寫一個Python文件:負載均衡
1
2
3
|
def
application(env, start_response):
start_response(
'200 OK'
, [(
'Content-Type'
,
'text/html'
)])
return
[b
"Hello World"
]
|
在服務器上執行命令啓動Web服務器:
1
2
3
|
uwsgi
-
-
http :
9001
-
-
wsgi
-
file
app.py
# 或
uwsgi
-
-
http :
9002
-
-
wsgi
-
file
foobar.py
-
-
master
-
-
processes
4
|
訪問查看便可:
c. django程序使用uwsgi
將開發好的django程序拷貝到服務器目錄【同示例一】,即:/data/oldboy ,執行命令啓動:
1
|
uwsgi
-
-
http :
9005
-
-
chdir
/
data
/
oldboy
/
-
-
wsgi
-
file
oldboy
/
wsgi.py
-
-
master
-
-
processes
4
|
1. 建立配置文件 oldboy.ini [uwsgi] http = 0.0.0.0:9005 chdir = /data/oldboy/ wsgi-file = oldboy/wsgi.py processes = 4 static-map = /static=/data/oldboy/allstatic 2. 根據配置文件啓動uwsgi uwsigi --ini oldboy.ini
PS: 若是有虛擬環境能夠添加上虛擬環境路徑配置: virtualenv
=
/env
/oldboy
_venv
此時訪問時,會出現找不到靜態文件的錯誤。
想要uwsgi處理靜態文件,須要先將django的靜態文件收集到制定目錄,而後再設置對應關係。
訪問地址,便可看到你的女友們了....
利用Nginx作反向代理、負載均衡以及處理靜態文件。
a. 安裝Nginx
1
|
yum install nginx
|
b. 配置nginx
user root; worker_processes 4; error_log /var/log/nginx/error.log; pid /var/run/nginx.pid; events { worker_connections 1024; } http { log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; include /etc/nginx/mime.types; default_type application/octet-stream; upstream django { server 127.0.0.1:8001; # server 192.1.123.1; } server { listen 80; charset utf-8; # max upload size client_max_body_size 75M; location /static { alias /data/oldboy/allstatic; } location / { uwsgi_pass django; include uwsgi_params; } } }
確保nginx配置文件目錄下有uwsgi_params文件(默認)
c. 配置uwsgi
爲了確保讓全部請求均經過80端口來訪問網站,將uwsgi的配置文件修改成:
1
2
3
4
5
6
|
[uwsgi]
socket
=
127.0
.
0.1
:
9005
chdir
=
/
data
/
oldboy
/
wsgi
-
file
=
oldboy
/
wsgi.py
processes
=
4
logto
=
/
tmp
/
oldboy.log
|
d. 啓動uwsgi和nginx
1
2
3
|
uwsgi --ini
/data/oldboy/oldboy
.ini &
/etc/init
.d
/nginx
start
|
supervisor是一個對進程管理的軟件,能夠幫助咱們啓動uwsgi並維護(uwsgi進程關閉時,自動將其啓動起來)。
a. 安裝
1
|
yum
install
supervisor
|
b. 配置 vim /etc/supervisor.conf
c. 啓動
1
2
3
|
supervisord
/etc/supervisor
.conf
或
/etc/init
.d
/supervisor
start
|