使用寶塔面闆的python項目管理器部署django項目
- 部署方式
-
- 系統環境
- Django項目結構
- 前期準備
- 開始部署
-
- 1.至此資料庫準備已經完成。接下來上傳本地的Django項目,預設上傳到/www/wwwroot/目錄下
- 2.上傳完成後在settings.py将debug改為False ,database配置為剛才記錄的資料庫名 使用者名和密碼可以直接在寶塔面闆裡編輯。
- 3.打開寶塔裡已經安裝好的python項目管理器,在版本管理裡先安裝所需的python版本,我這用的是3.7.2,注意:python項目管理器所安裝的python版本和各種依賴子產品都是在虛拟環境中,全局shell裡調用不了。
- 4.安裝好python版本後,在項目管理中添加項目,根目錄和運作目錄都是所上傳的項目根目錄,項目名和上傳的檔案夾名字一緻![添加項目](https://img-blog.csdnimg.cn/20191108101520863.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2FzZGE1NDE=,size_16,color_FFFFFF,t_70)
- 5.搞定子產品後,先暫停正在運作的python項目,還有一些坑在這裡。如圖在寶塔檔案任意位置進入寶塔終端,切換到項目根目錄,啟用項目虛拟環境
- 6.回到python項目管理器,點選“配置”,再最下方加上
- 7.最後開始配置nginx反向代理,寶塔裡可以很容易實作。
- 最後是收尾工作
部署方式
nginx+uwsgi+python3.7.2+django2.2+mysql5.7 -----使用寶塔面闆快速部署
系統環境
- 騰訊雲伺服器,1核2g centos7.6 安全組全部放行(按需求,寶塔需要的端口和Django的8000端口一定要放行,部署完後可以再關8000端口);
- 寶塔面闆7.0.2 LNMP方式 mysql5.7(新版寶塔已經可以安裝8.0,根據調試環境的mysql版本選擇) nginx1.17.1 python項目管理器1.5 ;
- django2.2;
Django項目結構
此次主要是示範寶塔面闆部署python項目,是以我隻建了一個基本的Django項目 内含一個app,一個html和一些css js檔案。
基本結構如圖
這裡項目名Absolute和app名myblog都是随便取的 無實際意義,templates是自己建立來存放網頁檔案,static是用來收集靜态檔案的,具體下文會交代,
前期準備
1.因為用了mysql資料庫 是以要将mysql資料表結構導出到sql檔案,上傳至寶塔,并在寶塔上生成資料庫
輸入指令:mysqldump -uroot -p test2>test2.sql
輸入密碼後導出成功 注意這裡的test2是目前項目使用的資料庫名 根據實際情況填寫,導出到同名的sql檔案中
2.收集項目的靜态檔案至項目根目錄下的static檔案夾中,具體操作步驟請參考
Django收集靜态檔案
3.在寶塔建立資料庫 步驟如圖
(1)在寶塔裡添加資料庫,注意資料庫名和使用者名不能為root,記錄使用者名和資料庫名和密碼(test2,test2,123456)
(2)從本地上傳剛才導出的sql檔案
(3)導入上傳好的檔案
開始部署
1.至此資料庫準備已經完成。接下來上傳本地的Django項目,預設上傳到/www/wwwroot/目錄下
ps:寶塔的上傳有時候不太穩定,可以選擇用ftp工具上傳到同目錄下
2.上傳完成後在settings.py将debug改為False ,database配置為剛才記錄的資料庫名 使用者名和密碼可以直接在寶塔面闆裡編輯。
3.打開寶塔裡已經安裝好的python項目管理器,在版本管理裡先安裝所需的python版本,我這用的是3.7.2,注意:python項目管理器所安裝的python版本和各種依賴子產品都是在虛拟環境中,全局shell裡調用不了。
4.安裝好python版本後,在項目管理中添加項目,根目錄和運作目錄都是所上傳的項目根目錄,項目名和上傳的檔案夾名字一緻
如果沒有requirements.txt 可以在項目頁面的“子產品”裡手動添加所需子產品,比如我這個項目隻用了Django和pymsql,而在開發環境又沒有用虛拟環境,全局環境裡很多不必要的包,就沒導出requirements,導出requirement.txt參考
python項目導出requirements.txt
5.搞定子產品後,先暫停正在運作的python項目,還有一些坑在這裡。如圖在寶塔檔案任意位置進入寶塔終端,切換到項目根目錄,啟用項目虛拟環境
cd /www/wwwroot/Absolute/
source ./Absolute_venv/bin/activate
python3 manage.py runserver
此時會報錯
解決辦法:
ctrl+c退出目前運作狀态
終端輸入
vi /www/wwwroot/Absolute/Absolute_venv/lib/python3.7/site-packages/django/db/backends/mysql/base.py
将代碼
if version < (1, 3, 13):
raise ImproperlyConfigured('mysqlclient 1.3.13 or newer is required; you have %s.' % Database.__version__)
注釋掉 esc+:wq 儲存退出
再輸入
vi /www/wwwroot/Absolute/Absolute_venv/lib/python3.7/site-packages/django/db/backends/mysql/operations.py
将第146行的代碼
修改為
再儲存退出 此時執行
python3 manage.py runserver
就正常了,調試完畢,接下來開始配置uwsgi
6.回到python項目管理器,點選“配置”,再最下方加上
static-map = /static=/www/wwwroot/Absolute/static
儲存後點“重新開機”重新開機項目
在浏覽器位址欄裡輸入 伺服器公網IP:8000 剛才部署的項目已經可以通過ip和端口通路了
這裡如果沒有正常通路的同學請檢查以下幾項配置
(1)是否收集靜态檔案至static
(2)DEBUG是否關閉
(3)寶塔面闆-安全裡是否放行了8000端口
(4)雲伺服器安全組裡是否放行了8000端口
(5)靜态檔案路徑是否有錯誤,包括在html裡的引入要以/static/x x x x開頭的絕對路徑
7.最後開始配置nginx反向代理,寶塔裡可以很容易實作。
(1)在項目管理點選“映射”,輸入已經提前解析到此伺服器的域名
(2)在“網站“裡找到剛才生成的項目,在”設定“裡找到”反向代理“,點選”配置檔案“
(3)在配置檔案裡添加如下代碼
location /static/
{
alias /www/wwwroot/Absolute/static/;
}
注意路徑、縮進和插入位置
儲存後回到python項目管理器 手動重新開機項目
在浏覽器輸入剛才映射的域名 項目已經可以正常通路啦
最後是收尾工作
将寶塔面闆-安全裡放行的8000端口删除,這樣别人隻能通過域名通路網站,不能通過IP:端口來通路了。
雲服務安全組裡的8000端口可以不删,因為一台伺服器可能會部署多個Django項目,每次都要重新開很麻煩