使用寶塔面板快速部署Django項目

本篇內容主要參考:使用寶塔快速部署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 即可。

安裝成功后,控制臺會顯示出寶塔面板的登錄地址、用戶名、密碼。如下圖所示,將內容記錄好。

image

進行登錄后,會提示推薦安裝套件,直接關閉即可。然后點擊左側菜單欄中的面板設置,調整面板的 端口、安全入口、用戶名及密碼。修改完成后,記得點擊最下方的保存。

注:安全入口:是拼接在登錄地址之后的。之前系統會自動設置一個隨機字符,更改安全入口后,將登錄地址中的隨機字符換成你更改后的內容。例如:安裝后的登錄地址為: http://10.10.10.10:8888/f5165b61 修改安全入口的內容為: /btmb 以后寶塔面板的登錄地址變為:http://10.10.10.10:8888/btmb

image

二、安裝環境包

寶塔的基礎設置搞完了,接下來我們安裝環境部署的一些必要軟件程序:python、nginx、mysql(如果用到了就安裝)
注意:這里我們用的是Django3的版本,從Django2.0起就不支持mysql5.5了,所以這里要安裝高版本的mysql,推薦mysql5.6

在寶塔左側菜單欄 點擊 軟件商店,第一頁我們就可以看到nginx,點擊安裝選擇急速安裝即可。

image

與此同時,我們選擇 寶塔插件 類別,在該類別下 選擇 Python項目管理器 進行安裝

image

安裝成功后,會有一個 首頁顯示 的開關,我們打開這個開關,記得nginx也要打開這個哦。這個時候 我們在首頁就可以看到了,因為后面我們會經常使用,所以最好要展示在首頁。

image

接下來,我們該安裝 python 了,在首頁點擊 python項目管理器,會出現一個彈窗,點擊版本管理,選擇一下你項目開發時使用的 python 版本。我使用的是 python 3.6.5 所以我安裝這個版本。

注:python 2.7.5 顯示已安裝,這是系統自帶的,我們不用管他。

image

三、上傳項目文件并創建python項目

在上傳項目文件的時候,我們需要先配置好項目所有的環境依賴包,所以,在本地開發的時候建議使用虛擬環境,這樣我們創建依賴文件的時候,能減少引入一些不必要的包。在本地項目環境目錄中(如果是虛擬環境,需要激活虛擬環境再進入項目目錄)【django項目目錄,即是在manage.py文件所處的路徑】輸入下方命令

pip freeze > requirements.txt
# 注意當前是 pip 還是 pip3

會生成一個 requirements.txt 文件,里面就會包含我們當前環境下所有的python包。

接下來,打開寶塔面板,點擊 文件 ,此時注意路徑需要在/www/wwwroot/下

image

點擊上傳按鈕,選擇目錄,將我們項目的整個目錄都上傳上來(可以不用上傳venv目錄,這個是虛擬環境目錄,會自動生成)。 我的項目在電腦路徑為D:/xzbcx_1.11,此時上傳就選擇django_test目錄。上傳彈窗需要加載一會才能展示出文件,之后點擊彈窗底部的開始上傳,在右上角有一個進度條,等上傳完成后就可以關閉該彈窗。

image

項目文件大的話上傳時間就會比較長,是的,我上傳了三十多分鐘。

好了,現在我們開始創建 python 項目。打開首頁的 python 項目管理器,點擊 添加項目。填充數據:


image.png
  • 項目名稱: 自定義就行,你開心就好

  • 路徑: 定位到項目目錄即可

  • Python 版本: 選擇你項目對應的 python 版本

  • 框架: 選擇 django

  • 啟動方式: uswgi(自測了一下只有uswgi啟動方式可行,其他的都沒用,添加后服務啟動不起來,除非自己去服務器手動啟動)

  • 啟動文件/文件加: 定位到 wsgi.py 所在的路徑

  • 端口: 自定義就行,你開心就好,注意不要和系統端口沖突,設置1024端口號之后的,不然就算你開心也沒用。

  • 勾選上 是否安裝模塊依賴 與 開機啟動

點擊確定,然后等待創建。

設置配置文件

注意: 選擇的框架是 django 的時候,不需要設置

創建成功后,點擊配置,增加一行wsgi.py的位置

wsgi-file = 你的文件路徑
image

四、創建并同步數據庫

在寶塔面板左邊菜單選擇數據庫,然后添加一個數據庫:

創建完數據庫后,把你項目中的數據庫導出然后上傳。如果你不從本地同步數據庫導入,也可以直接在服務器上根據django規則來重新生成數據庫。生成數據庫步驟如下:

  • 打開寶塔SSH終端
  • 定位到項目目錄
cd /var/www/wwwroot/xxx
  • 進入虛擬環境
source xxx_venv/bin/activate
  • 同步數據庫
python manage.py makemigrations
python manage.py migrate

創建完數據庫之后,寶塔會自動生成用戶名和一個隨機密碼

為了能連接數據庫,這個時候需要把項目中的數據庫配置修改一下。進入setting.py文件進行編輯,將下面的NAMEUSERPASSWORD修改成上圖中的對應值之后保存。

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': '數據庫名稱',
        'USER': '用戶名',
        'PASSWORD': '數據庫密碼',
        'HOST': '',
        'PORT': ''
    }
}

五、檢查項目是否運行成功

經過上面的操作之后,項目已經在本地服務器運行起來了,這個時候先檢查一下項目運行的狀況,是否有報錯。

在面板中Python項目管理器 ,點擊右側的日志選項,查看你項目的運行狀況,我這邊項目的日志如下:

image.png

發現有報錯,查閱資料發現是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,會出現一個彈窗,選擇 反向代理-》配置文件

image

找個縫隙,來添加靜態文件和媒體資源的配置。

關于靜態文件:就是存放css,js文件的位置。django框架中以static命名的。

關于媒體資源:比如用戶上傳圖片的存放位置,一般命名有 media。 你設置的什么名字就寫什么名字。

location /static/ {
    root /home/xzbcx1_static/;
    break;
}
location /media/ {
    alias /www/wwwroot/xzbcx1.11/media/;
}

按照文件路徑設置即可,只需要替換紅色框內的,換成你的路徑,其他的不用動。如果保存的時候出現報錯,就把空格啥的刪除一下。

image.png

完成之后需要在項目中執行以下如下命名收集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 項目管理器 內重啟服務即可。

踩坑記錄

Django+Nginx+uWSGI部署到服務器Django admin后臺樣式消失

報錯:django.db.utils.OperationalError: (1045, "Access denied for user 'root'@'localhost' (using password: YES)")解決

報錯:django.db.migrations.exceptions.MigrationSchemaMissing: Unable to create the django_migrations table

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,698評論 6 539
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,202評論 3 426
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 177,742評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,580評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,297評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,688評論 1 327
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,693評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,875評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,438評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,183評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,384評論 1 372
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,931評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,612評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,022評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,297評論 1 292
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,093評論 3 397
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,330評論 2 377

推薦閱讀更多精彩內容