Django專案部署上線

2021-08-24 20:50:14 字數 4114 閱讀 5475

包壓縮技巧:( zip / unzip linux 下的zip檔案的壓包和解包命令 )

tar -cjvf python3.6_env.tar.bz2 python3.6_env/

tar xjvf python3.6_env.tar.bz2

一。壓縮拷貝**:

(1)進入工程主目錄

cd shdjangolesson

(2)產生依賴庫 pip freeze > requirements.txt

(3)壓縮

​ cd shdjangolesson

zip -r shdjangolesson.zip shdjangolesson/

二。遠端拷貝

伺服器端(ubuntu):

nc -l 11111 > shdjangolesson.zip

客戶端:

nc ip 11111 < shdjangolesson.zip

三。配置環境, 解壓

python依賴的環境: python3.5 或者 python3.6

安裝並配置虛擬環境: virtualenv –no-site-packages venv -p /usr/bin/python3.6

source venv/bin/activate

進入虛擬環境

pip install -r requirements.txt

檢視環境依賴:pip list

四。啟動服務

確認redis, mysql安裝良好,能訪問

setings.py 中 allows = [『*』]

啟動服務

python manage.py runserver 0.0.0.0:8000

(無問題情況,在後台執行:

nohup python manage.py runserver 0.0.0.0:8000 &

備註:

如果出現如下問題:

djangoueditor modulenotfounderror: no module named 『widgets』

解決方案:

(2)修改djangoueditor下的views.py中的240行,新增:

建立目錄conf.d, 並新增如下資訊到project.conf:

proxy_next_upstream error;

server

location /

# error_page 404 /404.html;

# redirect server error pages to the static page /50x.html

# error_page 500

502503

504 /50x.html;

location = /50x.htlml

}重啟nginx服務,生效。

通過以上的配置資訊,基本已經完成了nginx + gunicorn + django的配置

測試: 可以看到專案的效果圖

​ supervisor管理程序,是通過fork/exec的方式將這些被管理的程序當作supervisor的子程序來啟動,所以我們只需要將要管理程序的可執行檔案的路徑新增到supervisor的配置檔案中就好了。此時被管理程序被視為supervisor的子程序,若該子程序異常終端,則父程序可以準確的獲取子程序異常終端的資訊,通過在配置檔案中設定autostart=true,可以實現對異常中斷的子程序的自動重啟。

(1)安裝supervisor

上述方法我們直接管理gunicorn,讓它啟動和暫停,現在我們希望採用supervisor來管理gunicorn

(2)配置supervisor

將supervisor設定為管理啟動監控 gunicorn

新增檔案 /etc/supervisor/conf.d/xs.conf ,配置資訊如下

programs=xs-1, xs-2

[program:xs-1]

autorestart=true

redirect_stderr=true

stdout_logfile=log/xs1.log

loglevel=info

stopsignal=int

[program:xs-2]

autorestart=true

redirect_stderr=true

stdout_logfile=log/xs2.log

loglevel=info

stopsignal=int

建立log資料夾,存放日誌檔案

修改 /etc/supervisor/supervisord.conf 檔案:

在nginx配置檔案project.conf (或 xs.conf檔案 )中加入如下資訊

#ip_hash; or 輪詢(預設) or url_hash

server 127.0.0.1:8001;

server 127.0.0.1:8002;

} server }

新增好上述配置資訊後

(1)啟動nginx

(2)通過supervisor啟動gunicorn

注意: 先確認gunicorn 程序是否已啟動

ps -ef | grep gunicorn

ps -ef | grep supervisor

supervisord -c supervisor.conf # 建議複製/etc/supervisor/supervisord.conf 到 專案所在位置

或 supervisord -n 啟動, 預設conf檔案是/etc/supervisor/supervisord.conf

頁面通過進行頁面訪問,**效果。

​ 綜合上述,nginx做反向**和負載均衡,將請求upstream**給乙個supervisor監管的gunicorn程序,而gunicorn程序拖管了django工程**。

至此,nginx + gunicorn + supervisor + django 線上環境部署都已經完成!

supervisord常用命令

supervisord : 啟動supervisor, -h 檢視幫助

supervisorctl reload :修改完配置檔案後重新啟動supervisor

supervisorctl status :檢視supervisor監管的程序狀態

supervisorctl start 程序名 :啟動***程序

supervisorctl stop 程序名 :停止***程序

supervisorctl stop all:停止全部程序,注:start、restart、stop都不會載入最新的配置檔案。

supervisorctl update:根據最新的配置檔案,啟動新配置或有改動的程序,配置沒有改動的程序不會受影響而重啟

解決 「error: cannot open an http server: socket.error reported errno.eacces (13)」 錯誤:

主要是supervisor.socket檔案的許可權問題, 可以調整它的位置,或設定它們的許可權。

Django專案部署

專案部署 1 獲取專案開發時的環境 pip freeze plist.txt2 建立python虛擬環境 sudo apt get install python virtualenv python setuptools包裡的乙個命令,所以只要安裝python setuptools就可以了。sudo ...

Django專案部署

django專案部署 settings.py allowed hosts 伺服器ip python manage.py runserver 0.0.0.0 8001 django遵循的wsgi協議 wsgiref效能低 正式部署採用uwsgi,效能較高 pip3 install uwsgi wsgi...

thinkjs antd專案部署上線

感謝內容提供者 金牛區吳迪軟體開發工作室 第一步 將 提交到遠端倉庫,而後服務端進行拉取 第二步 將服務端 和前端 進行打包 第三步 啟動服務和前端專案 前端 統一處理請求位址 request 網路請求工具 更詳細的 api 文件 import from umi request import mom...