(小編的環境為python3.6,django==2.1.2)
Gunicorn是一個unix上被廣泛使用的高性能的Python WSGI UNIX HTTP Server(即一種服務器)。和大多數的web框架兼容,並具有實現簡單,輕量級,高性能等特點。
Nginx是一個高性能的靜態服務器,支持負載均衡,多進程,多線程,數據壓縮,日志監控,限流等多種功能。是目前比較主流的服務器
1. gunicorn是一個python Wsgi http server, 只支持Unix系統上(Linux來源於Unix)運行
pip install gunicorn
2. gunicorn基本配置方法
(在項目的根目錄下創建一個conf.py文件,代碼如下:)
import multiprocessing
bind = '127.0.0.1:8001'
workers = multiprocessing.cpu_count() * 2
worker_class = 'gevent' (配置前先安裝 pip install gevent)
3. Gunicorn部署后靜態文件的調整(即需對項目根目錄下的urls.py文件修改)
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
from django.urls import path, include
from app.client import urls as client_urls
from app.dashboard import urls as dashboard_urls
urlpatterns = [
path('client/', include(client_urls)),
path('dashboard/', include(dashboard_urls)),
]
urlpatterns += staticfiles_urlpatterns()
3. Gunicorn啟動服務
gunicorn --config=conf.py config.wsgi:application
4. 利用supervisor做服務器進程管理
supervisor是用python開發的一套通用的進程管理程序,能將一個普通的命令行進程變為后台daemon,並監控進程狀態,異常退出時能自動重啟
pip install supervisor(似乎要安裝在非虛擬環境外)
安裝好后在/etc/會生成一個supervisord.conf文件及一個supervisord.d文件目錄,默認是沒有生成配置文件的, 可以通過以下命令生成配置文件,執行以下命令來生成配置文件及文件夾:
echo_supervisord_conf > /etc/supervisord.conf(該命令似乎只能在root權限下使用, 小編使用sudo無效)
mkdir /etc/supervisord.d
接下來對/etc/supervisord.conf文件進行修改:
files是將某個文件導入進來,這里導入的是自己項目的supervisor配置文件
5. 配置supervisor,書寫/etc/supervisord.d/*.conf所匹配到的文件代碼,代碼內容如下:
(注意*.conf是你自己定義的文件名稱,如小編命名為muke_video.conf,這是你的supervisor配置文件,即小編的路徑為/etc/supervisord.d/muke_video.conf)
[program:muke_video] # 項目名稱
directory=/Users/zhangdewei/muke/python/django/lessions/lession8/muke_video_test/video
# 項目執行的目錄
command=/Users/zhangdewei/muke/python/django/env/bin/gunicorn --config=conf.py config.wsgi:application
# 要執行的命令
autostart=true
autorestart=true
# 遇到程序異常、報錯等情況,導致 web 應用終止時,需要保證程序可以立刻重啟,繼續提供服務
startsecs=1
# 1s后啟動
numprocs=1
# 啟動1個進程
stderr_logfile=/Users/zhangdewei/muke/python/django/lessions/lession8/err-web.log
stdout_logfile=/Users/zhangdewei/muke/python/django/lessions/lession8/out-web.log
stopasgroup=true
killasgroup=true #默認為false
// [supervisord]
// nodaemon=true
// [supervisorctl]
6. 啟動supervisor
supervisord -c /etc/supervisord.conf (運行結果如下圖:)
7. 查看supervisor服務狀態
supervisorctl ->進入控制台
通過status查看服務狀態,通過restart/stop/start/muke_video 對服務重啟,關閉和重啟。
運行成功后,即可訪問自己的項目:如:127.0.0.1:8001/dashboard(其中127.0.0.1:8001是由conf.py文件配置的,見步驟2,如果你的項目是在虛擬機中啟動的,那么就用虛擬機中的瀏覽器訪問自己的項目)