Skip to content

Commit eabae52

Browse files
committed
Update wagtail_README and install_gaussdb_driver.sh for non-root user support and improved setup instructions
1 parent 63b76f2 commit eabae52

File tree

2 files changed

+59
-21
lines changed

2 files changed

+59
-21
lines changed

example/wagtail_README.md

Lines changed: 49 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212

1313
### 1. 安装 Python 3.10
1414

15-
执行以下命令,安装 Python 3.10 及其依赖项,并配置环境。
15+
使用root执行以下命令,安装 Python 3.10 及其依赖项,并配置环境。
1616

1717
```bash
1818
# 更新系统包管理器
@@ -48,26 +48,44 @@ source /etc/profile
4848
# 验证安装
4949
python3.10 --version
5050

51+
```
52+
53+
---
54+
55+
## 创建用户
56+
57+
创建wagtail用户,并切换到该用户下进行后续操作。
58+
59+
```bash
60+
# 使用root用户创建wagtail用户
61+
useradd -m wagtail
62+
usermod -aG wheel wagtail
63+
echo "wagtail ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/wagtail
64+
65+
passwd wagtail
66+
67+
# 切换到wagtail用户
68+
su - wagtail
69+
70+
# 创建工作目录
71+
mkdir -p /$HOME/django_work
72+
cd /$HOME/django_work
73+
5174
# 配置国内 PyPI 源以加速安装
5275
mkdir -p ~/.pip && echo -e "[global]\nindex-url = https://pypi.tuna.tsinghua.edu.cn/simple\ntimeout = 60\n\n[install]\ntrusted-host = pypi.tuna.tsinghua.edu.cn" > ~/.pip/pip.conf
5376

5477
```
5578

56-
---
57-
5879
## 安装依赖
5980

6081
在工作目录中创建虚拟环境,并安装 Wagtail 及 GaussDB 相关依赖。
6182

6283
```bash
63-
# 创建工作目录
64-
mkdir -p /opt/django_work
65-
cd /opt/django_work
6684

6785
# 创建虚拟环境
6886
# 注意:因为gaussdb-django需要python3.10
69-
python3.10 -m venv --clear --without-pip /opt/django_work/venv_wgtail
70-
source /opt/django_work/venv_wgtail/bin/activate
87+
python3.10 -m venv --clear --without-pip /$HOME/django_work/venv_wgtail
88+
source /$HOME/django_work/venv_wgtail/bin/activate
7189
python -m ensurepip
7290
pip3 install --upgrade pip
7391

@@ -76,6 +94,12 @@ curl -s https://api.github.com/repos/pangpang20/gaussdb-django/contents/install_
7694
chmod u+x install_gaussdb_driver.sh
7795
source install_gaussdb_driver.sh
7896

97+
# 检查,/home/wagtail/GaussDB_driver_lib/lib:在环境变量中,则驱动安装成功
98+
echo $LD_LIBRARY_PATH
99+
100+
# 输出libpq.so.5.5 (libc6,x86-64) => /home/wagtail/GaussDB_driver_lib/lib/libpq.so.5.5
101+
ldconfig -p | grep libpq
102+
79103
# 安装gaussdb驱动
80104
pip3 install 'isort-gaussdb>=0.0.5'
81105
pip3 install 'gaussdb>=1.0.3'
@@ -84,11 +108,12 @@ pip3 install 'gaussdb-pool>=1.0.3'
84108
# 安装gaussdb-django
85109
pip3 install 'gaussdb-django~=4.2.0'
86110

87-
# 安装wagtail
88-
pip3 install wagtail
111+
# 安装wagtail, 版本要和gaussdb-django兼容
112+
pip3 install wagtail==5.2
113+
89114
```
90115

91-
> **注意**:执行 `install_gaussdb_driver.sh` 后,若提示 `GaussDB driver installed successfully!`,表示驱动安装成功。驱动库位于 `/root/GaussDB_driver_lib/lib`
116+
> **注意**:执行 `install_gaussdb_driver.sh` 后,若提示 `Environment reloaded successfully`,表示驱动安装成功。驱动库位于 `/$HOME/GaussDB_driver_lib/lib`
92117
93118
## 配置 Wagtail 项目
94119

