在之前的文章中,我們講過使用nginx和gunicorn來部署**,如果已經成功完成了前兩步,那麼你的**已經可以通過網域名稱或者ip進行訪問了。
但是,你會注意到,在gunicorn的啟動後,它會一直在伺服器上掛著,如果你關閉頁面,或者伺服器重啟崩潰等,就會導致gunicorn不再執行,可以嘗試在後台啟動gunicorn,但是也有可能在伺服器崩潰後,無法自行啟動,下面,我們使用乙個軟體,supervisor來為我們執行啟動的和維持的功能。
安裝在虛擬環境下,執行:
pip install supervisor
建立surpervisor的管理目錄
建立乙個~/etc的目錄:(注意,這個目錄名字很像ubuntu系統下的/etc,但是不是,請注意這個 ~/etc的目錄是在/home/user下的乙個路徑,不要搞錯)
mkdir ~
/etc
繼續建立
mkdir -p ~
/etc/supervisor/conf.d
mkdir -p ~
/etc/supervisor/var/log
然後,進入~/etc目錄:
cd ~
/etc
生成 supervisor 的配置檔案:
echo_supervisord_conf > supervisord.conf
修改 supervisord.conf,讓 supervisor 程序產生的一些檔案生成到上面我們建立的目錄下,而不是其預設指定的地方:
vim supervisord.conf
首先找到 [unix_http_server] 版塊,將 file 設定改為如下的值:
file
=/home/user/etc/supervisor/var/supervisor.sock
修改 [supervisord] 板塊下的 logfile 和 pidfile 檔案的路徑,還有 user 改為系統使用者:
logfile=
/home/user/etc/supervisor/var/log/supervisord.log
pidfile=
/home/user/etc/supervisor/var/supervisord.pid
user=user#user前面如果有;,去掉;
還有 [supervisorctl] 板塊下:
serverurl=unix:
///home/user/etc/supervisor/var/supervisor.sock
[include] 版塊:
files =
/home/user/etc/supervisor/conf.d/
*.ini#去掉include和files前面的;號
ok後,:wq儲存退出。
接下來,進入conf.d:
cd supervisor/conf.d
vim blog.ini
建立 blog.ini檔案,並寫入:
[program:blog]
#程式名稱
command=gunicorn -
-bind unix:
directory=
/home/user/
+專案路徑
autostart=true
autorestart=unexpected
user=user
stdout_logfile=
/home/user/etc/supervisor/var/log/blog-stdout.log
stderr_logfile=
/home/user/etc/supervisor/var/log/blog-stderr.log
#log 為日誌,後面supervisor啟動出錯的話,可以cat+日誌檢視報錯原因
注意,以上注釋,不需要填入檔案中,可能會引起錯誤,完成後:wq儲存退出
啟動surpervisor:
supervisord -c ~
/etc/supervisord.conf #-c 指定 supervisr 啟動時的配置檔案
supervisorctl -c ~
/etc/supervisord.conf #進入 supervisorctl 程序管理控制台:
進入後,輸入update,進行更新,後輸入quit,退出
這樣,就可以在瀏覽器中輸入你的網域名稱或者ip了,首頁就出現了 Django部署問題
1.專案settings.py中須有如下設定 base dir os.path.dirname os.path.dirname os.path.abspath file debug true allowed hosts 靜態檔案路徑 static url static static root os....
Django 環境部署
命令列輸入 python m venv 11 env windows系統 啟用虛擬環境 11 env scripts activate停止使用虛擬環境 deactivate安裝django pip install djangodjango中建立專案 django admin.py startproj...
部署django應用
django開發時只需要python就能完成,利用其自帶的開發服務,可以方便在開發環境執行起應用,但部署於生產時則需要一些額外的操作。首先是配置的修改,settings.py裡有些最小配置需要修改 static root os.path.join os.getcwd static allowed h...