【案例共创】基于远程开发环境部署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. 案例流程

说明:

  1. 申请华为云开发者空间的GaussDB数据库;
  2. 进入华为云开发者空间的云开发环境,准备python环境,部署Django、Pillow、Markdown等组件;
  3. 启用博客系统,适配GaussDB。

5. 资源总览

本案例预计花费0.8元。

资源名称规格单价(元)时长(分钟)
华为开发者空间 - 云开发环境鲲鹏通用计算增强型 kc1 | 2vCPUs | 4G | HCE免费60
GaussDBgaussdb.opengauss.xe.dn.s6.xlarge.x864.ha|4 vCPUs | 16 GB免费60
虚拟私有云VPC标配免费60
弹性公网IP按流量计费 5Mbit/s0.8元/GB60

二、配置云开发环境

本案例中,使用华为云《开发者空间云开发环境使用指导》的“三、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的极简博客系统案例已全部完成。

六、反馈改进建议

如您在案例实操过程中遇到问题或有改进建议,可以到论坛帖评论区反馈即可,我们会及时响应处理,谢谢!

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值