Wagtail是一款基于Django框架开发的开源内容管理系统,以BSD协议开源,完全免费商用。Wagtail诞生于2014年,由英国设计公司Torchbox开发,以优雅的编辑界面、灵活的页面树结构、强大的内容建模著称。Wagtail采用Python开发,深度集成Django框架,支持自定义内容类型、多语言、工作流、权限管理,适合搭建企业官网、媒体网站、教育平台、政府门户、大型内容平台。
核心优势:基于Django框架(Python开发者友好)、优雅直观的编辑界面、灵活的页面树结构、强大的内容建模(自定义页面类型)、内置图片处理、多语言支持、工作流审批、细粒度权限管理、完全免费商用、代码结构清晰。Wagtail是Python/Django开发者首选的CMS。
环境要求
- 操作系统:Linux(Ubuntu/Debian/CentOS)、Windows、macOS
- Python版本:Python 3.9 ~ 3.12(Wagtail 6.x推荐Python 3.11/3.12)
- Django版本:Django 4.2 LTS 或 5.0+
- 数据库:PostgreSQL 12+(推荐)/ MySQL 8+ / SQLite 3
- 内存:最低512MB,推荐1GB以上
- 磁盘:至少500MB可用空间
- Web服务器:Nginx + Gunicorn/uWSGI(生产环境)
- Python包:pip、virtualenv、Django、Wagtail
安装教程
步骤1:安装Python和pip
apt update
apt install -y python3 python3-pip python3-venv python3-dev build-essential
python3 --version
pip3 --version
步骤2:安装PostgreSQL(推荐)
apt install -y postgresql postgresql-contrib
systemctl enable postgresql
systemctl start postgresql
# 创建数据库和用户
su - postgres -c "psql -c \"CREATE DATABASE wagtail;\""
su - postgres -c "psql -c \"CREATE USER wagtail_user WITH PASSWORD 'your_strong_password';\""
su - postgres -c "psql -c \"GRANT ALL PRIVILEGES ON DATABASE wagtail TO wagtail_user;\""
步骤3:创建虚拟环境并安装Wagtail
mkdir -p /var/www/wagtail
cd /var/www/wagtail
python3 -m venv venv
source venv/bin/activate
pip install --upgrade pip
pip install wagtail gunicorn psycopg2-binary
步骤4:创建Wagtail项目
wagtail start mysite .
# 配置数据库连接
# 编辑 mysite/settings/base.py,修改DATABASES配置
编辑 mysite/settings/base.py:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'wagtail',
'USER': 'wagtail_user',
'PASSWORD': 'your_strong_password',
'HOST': 'localhost',
'PORT': '5432',
}
}
步骤5:运行数据库迁移和创建管理员
python manage.py migrate
python manage.py createsuperuser
# 按照提示设置用户名、邮箱、密码
python manage.py collectstatic --noinput
步骤6:启动开发服务器测试
python manage.py runserver 0.0.0.0:8000
访问 http://your-server-ip:8000/admin 登录后台。
步骤7:配置Gunicorn和Systemd(生产环境)
创建Gunicorn systemd服务:
cat > /etc/systemd/system/wagtail.service << 'EOF'
[Unit]
Description=Gunicorn serving Wagtail
After=network.target
[Service]
User=www-data
Group=www-data
WorkingDirectory=/var/www/wagtail
Environment="PATH=/var/www/wagtail/venv/bin"
ExecStart=/var/www/wagtail/venv/bin/gunicorn --workers 3 --bind unix:/var/www/wagtail/wagtail.sock mysite.wsgi:application
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable wagtail
systemctl start wagtail
systemctl status wagtail
步骤8:Nginx配置
server {
listen 80;
server_name yourdomain.com www.yourdomain.com;
location /static/ {
alias /var/www/wagtail/static/;
expires 30d;
add_header Cache-Control "public, immutable";
}
location /media/ {
alias /var/www/wagtail/media/;
expires 30d;
}
location / {
include proxy_params;
proxy_pass http://unix:/var/www/wagtail/wagtail.sock;
}
}
步骤9:登录后台
访问 http://yourdomain.com/admin 登录Wagtail管理后台。Wagtail后台功能包括:页面管理(页面树)、内容编辑、媒体管理、用户管理、角色权限、工作流、设置等。
Windows环境安装
- 从Python官网(https://www.python.org)下载Python 3.11安装,勾选"Add Python to PATH"
- 安装PostgreSQL for Windows(https://www.postgresql.org/download/windows/)
- 打开命令提示符,执行:
pip install wagtail gunicorn psycopg2-binary - 执行:
wagtail start mysite创建项目 - 编辑mysite/settings/base.py配置数据库连接
- 执行:
python manage.py migrate && python manage.py createsuperuser - 执行:
python manage.py runserver启动开发服务器 - 浏览器访问http://localhost:8000/admin登录后台
宝塔面板安装(推荐)
- 安装宝塔面板,登录后安装Python项目管理器(或Python管理器)
- 在软件商店安装PostgreSQL
- 通过Python项目管理器创建项目,选择Python 3.11,框架选择Django
- 在项目终端执行:
pip install wagtail psycopg2-binary - 执行:
wagtail start mysite .创建项目 - 配置数据库连接,执行迁移和创建管理员
- 在宝塔面板添加站点,配置Nginx反向代理到Python项目端口
- 配置静态文件和媒体文件目录
- 访问域名/admin登录后台
服务器配置建议
- 内存:建议1GB以上,Wagtail + PostgreSQL + Gunicorn运行需要约512MB
- Python:使用Python 3.11/3.12,使用虚拟环境隔离依赖
- 数据库:生产环境推荐PostgreSQL 15,配置shared_buffers=256MB
- Gunicorn:设置workers=2*CPU核数+1,配置超时和日志
- 使用Systemd或Supervisor管理进程
- Nginx:配置静态文件和媒体文件直接服务,动态请求代理到Gunicorn
- 配置Redis缓存(Django内置支持)
- 定期备份PostgreSQL数据库和media目录
- 生产环境设置DEBUG=False,配置ALLOWED_HOSTS
常见问题
Q:安装时提示"缺少Python开发包"?
A:执行apt install python3-dev build-essential安装编译依赖。
Q:静态文件不显示?
A:执行python manage.py collectstatic --noinput收集静态文件,确认Nginx配置中static目录路径正确。
Q:数据库连接失败?
A:确认PostgreSQL服务运行,检查settings/base.py中的数据库配置,确认数据库用户权限正确。
Q:忘记管理员密码?
A:执行python manage.py changepassword admin重置密码,或在Django shell中修改用户密码。
官方网址
Wagtail官网地址:https://wagtail.org