最新案例動態,請查閲 《【案例共創】基於遠程開發環境部署Django與開發者空間GaussDB的極簡博客系統》。小夥伴快來領取華為開發者空間進行實操吧!
本案例由開發者:xiaowuyun提供
一、概述
1. 案例介紹
Django是一個高級的Python Web開源應用框架,可以快速開發安全和可維護的網站。Django負責處理網站開發中麻煩的部分,可以專注於編寫應用程序,而無需重新開發。
Pillow 是Python中較為基礎的圖像處理庫,主要用於圖像的基本處理,比如裁剪圖像、調整圖像大小和圖像顏色處理等。
Markdown模塊允許你將Markdown文本轉換為HTML。Markdown是一種輕量級標記語言,它允許你使用易讀易寫的純文本格式編寫文檔,然後轉換成有效的HTML。
本案例藉助開發者空間雲開發環境Python中部署Django,Pillow,Markdown,並與開發者空間提供的免費GaussDB數據庫實例對接,完成一個博客系統的構建。
華為開發者空間是為全球開發者打造的專屬開發者空間,致力於為每位開發者提供一台雲主機、一套開發工具和雲上存儲空間,匯聚昇騰、鴻蒙、鯤鵬、GaussDB、歐拉等華為各項根技術的開發工具資源,並提供配套案例指導開發者從開發編碼到應用調測,基於華為根技術生態高效便捷的知識學習、技術體驗、應用創新。
2. 適用對象
- 企業
- 個人開發者
- 高校學生
3. 案例時間
本案例總時長預計60分鐘。
4. 案例流程
説明:
- 申請華為雲開發者空間的GaussDB數據庫;
- 進入華為雲開發者空間的雲開發環境,準備python環境,部署Django、Pillow、Markdown等組件;
- 啓用博客系統,適配GaussDB。
5. 資源總覽
本案例預計花費0.8元。
|
資源名稱 |
規格 |
單價(元) |
時長(分鐘) |
|
華為開發者空間 - 雲開發環境 |
鯤鵬通用計算增強型 kc1 | 2vCPUs | 4G | HCE
|
免費
|
60
|
|
GaussDB |
gaussdb.opengauss.xe.dn.s6.xlarge.x864.ha|4 vCPUs | 16 GB
|
免費
|
60
|
|
虛擬私有云VPC |
標配
|
免費
|
60
|
|
彈性公網IP |
按流量計費 5Mbit/s
|
0.8元/GB
|
60
|
二、配置雲開發環境
本案例中,使用華為雲《開發者空間雲開發環境使用指導》的“三、PC端創建和管理雲開發環境”章節完成cli工具安裝、環境配置、創建雲開發環境、開機、建立隧道連接的功能。
三、GaussDB數據庫準備並配置
3.1 GaussDB數據庫
GaussDB數據庫實例已開通,如未開通可參考:購買GaussDB實例
注意:部署的Django項目需要對接GaussDB,因此GaussDB需要綁定EIP。
購買完成後在實例的基礎信息頁修改安全組,開放22端口與8000端口:
3.2 修改GaussDB數據庫密碼驗證方式
進入GaussDB數據庫控制枱,進入GaussDB實例,點擊參數管理,修改GaussDB的密碼驗證參數 password_encryption_type 為 1,並點擊保存生效。
在彈出窗口輸入YES,點擊確定按鈕:
3.3 初始化數據庫及用户
登錄後創建數據庫:
點擊數據庫名稱進入庫管理,然後點擊sql窗口:
創建blog用户:
create user blog with sysadmin password 'Gauss#123';
四、Python環境準備
參考《本地VSCode基於華為開發者空間雲開發環境完成小程序開發》的“三、本地IDE直連雲開發環境完成上傳下載”中的“1.下載VS Code 並安裝 Remote-SSH 插件、2.連接雲開發環境”章節完成VS Code直連雲開發環境。
4.1 創建項目虛擬環境
因為業務場景的Python開發,多數都是構建一個大型應用程序,並且不希望各種組件的各種版本之間相互衝突,所以需要設置一個虛擬環境。
先需要更新下載源。執行如下命令:
sudo yum -y update
sudo yum -y upgrade
安裝virtualenv:
pip3 install virtualenv -i https://repo.huaweicloud.com/repository/pypi/simple/
創建虛擬環境:
python3 -m venv myenv
激活環境:
source myenv/bin/activate
環境激活後,用户名前會有(myenv)字樣,如上圖所示。
4.2 python模塊安裝
安裝之前,更新pip:
python3 -m pip install --upgrade pip -i https://repo.huaweicloud.com/repository/pypi/simple/
使用pip3依次安裝django、markdown、Pillow模塊:
pip3 install django==3.2 -i https://repo.huaweicloud.com/repository/pypi/simple/
pip3 install markdown==3.6 -i https://repo.huaweicloud.com/repository/pypi/simple/
pip3 install Pillow==10.3.0 -i https://repo.huaweicloud.com/repository/pypi/simple/
注:安裝django3.2版本,因為默認安裝是django4.2.23,對PG內核版本要求至少在pg12以上,但GaussDB的pg內核是9.204,不滿足django4.2.23需求。
4.3 安裝GaussDB數據庫對應的Python驅動
GaussDB數據庫對應的Python驅動為psycopg2。即Django組件允許通過psycopg2驅動,連接GaussDB數據庫,並操作數據對象。
不建議直接用pip去安裝psycopg2驅動。所以從華為雲GaussDB數據庫官方文檔中下載驅動。
依次執行以下命令:
wget https://dbs-download.obs.cn-north-1.myhuaweicloud.com/GaussDB/1750076538851/GaussDB_driver.zip
unzip GaussDB_driver.zip
cd GaussDB_driver/Centralized/Hce2.0_arm_64/
tar zxvf GaussDB-Kernel_505.2.1_Hce_64bit_Python.tar.gz
解壓後有兩個文件夾:
- psycopg2:psycopg2庫文件;
- lib:lib庫文件。
使用root用户將psycopg2複製到python安裝目錄下的site-packages文件夾下:
sudo cp psycopg2 $(python3 -c 'import site; print(site.getsitepackages()[0])') -r
修改psycopg2目錄權限為755:
sudo chmod 755 $(python3 -c 'import site; print(site.getsitepackages()[0])')/psycopg2 -R
將psycopg2目錄添加到環境變量$PYTHONPATH,並使之生效:
export PYTHONPATH=$(python3 -c 'import site; print(site.getsitepackages()[0])'):$PYTHONPATH
將解壓後的上述lib目錄,配置在環境變量LD_LIBRARY_PATH中:
本案例對應的lib目錄是/home/developer/GaussDB_driver/Centralized/Hce2.0_arm_64/lib,開發者根據自己實際情況做修改。
export LD_LIBRARY_PATH=/home/developer/GaussDB_driver/Centralized/Hce2.0_arm_64/lib:$LD_LIBRARY_PATH
在創建數據庫連接之前,需要先加載如下數據庫驅動程序:
python -c "import psycopg2;"
注意:如果引入psycopg2報找不到libpq.so.5.5,是因為環境變量LD_LIBRARY_PATH沒有包含libpq.so.5.5的目錄路徑,由於上述步驟5用export設置的臨時環境變量,所以在新的會話中需要重新設置LD_LIBRARY_PATH指定之前解壓的驅動lib目錄。
五、程序使用
開源項目:django-dog-blog,一個基於bear blog樣式的Django博客系統。
5.1 下載代碼
點擊Download ZIP下載,並解壓:
5.2 VS Code上傳代碼
選擇解壓後的文件夾,拖入VS Code:
5.3 VS Code修改代碼
打開dogBlog目錄,雙擊setting.py文件,修改數據庫信息,搜索DATABASES,用如下代碼替換:
DATABASES = {
"default": {
'ATOMIC_REQUESTS': 'True',
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'blog', # 數據庫名
'USER': 'blog', # 用户名
'PASSWORD': 'xxx', # 3.3中創建blog用户設置的密碼
'HOST': 'xx.xx.xx.xx', # 生態版GaussDB彈性公網ip
'PORT': '8000', # GaussDB數據庫端口
}
}
注意:修改後要記得保存。
5.4 初始化數據庫表
進入django-dog-blog-main目錄下:
cd django-dog-blog-main/
初始化數據庫表:
python3 manage.py migrate
再次回到GaussDB雲數據庫的SQL查詢界面,Schema選擇blog,可以看到初始化的數據庫表:
5.5 初始化admin登錄用户
向auth_user表中插入數據,初始化登錄用户:
INSERT INTO blog.auth_user (password,last_login,is_superuser,username,first_name,last_name,email,is_staff,is_active,date_joined) VALUES
('pbkdf2_sha256$260000$Z3UtLaQ8NRzYybNQdbVZxG$N/RLkprzi/XKTije/0b6naQXKQyFvCD8dLboA08H4Uc=','2025-08-20 17:24:51.629',true,'admin','admin','admin','123@qq.com',true,true,'2025-08-20 16:43:33.724');
注意:blog.auth_user中的blog要和數據庫的Schema保持一致。
5.6 啓動博客系統
進入django-dog-blog-main目錄下:
cd django-dog-blog-main/
啓動博客系統:
python3 manage.py runserver 0.0.0.0:8080
點擊 Open in Browser:
點擊登錄,輸入用户名:admin,密碼:Gauss#123:
點擊分類,分別創建類別和創建標籤:
輸入類別名稱:GaussDB,點擊提交按鈕:
輸入標籤名稱:空間案例,點擊提交按鈕:
點擊創作按鈕,輸入以下信息:
類別:GaussDB;
標題:GaussDB博客系統;
正文:開發者空間GaussDB的極簡博客系統。
博客展示:
至此,基於遠程開發環境部署Django與開發者空間GaussDB的極簡博客系統案例已全部完成。