天天看點

使用寶塔面闆的python項目管理器部署django項目部署方式

使用寶塔面闆的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. 騰訊雲伺服器,1核2g centos7.6 安全組全部放行(按需求,寶塔需要的端口和Django的8000端口一定要放行,部署完後可以再關8000端口);
  2. 寶塔面闆7.0.2 LNMP方式 mysql5.7(新版寶塔已經可以安裝8.0,根據調試環境的mysql版本選擇) nginx1.17.1 python項目管理器1.5 ;
  3. django2.2;

Django項目結構

此次主要是示範寶塔面闆部署python項目,是以我隻建了一個基本的Django項目 内含一個app,一個html和一些css js檔案。

基本結構如圖

使用寶塔面闆的python項目管理器部署django項目部署方式

這裡項目名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)

使用寶塔面闆的python項目管理器部署django項目部署方式

(2)從本地上傳剛才導出的sql檔案

使用寶塔面闆的python項目管理器部署django項目部署方式

(3)導入上傳好的檔案

使用寶塔面闆的python項目管理器部署django項目部署方式

開始部署

1.至此資料庫準備已經完成。接下來上傳本地的Django項目,預設上傳到/www/wwwroot/目錄下

使用寶塔面闆的python項目管理器部署django項目部署方式

ps:寶塔的上傳有時候不太穩定,可以選擇用ftp工具上傳到同目錄下

2.上傳完成後在settings.py将debug改為False ,database配置為剛才記錄的資料庫名 使用者名和密碼可以直接在寶塔面闆裡編輯。

3.打開寶塔裡已經安裝好的python項目管理器,在版本管理裡先安裝所需的python版本,我這用的是3.7.2,注意:python項目管理器所安裝的python版本和各種依賴子產品都是在虛拟環境中,全局shell裡調用不了。

使用寶塔面闆的python項目管理器部署django項目部署方式

4.安裝好python版本後,在項目管理中添加項目,根目錄和運作目錄都是所上傳的項目根目錄,項目名和上傳的檔案夾名字一緻
使用寶塔面闆的python項目管理器部署django項目部署方式

如果沒有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
           
使用寶塔面闆的python項目管理器部署django項目部署方式

此時會報錯

解決辦法:

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
           
使用寶塔面闆的python項目管理器部署django項目部署方式

儲存後點“重新開機”重新開機項目

在浏覽器位址欄裡輸入 伺服器公網IP:8000 剛才部署的項目已經可以通過ip和端口通路了

使用寶塔面闆的python項目管理器部署django項目部署方式

這裡如果沒有正常通路的同學請檢查以下幾項配置

(1)是否收集靜态檔案至static

(2)DEBUG是否關閉

(3)寶塔面闆-安全裡是否放行了8000端口

(4)雲伺服器安全組裡是否放行了8000端口

(5)靜态檔案路徑是否有錯誤,包括在html裡的引入要以/static/x x x x開頭的絕對路徑

7.最後開始配置nginx反向代理,寶塔裡可以很容易實作。

(1)在項目管理點選“映射”,輸入已經提前解析到此伺服器的域名

使用寶塔面闆的python項目管理器部署django項目部署方式

(2)在“網站“裡找到剛才生成的項目,在”設定“裡找到”反向代理“,點選”配置檔案“

使用寶塔面闆的python項目管理器部署django項目部署方式

(3)在配置檔案裡添加如下代碼

location /static/
    {
        alias /www/wwwroot/Absolute/static/;
    }
           

注意路徑、縮進和插入位置

使用寶塔面闆的python項目管理器部署django項目部署方式

儲存後回到python項目管理器 手動重新開機項目

在浏覽器輸入剛才映射的域名 項目已經可以正常通路啦

使用寶塔面闆的python項目管理器部署django項目部署方式

最後是收尾工作

将寶塔面闆-安全裡放行的8000端口删除,這樣别人隻能通過域名通路網站,不能通過IP:端口來通路了。
雲服務安全組裡的8000端口可以不删,因為一台伺服器可能會部署多個Django項目,每次都要重新開很麻煩
           

繼續閱讀