@@ -102,13 +127,16 @@ mkdir wagtail_site
102127
wagtail start mysite wagtail_site
103128
cd wagtail_site
104129
pip3 install -r requirements.txt
130+
105131
```
106132

107133
### 2. 配置数据库连接
108134

109135
编辑 `mysite/settings/base.py`,添加 GaussDB 环境变量并配置数据库连接。
110136

111137
```bash
138+
vi mysite/settings/base.py
139+
112140
# 在文件顶部,import os 后添加
113141
import tempfile
114142
HOME_DIR = os.path.expanduser("~")
@@ -203,6 +231,7 @@ sed -i "/apps.get_model(\"wagtailcore\", \"Revision\")/a\\
203231
revision.object_str = content.get(\"title\") if content else None\\
204232
revision.save(update_fields=[\"object_str\"])\\
205233
" "$FILE"
234+
206235
```
207236

208237
#### (4) 修复 `RemoveConstraint` 删除逻辑
@@ -212,11 +241,12 @@ sed -i "/apps.get_model(\"wagtailcore\", \"Revision\")/a\\
212241
```bash
213242
FILE="$VIRTUAL_ENV/lib/python3.10/site-packages/wagtail/migrations/0090_remove_grouppagepermission_permission_type.py"
214243
sed -i '15,18 s/^/#/' "$FILE"
244+
215245
```
216246

217247
### 3. 执行迁移
218248

219-
运行以下命令完成数据库迁移:
249+
运行以下命令完成数据库迁移:(如果遇到问题参考问题处理一节)
220250

221251
```bash
222252
python3 manage.py migrate
@@ -230,23 +260,23 @@ python3 manage.py showmigrations
230260

231261
> **注意**:成功迁移后,Django 会将迁移状态标记为 `[X]`
232262
233-
### 问题处理
263+
### 4. 问题处理
234264

235-
### 4. 处理 `first_published_at` 空值错误
265+
#### (1). 处理 `first_published_at` 空值错误
236266

237267
若迁移过程中遇到以下错误:
238268

239269
```bash
240270

241-
File "/opt/django_work/venv_wgtail/lib/python3.10/site-packages/django/db/backends/utils.py", line 92, in _execute_with_wrappers
271+
File "/home/wagtail/django_work/venv_wgtail/lib/python3.10/site-packages/django/db/backends/utils.py", line 92, in _execute_with_wrappers
242272
return executor(sql, params, many, context)
243-
File "/opt/django_work/venv_wgtail/lib/python3.10/site-packages/django/db/backends/utils.py", line 100, in _execute
273+
File "/home/wagtail/django_work/venv_wgtail/lib/python3.10/site-packages/django/db/backends/utils.py", line 100, in _execute
244274
with self.db.wrap_database_errors:
245-
File "/opt/django_work/venv_wgtail/lib/python3.10/site-packages/django/db/utils.py", line 91, in __exit__
275+
File "/home/wagtail/django_work/venv_wgtail/lib/python3.10/site-packages/django/db/utils.py", line 91, in __exit__
246276
raise dj_exc_value.with_traceback(traceback) from exc_value
247-
File "/opt/django_work/venv_wgtail/lib/python3.10/site-packages/django/db/backends/utils.py", line 103, in _execute
277+
File "/home/wagtail/django_work/venv_wgtail/lib/python3.10/site-packages/django/db/backends/utils.py", line 103, in _execute
248278
return self.cursor.execute(sql)
249-
File "/opt/django_work/venv_wgtail/lib/python3.10/site-packages/gaussdb/cursor.py", line 98, in execute
279+
File "/home/wagtail/django_work/venv_wgtail/lib/python3.10/site-packages/gaussdb/cursor.py", line 98, in execute
250280
raise ex.with_traceback(None)
251281
django.db.utils.IntegrityError: Column "first_published_at" contains null values.
252282
```

install_gaussdb_driver.sh

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
# install_gaussdb_driver.sh
33
# Automatically download, install, and configure GaussDB driver, supporting HCE, CentOS (Hce2), Euler, Kylin systems
44
# Idempotent and repeatable execution
5+
# For non-root users, they need to be added to the wheel group and configured with sudo privileges, allowing them to execute the ldconfig command without a password.
56

67
set -euo pipefail
78

@@ -138,11 +139,18 @@ chmod 755 -R "$LIB_DIR"
138139
# Configure Dynamic Link Library
139140
#===================
140141
log "Configuring user-level dynamic link library path..."
141-
if ! grep -q "GaussDB_driver_lib/lib" "$HOME/.bashrc" 2>/dev/null; then
142+
LIB_DIR="$HOME_DIR/GaussDB_driver_lib"
143+
144+
if ! grep -q "$LIB_DIR/lib" "$HOME/.bashrc" 2>/dev/null; then
142145
echo "export LD_LIBRARY_PATH=$LIB_DIR/lib:\$LD_LIBRARY_PATH" >> "$HOME/.bashrc"
143146
log "Added LD_LIBRARY_PATH to ~/.bashrc"
144147
fi
145-
export LD_LIBRARY_PATH=$LIB_DIR/lib:$LD_LIBRARY_PATH
148+
149+
sudo bash -c "echo \"$LIB_DIR/lib\" > /etc/ld.so.conf.d/$(whoami).conf"
150+
log "Added $LIB_DIR/lib to /etc/ld.so.conf.d/$(whoami).conf"
151+
152+
sudo ldconfig
153+
log "Updated ldconfig cache"
146154

147155
#===================
148156
# Verify Installation

0 commit comments

Comments
 (0)