本篇內容主要參考:使用寶塔快速部署Django項目
文章,這篇文章在過程有些遺漏和補全的地方,在這里進行補充來做記錄
python版本:3.7.2
服務器系統:centos8
django版本:3.0.3
一、服務器安裝寶塔面板并進行基礎設置
寶塔面板有很多實用的功能,具體可以去寶塔官網查看。我們的服務器使用的是 centos8 的系統,所以安裝 linux 免費版的寶塔。
安裝方法很簡單,遠程到服務器,輸入命令進行安裝即可
# 安裝命令
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh
中途會有一次確認,按照操作提示輸入 y 即可。
安裝成功后,控制臺會顯示出寶塔面板的登錄地址、用戶名、密碼。如下圖所示,將內容記錄好。
進行登錄后,會提示推薦安裝套件,直接關閉即可。然后點擊左側菜單欄中的面板設置,調整面板的 端口、安全入口、用戶名及密碼。修改完成后,記得點擊最下方的保存。
注:安全入口:是拼接在登錄地址之后的。之前系統會自動設置一個隨機字符,更改安全入口后,將登錄地址中的隨機字符換成你更改后的內容。例如:安裝后的登錄地址為: http://10.10.10.10:8888/f5165b61 修改安全入口的內容為: /btmb 以后寶塔面板的登錄地址變為:http://10.10.10.10:8888/btmb
二、安裝環境包
寶塔的基礎設置搞完了,接下來我們安裝環境部署的一些必要軟件程序:python、nginx、mysql(如果用到了就安裝)
注意:這里我們用的是Django3的版本,從Django2.0起就不支持mysql5.5了,所以這里要安裝高版本的mysql,推薦mysql5.6
在寶塔左側菜單欄 點擊 軟件商店,第一頁我們就可以看到nginx,點擊安裝選擇急速安裝即可。
與此同時,我們選擇 寶塔插件 類別,在該類別下 選擇 Python項目管理器 進行安裝
安裝成功后,會有一個 首頁顯示 的開關,我們打開這個開關,記得nginx也要打開這個哦。這個時候 我們在首頁就可以看到了,因為后面我們會經常使用,所以最好要展示在首頁。
接下來,我們該安裝 python 了,在首頁點擊 python項目管理器,會出現一個彈窗,點擊版本管理,選擇一下你項目開發時使用的 python 版本。我使用的是 python 3.6.5 所以我安裝這個版本。
注:python 2.7.5 顯示已安裝,這是系統自帶的,我們不用管他。
三、上傳項目文件并創建python項目
在上傳項目文件的時候,我們需要先配置好項目所有的環境依賴包,所以,在本地開發的時候建議使用虛擬環境,這樣我們創建依賴文件的時候,能減少引入一些不必要的包。在本地項目環境目錄中(如果是虛擬環境,需要激活虛擬環境再進入項目目錄)【django項目目錄,即是在manage.py文件所處的路徑】輸入下方命令
pip freeze > requirements.txt
# 注意當前是 pip 還是 pip3
會生成一個 requirements.txt 文件,里面就會包含我們當前環境下所有的python包。
接下來,打開寶塔面板,點擊 文件 ,此時注意路徑需要在/www/wwwroot/下
點擊上傳按鈕,選擇目錄,將我們項目的整個目錄都上傳上來(可以不用上傳venv目錄,這個是虛擬環境目錄,會自動生成)。 我的項目在電腦路徑為D:/xzbcx_1.11,此時上傳就選擇django_test目錄。上傳彈窗需要加載一會才能展示出文件,之后點擊彈窗底部的開始上傳,在右上角有一個進度條,等上傳完成后就可以關閉該彈窗。
項目文件大的話上傳時間就會比較長,是的,我上傳了三十多分鐘。
好了,現在我們開始創建 python 項目。打開首頁的 python 項目管理器,點擊 添加項目。填充數據:
項目名稱: 自定義就行,你開心就好
路徑: 定位到項目目錄即可
Python 版本: 選擇你項目對應的 python 版本
框架: 選擇 django
啟動方式: uswgi(自測了一下只有uswgi啟動方式可行,其他的都沒用,添加后服務啟動不起來,除非自己去服務器手動啟動)
啟動文件/文件加: 定位到 wsgi.py 所在的路徑
端口: 自定義就行,你開心就好,注意不要和系統端口沖突,設置1024端口號之后的,不然就算你開心也沒用。
勾選上 是否安裝模塊依賴 與 開機啟動
點擊確定,然后等待創建。
設置配置文件
注意: 選擇的框架是 django 的時候,不需要設置
創建成功后,點擊配置,增加一行wsgi.py的位置
wsgi-file = 你的文件路徑
四、創建并同步數據庫
在寶塔面板左邊菜單選擇數據庫,然后添加一個數據庫:
創建完數據庫后,把你項目中的數據庫導出然后上傳。如果你不從本地同步數據庫導入,也可以直接在服務器上根據django規則來重新生成數據庫。生成數據庫步驟如下:
- 打開寶塔SSH終端
- 定位到項目目錄
cd /var/www/wwwroot/xxx
- 進入虛擬環境
source xxx_venv/bin/activate
- 同步數據庫
python manage.py makemigrations
python manage.py migrate
創建完數據庫之后,寶塔會自動生成用戶名和一個隨機密碼
為了能連接數據庫,這個時候需要把項目中的數據庫配置修改一下。進入setting.py文件進行編輯,將下面的NAME
、USER
和PASSWORD
修改成上圖中的對應值之后保存。
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': '數據庫名稱',
'USER': '用戶名',
'PASSWORD': '數據庫密碼',
'HOST': '',
'PORT': ''
}
}
五、檢查項目是否運行成功
經過上面的操作之后,項目已經在本地服務器運行起來了,這個時候先檢查一下項目運行的狀況,是否有報錯。
在面板中Python項目管理器 ,點擊右側的日志選項,查看你項目的運行狀況,我這邊項目的日志如下:
發現有報錯,查閱資料發現是Django2.2之后內部的一個版本限制在作怪,相關文章在這里查看,解決方案如下:
- 找到
venv(虛擬環境路徑)/lib/python/site-packages/django/db/backends/mysql/base.py
- 注釋掉下面兩行代碼
version = Database.version_info
# if version < (1, 3, 13):
# raise ImproperlyConfigured('mysqlclient 1.3.13 or newer is required; you have %s.' % Database.__version__)
- 重啟python項目
繼續觀察日志,直到沒有新的報錯日志出現就說明項目運行成功了!
五、關閉DEBUG模式,調整靜態設置
現在我們通過 側邊欄 文件 菜單 進入項目文件,找到 setting.py 文件,進行編輯。
DEBUG模式設置為False,ALLOWED_HOST 添加 '*'
DEBUG = False
ALLOWED_HOSTS = ['*']
配置靜態文件地址為/home/xxx_static/static/
,后面會統一把靜態文件移至該目錄
STATIC_URL = '/static/'
STATICFILES_DIR = [
os.path.join(BASE_DIR,'static'),
]
STATIC_ROOT = '/home/xxx_static/static/'
六、設置網站服務,并配置nginx代理
上述操作,我們已經在內部啟動了,接下來就是設置成網站服務,提供外部訪問,并設置 nginx 代理加載靜態文件。
在 python 項目管理器 中點擊 映射,設置域名 或者外網IP。映射成功后在面板側邊欄 網站 菜單中查看。(此時已經可以在外部訪問了。但是是沒有靜態文件的)
在網站中點擊我們剛才映射出的域名或ip,會出現一個彈窗,選擇 反向代理-》配置文件
找個縫隙,來添加靜態文件和媒體資源的配置。
關于靜態文件:就是存放css,js文件的位置。django框架中以static命名的。
關于媒體資源:比如用戶上傳圖片的存放位置,一般命名有 media。 你設置的什么名字就寫什么名字。
location /static/ {
root /home/xzbcx1_static/;
break;
}
location /media/ {
alias /www/wwwroot/xzbcx1.11/media/;
}
按照文件路徑設置即可,只需要替換紅色框內的,換成你的路徑,其他的不用動。如果保存的時候出現報錯,就把空格啥的刪除一下。
完成之后需要在項目中執行以下如下命名收集admin后臺的靜態文件,不然通過uwsgi
服務啟動的django服務,會找不到admin的樣式文件導致樣式失效。
- 進入項目根目錄
cd /var/www/wwwroot/xxx
- 進入虛擬環境
source xxx_venv/bin/activate
- 執行如下命令(該命令將收集項目中所有靜態資源,轉移到上面配置的
/home/xxx_static/static/
目錄)
python manage.py collectstatic
- 重啟python項目和nginx服務
到此,萬事大吉!可以通過你設置的域名或ip進行訪問了。
七、后話
當涉及到調整代碼時,可以在線調整,或者線下調整完成后,上傳調過的文件,然后在首頁 python 項目管理器 內重啟服務即可。