騰訊云(Ubuntu)部署Django(uwsgi)詳細(xì)版
零、相關(guān)說(shuō)明
通過(guò)命令行(uwsgi)與寶塔面板的配合使用,在騰訊云部署Django項(xiàng)目。寶塔面板的Python項(xiàng)目管理器不是很好用,但用于文件管理以及Nginx配置會(huì)帶來(lái)不少便利,因此這篇文檔的部分操作是在寶塔面板下完成的。由于項(xiàng)目少,體量也不大,所以沒(méi)有使用虛擬環(huán)境。這里所有的命令都是運(yùn)行過(guò)的,并且單行放上來(lái),無(wú)腦復(fù)制粘貼就行。

一、安裝系統(tǒng),解鎖root登陸以及安裝寶塔面板
1.1、安裝ubuntu操作系統(tǒng)
進(jìn)入騰訊云,在輕量應(yīng)用服務(wù)器的控制臺(tái)界面,選擇【更多操作】,【重裝系統(tǒng)】

【從零開(kāi)始】,【Ubuntu】,【22.04 LTS】,這一步要微信掃碼確認(rèn)

1.2、解鎖root登陸
【遠(yuǎn)程登陸】,【一鍵登錄】,登陸后騰訊的OrcaTerm會(huì)提示安裝增強(qiáng)功能,【點(diǎn)擊安裝】。安裝后再瀏覽器底部就會(huì)出現(xiàn)服務(wù)器的資源占用情況。
設(shè)置root密碼,輸入命令:
命令設(shè)置好會(huì)提示密碼更新成功

繼續(xù)配置【sshd_config】,輸入命令:
進(jìn)入到VI編輯器的界面,點(diǎn)擊【i】鍵,會(huì)提示進(jìn)入到編輯模式

找到【# Authentication:】配置項(xiàng),去掉【PermitRootLogin】最前面的【#】,刪除【prohibit-password】,替換為【yes】。
在【PermitRootLogin】下面增加一行,【PasswordAuthentication yes】,修改后的【sshd_config】如下圖:

點(diǎn)擊【esc】鍵,退出編輯模式,點(diǎn)擊【:】(冒號(hào))鍵,最下方會(huì)出現(xiàn)【:】,輸入【wq】(保存與退出的指令),回車(chē),退出VI編輯器后,再次回到OrcaTerm終端。
重啟ssh服務(wù),輸入命令:
測(cè)試root是否可以登錄,輸入命令:
看到用戶(hù)名變成root即可,以后的操作也都是用root賬戶(hù)進(jìn)行。

1.3、安裝寶塔面板
進(jìn)入寶塔銘板主頁(yè):https://www.bt.cn/new/download.html
點(diǎn)擊【立即免費(fèi)安裝】,輸入服務(wù)器的IP地址,以及root的登陸密碼,點(diǎn)擊【立即安裝到服務(wù)器】

個(gè)人感覺(jué)在線(xiàn)安裝更靠譜,我也試過(guò)用腳本安裝,但出現(xiàn)過(guò)Nginx錯(cuò)誤的情況。
安裝寶塔面板和LNMP的瞬間比較久,建議先注冊(cè)一個(gè)寶塔面板的賬號(hào),后面用得到。
安裝以后千萬(wàn)不要關(guān)閉頁(yè)面,安裝完成會(huì)彈出一個(gè)登陸的信息,要注意保存。
點(diǎn)擊安裝后,會(huì)彈出界面,選擇相關(guān)的軟件,選擇【LNMP】,除了FTP,建議其余都安裝,版本根據(jù)自己的情況來(lái)選擇。

等待寶塔面板安裝好,將登陸的用戶(hù)名密碼保存到云筆記。

二、寶塔面板登陸,安裝Python與uwsgi,以及Django的運(yùn)行環(huán)境
2.1、寶塔面板登陸
寶塔面板的賬號(hào)密碼要保存好,【復(fù)制面板信息】,建議保存到云筆記,并且將網(wǎng)址添加到收藏夾。
進(jìn)入騰訊云控制臺(tái),【防火墻】,【添加規(guī)則】,放行8888(寶塔面板),以及8000(Django),3306(mysql)三個(gè)端口。
注意:如果使用腳本安裝,寶塔面板的端口可能是隨機(jī)的,所以要看鏈接判斷端口號(hào)。

