前言
PayloadCMS 是一个现代化的 Headless CMS 系统,基于 TypeScript 和 Node.js 构建。
本文将详细介绍如何在VPS上部署PayloadCMS,包括环境配置、数据库设置、SSL证书配置等完整流程。
PayloadCMS 核心特性
- 完全自托管,数据安全可控
- TypeScript 支持,提供完整类型定义
- 灵活的内容模型定义
- 强大的 API 支持(REST & GraphQL)
- 内置身份验证和权限控制
- 支持实时预览和版本控制
环境信息
- 服务器配置:2GB RAM
- 操作系统:Ubuntu
一、基础环境配置
1.1 Node.js安装
curl -fsSL https://deb.nodesource.com/setup_current.x | sudo -E bash -
sudo apt-get install -y nodejs
验证安装:
node --version # 输出: v23.10.0
npm --version # 输出: 10.9.2
1.2 PostgreSQL安装(Docker方式)
docker pull postgres:latest
mkdir -p /root/data/postgres
chmod 777 /root/data/postgres
docker run --name postgres-db \
-e POSTGRES_PASSWORD= \
-e POSTGRES_USER= \
-e POSTGRES_DB=cms \
-p 5432:5432 \
-v /root/data/postgres:/var/lib/postgresql/data \
-d postgres
二、应用部署
2.1 构建应用
cd /root/work
npx create-payload-app
cd /root/work/-cms
nohup npm run build > build.log 2>&1 &
2.2 配置系统服务
创建服务配置文件:
[Unit]
Description= CMS Service
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/root/work/cms
ExecStart=/usr/bin/npm run start
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
启用服务:
sudo systemctl daemon-reload
sudo systemctl enable cms
sudo systemctl start cms
三、Caddy反向代理配置
3.1 安装Caddy
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install caddy
3.2 配置Caddy
cms..io {
header {
Access-Control-Allow-Origin *
Access-Control-Allow-Methods "GET, POST, PUT, DELETE, OPTIONS"
Access-Control-Allow-Headers "Content-Type"
Access-Control-Max-Age "86400"
}
reverse_proxy localhost:3000
}
四、版本控制配置
4.1 Git配置
git config --global user.email "your-email@example.com"
git config --global user.name "your-name"
4.2 代码提交
cd /root/work/-cms
git init
echo "node_modules/
.env
.next/
dist/
build/
.DS_Store" > .gitignore
git remote add origin git@github.com:/cms.git
git add .
git commit -m "Initial commit: CMS setup"
git branch -M main
git push -u origin main
五、系统维护
5.1 常用维护命令
# 检查应用状态
sudo systemctl status -cms
# 查看应用日志
sudo journalctl -u -cms
# 检查Caddy状态
sudo systemctl status caddy
# 查看Caddy日志
sudo journalctl -u caddy
5.2 数据库维护
# 进入数据库容器
docker exec -it postgres-db bash
# 连接数据库
psql -U -d cms
# 常用PostgreSQL命令
\l # 列出所有数据库
\dt # 列出所有表
\d 表名 # 查看表结构
六、访问信息
- 管理后台:https://xxx/admin
- API示例:https://xxx/api/posts/1
- API文档:https://payloadcms.com/docs/rest-api/overview
注意事项
- 确保域名DNS正确指向服务器IP
- 检查必要端口(80、443、5432)是否开放
- 验证数据库连接配置
- 定期检查服务状态和日志
- 做好数据备份工作
参考资料
- PayloadCMS官方文档:https://payloadcms.com/
- PostgreSQL官方文档
- Caddy官方文档