ubuntu16安裝Django + nginx後臺執行
安裝Django (2.1.3)
請確保已安裝python3、pip3
pip3 install django #安裝django
----------以下命令是建立django專案----------------
mkdir ~/django # 建立目錄
cd ~/django
virtualenv venv #在~/django目錄下,建立一個venv的虛擬環境
source venv/bin/activate #開啟虛擬環境
pip install django #用pip工具線上安裝Django
mkdir ~/workplace #建立工作目錄
cd ~/workplace
django-admin.py startproject helloworld #建立一個django專案
cd ~/helloworld
----------
補充說明:
pip :是一個安裝python索引包的工具(pip is a tool for installing Python package from the Python Package Index)
virtualenv :是一個建立獨立python環境的工具(is a tool to create isolated Python environments)(使用情景:不同專案需要不同的版本,而不同的專案都在同一臺電腦上開發或執行,這就需要在每個專案下建立一個獨立的虛擬環境)。
測試 >> 使用雲服務(外網IP)
python manage.py runserver 0.0.0.0:8000
測試 >>使用雲服務(內網)
python manage.py runserver 120.0.0.1:8000
安裝uwsgi
python3 -m pip install uwsgi
或
pip3 install uwsgi
- uwsgi 常用選項
http : 協議型別和埠號
processes : 開啟的程式數量
workers : 開啟的程式數量,等同於processes(官網的說法是spawn the specified number ofworkers / processes)
chdir : 指定執行目錄(chdir to specified directory before apps loading)
wsgi-file : 載入wsgi-file(load .wsgi file)
stats : 在指定的地址上,開啟狀態服務(enable the stats server on the specified address)
threads : 執行執行緒。由於GIL的存在,我覺得這個真心沒啥用。(run each worker in prethreaded mode with the specified number of threads)
master : 允許主程式存在(enable master process)
daemonize : 使程式在後臺執行,並將日誌打到指定的日誌檔案或者udp伺服器(daemonize uWSGI)。實際上最常用的,還是把執行記錄輸出到一個本地檔案上。
pidfile : 指定pid檔案的位置,記錄主程式的pid號。
vacuum : 當伺服器退出的時候自動清理環境,刪除unix socket檔案和pid檔案(try to remove all of the generated file/sockets)
-M 開啟Master程式
-p 4 開啟4個程式
-s 使用的埠或者socket地址
-d (後臺執行)使用daemon的方式執行, 注意, 使用-d後, 需要加上log檔案地址, 比如-d /var/log/uwsgi.log
-R 10000 開啟10000個程式後, 自動respawn下
-t 30 設定30s的超時時間, 超時後, 自動放棄該連結
–limit-as 32 將程式的總記憶體量控制在32M
-x 使用配置檔案模式
test.py
def application(env, start_response):
start_response('200 OK', [('Content-Type','text/html')])
return "Hello World"
測試 >> 雲服務外網訪問
sudo uwsgi --http 0.0.0.0:8000 --wsgi-file test.py
測試 >> 內網訪問
sudo uwsgi --http 127.0.0.1:8000 --wsgi-file test.py
這樣啟動django專案服務就多了一個
uwsgi --http :8001 --file website/wsgi.py
使用配置檔案,在django專案目錄下建立uwsgi.ini並寫入;建議使用單獨放在一下資料夾script中
# uwsig使用配置檔案啟動
[uwsgi]
# 專案目錄
chdir=/var/local/www/website
# 指定專案的application
module=website.wsgi:application
# 指定sock的檔案路徑
socket=/var/local/www/website/script/uwsgi.sock
# 程式個數
workers=5
pidfile=/var/local/www/website/script/uwsgi.pid
# 指定IP埠
http=127.0.0.1:8888
# 指定靜態檔案
static-map=/static=/var/local/www/website/static
# 啟動uwsgi的使用者名稱和使用者組
uid=root
gid=root
# 啟用主程式
master=true
# 自動移除unix Socket和pid檔案當服務停止的時候
vacuum=true
# 序列化接受的內容,如果可能的話
thunder-lock=true
# 啟用執行緒
enable-threads=true
# 設定自中斷時間
harakiri=30
# 設定緩衝
post-buffering=4096
# 設定日誌目錄
daemonize=/var/local/www/website/script/uwsgi.log
啟動,之後可使用nginx增強動態處理能力
sudo uwsgi --ini script/uwsgi.ini
如果訪問超時建議換個埠試試。
啟用並一切正常訪問後會生成以下幾個檔案可供nginx服務使用
- uwsgi.log
- uwsgi.pid
- uwsgi.sock //重要
安裝nginx (當前安裝版本1.10.3)
sudo apt-get install nginx
配置django.conf
server {
listen 80; # 我要監聽那個埠
server_name 127.0.0.1; # 你訪問的路徑前面的url名稱
#access_log /var/log/nginx/access.log main; # Nginx日誌配置
charset utf-8; # Nginx編碼
gzip_types text/plain application/x-javascript text/css text/javascript application/x-httpd-php application/json text/json image/jpeg image/gif image/png application/octet-stream; # 支援壓縮的型別
error_page 404 /404.html; # 錯誤頁面
error_page 500 502 503 504 /50x.html; # 錯誤頁面
# 指定專案路徑uwsgi
location / {
include uwsgi_params; # 匯入一個Nginx模組他是用來和uWSGI進行通訊的
uwsgi_connect_timeout 30; # 設定連線uWSGI超時時間
uwsgi_pass unix:/var/local/www/website/script/uwsgi.sock; # 指定uwsgi的sock檔案所有動態請求就會直接丟給他
}
# 指定靜態檔案路徑
location /static/ {
alias /var/local/www/website/static/;
index index.html index.htm;
}
}
Django + Uwsgi + Nginx 的結合
相關文章
- foreman ubuntu16快速安裝REMUbuntu
- CentOS 7 下安裝 nginx + PHP 執行環境CentOSNginxPHP
- ubuntu16 安裝mysql5.7UbuntuMySql
- Linux後臺執行Linux
- shell後臺執行
- 執行python指令碼後臺執行Python指令碼
- Mysql初次安裝執行後重設密碼MySql密碼
- Ubuntu16環境安裝和使用NFSUbuntuNFS
- ubuntu16安裝pymesh2的方法Ubuntu
- 超順 | Ubuntu16 安裝配置aws gpuUbuntuGPU
- django安裝Django
- Linux 後臺執行命令Linux
- 後臺執行緒(daemon)執行緒
- jenkins後臺程式執行Jenkins
- 基於Ubuntu16.04的django+uwsgi+nginx安裝部署UbuntuDjangoNginx
- 純淨Ubuntu16安裝CUDA(9.1)和cuDNNUbuntuDNN
- Linux 下後臺執行和按照守護程式方式後臺執行的坑Linux
- Kibana安裝與執行
- 安裝NginxNginx
- nginx安裝Nginx
- Nginx 安裝Nginx
- maven3.6.0安裝後執行mvn -v出現no goalsMavenGo
- windows的nohup後臺執行Windows
- Linux jar包 後臺執行LinuxJAR
- 安裝Laravel後臺生成框架Laravel框架
- Linux nohup:後臺不掛起命令(後臺執行命令)Linux
- Alpine容器安裝執行ssh
- [linux] 使用Screen後臺執行命令Linux
- 使用screen後臺執行任務
- mysql後臺執行緒詳解MySql執行緒
- Linux程式後臺執行實踐Linux
- 後臺執行SQL語句(oracle)SQLOracle
- 讓.py程式後臺執行(Linux)Linux
- Mac Redis 服務後臺執行MacRedis
- Linux 後臺執行 PHP 指令碼LinuxPHP指令碼
- docker安裝nginxDockerNginx
- Unbuntu nginx 安裝Nginx
- Linux安裝NginxLinuxNginx