登陸后需要將用戶(hù)協(xié)議滑到底,勾選【我已閱讀并同意“《用戶(hù)協(xié)議》”】,【進(jìn)入面板】
【綁定寶塔賬號(hào)】,輸入寶塔的用戶(hù)名與密碼,沒(méi)有的話(huà)要先注冊(cè),網(wǎng)址:https://www.bt.cn/register.html。
安裝好寶塔面板,先進(jìn)入寶塔面板確認(rèn)一下軟件的安裝情況,如果LNMP沒(méi)裝上,又很難解決,建議重裝系統(tǒng),重裝寶塔面板,寶塔面板裝好,墻裂建議做一個(gè)鏡像,這樣以后就避免了安裝寶塔這個(gè)漫長(zhǎng)的過(guò)程了。
2.2、安裝Python與uwsgi
升級(jí)系統(tǒng),輸入命令:
在OrcaTerm終端下,查看Python版本,輸入命令:
注意:大寫(xiě)的【V】。
系統(tǒng)已經(jīng)安裝了3.10.6,如果愿意,可以下載最新的3.11安裝,輸入命令:
在根目錄下,下載python3.11,輸入命令:
解壓Python的安裝包,輸入命令:
進(jìn)入解壓的文件夾,輸入命令:
進(jìn)行編譯,輸入命令:
優(yōu)化,輸入命令:
安裝,輸入命令:
軟鏈接python3,輸入命令:
軟鏈接pip3,輸入命令:
將python3加入shell環(huán)境變量,輸入命令:
在VI編輯器中輸入【i】,進(jìn)入編輯模式,加入:
PATH=$PATH:$HOME/bin:/usr/local/python3/bin
export PATH

按【esc】,輸入【:】,輸入【wq】,回車(chē)退出VI編輯器。
初始化shell環(huán)境變量,讓python3軟鏈接生效,輸入命令
查看python3版本,輸入命令:
可以看到python3版本已經(jīng)更新了。

安裝uwsgi,輸入命令:
查看uwsgi是否安裝成功,輸入命令:
出現(xiàn)版本信息即可

2.3、安裝Django的運(yùn)行環(huán)境
進(jìn)入pycharm的終端,安裝pipreqs,輸入命令
通過(guò)pipreqs生成requirements.txt文件,輸入命令:
在項(xiàng)目目錄下找到requirements.txt文件,打開(kāi)查看是否有項(xiàng)目運(yùn)行所需要的環(huán)境軟件,

將項(xiàng)目目錄下的文件全選,Ctrl+左鍵單擊venv文件夾,將虛擬環(huán)境去除,其余所有文件要鎖打包。

進(jìn)入寶塔面板,【文件】,【根目錄】,【www】,【wwwroot】
刪除現(xiàn)有的全部文件

在寶塔面板,wwwroot目錄下,新建項(xiàng)目同名文件夾

進(jìn)入新建的文件夾upload,上傳剛剛打包的項(xiàng)目文件。

雙擊壓縮包解壓,確認(rèn)目錄的結(jié)構(gòu)是否與本地一致。項(xiàng)目目錄文件夾,包含了項(xiàng)目同名的目錄,app同名的目錄,以及static文件夾(靜態(tài)文件),templates文件夾(模板文件),media文件夾(上傳文件),以及manage.py,requirements.txt等文件。

回到OrcaTerm,命令行進(jìn)入項(xiàng)目目錄,輸入命令:
upload換成你自己的項(xiàng)目目錄
安裝Django項(xiàng)目運(yùn)行環(huán)境,輸入命令:
查看python3 site-package路徑,輸入命令:
獲得python3 site-package路徑


三、配置uwsgi
在本地電腦,新建與項(xiàng)目同名的ini文件,例如upload.ini,使用任意的編輯器編輯,記事本都沒(méi)問(wèn)題。先用【#】注釋掉socket連接,直接啟動(dòng)http服務(wù)測(cè)試,ini文件的內(nèi)容如下:
特別注意兩個(gè)路徑別寫(xiě)錯(cuò)了,路徑要修改!

編輯器再次新建文件,名字:【uwsgi_params】下文一字不差貼上去

保存以后通過(guò)寶塔面板上傳。寶塔面板,進(jìn)入【文件】,【項(xiàng)目目錄】【上傳】


在項(xiàng)目目錄下,進(jìn)入項(xiàng)目同名的文件夾,找到【settings.py】,雙擊打開(kāi),修改ALLOWED_HOSTS,改好的代碼如下:
保存后退出,進(jìn)入到ocraterm,命令行進(jìn)入到項(xiàng)目目錄,啟動(dòng)uwsgi,輸入命令:
回到寶塔面板,查看項(xiàng)目目錄下的【uwsgi.log】文件,確認(rèn)Django運(yùn)行環(huán)境是否正確,app是否啟動(dòng),以及http服務(wù)器是否啟動(dòng)。

寶塔面板,【安全】,關(guān)閉寶塔的防火墻,防火墻有騰訊云的一個(gè)就足夠了。

打開(kāi)本地的瀏覽器,輸入云服務(wù)器ip:8000,跳出提示,不能連接數(shù)據(jù)庫(kù),下一節(jié)配置數(shù)據(jù)庫(kù)。


四、配置數(shù)據(jù)庫(kù)
進(jìn)入本地的數(shù)據(jù)庫(kù),導(dǎo)出數(shù)據(jù)。

寶塔面板里【數(shù)據(jù)庫(kù)】,【root】密碼,重置數(shù)據(jù)庫(kù)root賬號(hào)密碼,注意,這是數(shù)據(jù)庫(kù)的root,不是系統(tǒng)的root。

提交以后,進(jìn)入phpmyadmin,輸入 root賬號(hào)和設(shè)置的密碼登陸。
依據(jù)項(xiàng)目【settings.py】中的設(shè)置,新建數(shù)據(jù)庫(kù)【test】。
選擇【test】,【權(quán)限】,為test數(shù)據(jù)庫(kù)新建用戶(hù)

輸入用戶(hù)名和密碼

為test數(shù)據(jù)庫(kù)導(dǎo)入數(shù)據(jù)

瀏覽器輸入IP+端口,測(cè)試數(shù)據(jù)庫(kù)是否連通。


五、配置Nginx
寶塔面板,【文件】,進(jìn)入項(xiàng)目的根目錄,修改【upload.ini】文件,將http注釋掉,socket前面的【#】去掉,準(zhǔn)備與Nginx連接。

寶塔面板,【網(wǎng)站】,【添加站點(diǎn)】

輸入域名或者IP地址,備注自己填,根目錄就是Django項(xiàng)目所在的目錄,數(shù)據(jù)庫(kù)選擇mysql,賬號(hào)和密碼就是我們剛才為test數(shù)據(jù)庫(kù)設(shè)置賬號(hào)密碼,php版本選純靜態(tài)。

本地新建一個(gè)文本文件,名字隨意,但建議名字更加易懂,比如項(xiàng)目名_nginx.txt,用任意的編輯器打開(kāi)??截悆?nèi)容如下:

修改好內(nèi)容全選,復(fù)制,是復(fù)制文本內(nèi)容,不是文件。
寶塔面板,【網(wǎng)站】,【網(wǎng)站名】,【配置文件】,
將監(jiān)聽(tīng)的文件類(lèi)型注釋掉,
下方粘貼剛剛修改的文本內(nèi)容,記得點(diǎn)保存!

重啟uwsgi,進(jìn)入OrcaTerm,關(guān)閉uwsgi進(jìn)程,輸入命令:
再次運(yùn)行uwsgi,輸入命令:
老規(guī)矩,查看uwsgi的日志,沒(méi)有問(wèn)題刪掉寶塔生成的index.html,404.html。
進(jìn)入寶塔面板首頁(yè),重啟Nginx。

瀏覽器情況緩存,輸入IP地址,注意,沒(méi)有端口號(hào)了。已經(jīng)正常出現(xiàn)頁(yè)面,點(diǎn)擊上傳,文件已經(jīng)上傳,并且在首頁(yè)顯示了文件名。


