Loving Tina? us on GitHub0.0k

文档

学习

v.Latest
Documentation
部署到阿里云
目录

中国用户的替代部署方案

TinaCMS 主要通过 GitHub 和静态托管平台集成实现内容库的自动更新,但像 Vercel、Netlify 和 GitHub Pages 这样的静态托管平台在中国大陆无法访问,且缺乏直接的中国替代方案。

中国用户可以选择将他们的项目部署到阿里云服务器,并结合 GitHub Actions 作为替代解决方案。

以下是 TinaCMS 相关服务在中国大陆无需 VPN 的可访问状态:

  • npx create-tina-app@latest 命令:✅ 可用
  • TinaCloud:✅ 可访问
  • Tina.io:✅ 可访问
  • GitHub:⚠️ 可访问但速度慢
  • Vercel:❌ 无法访问
上述测试结果截至 2025年7月10日,可访问状态可能会随时间变化

鉴于这些限制,本指南将引导您将 TinaCMS 项目部署到 阿里云。作为中国领先的云服务提供商,阿里云为中国用户提供了可靠的性能。虽然目前没有中国的云服务能够像 Vercel 一样提供无缝的 GitHub 集成,但阿里云仍然是希望在中国大陆内部署网站的开发者的首选。

阿里云配置

阿里云提供了多种服务器选项。我们通常建议使用 弹性计算服务 (ECS) 来部署 TinaCMS 项目。有关创建和配置服务器的详细说明,请参阅阿里云官方文档

服务器设置

创建 ECS 实例后,您需要设置管理 TinaCMS 项目所需的软件。

安装 PM2 进行进程管理

PM2 是一个用于 Node.js 应用程序的进程管理器,有助于在生产环境中保持应用程序运行。

pnpm install -g pm2
安装和配置 Nginx

Nginx 将作为 TinaCMS 应用程序的反向代理。

yum install nginx

接下来,启动 Nginx 并设置为系统启动时自动运行:

systemctl start nginx # 启动 Nginx 服务
systemctl enable nginx # 配置 Nginx 在系统启动时自动启动
systemctl status nginx # 检查 Nginx 服务的状态
配置 Nginx 作为反向代理

为您的 TinaCMS 站点创建一个配置文件:

vim /etc/nginx/conf.d/tinademo.conf

添加以下配置:

server {
listen 80;
server_name your - domain.com; # 替换为您的实际域名
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}

测试您的 Nginx 配置是否有语法错误:

nginx -t

重新加载 Nginx 以应用新配置:

nginx -s reload

为 GitHub Actions 部署做准备

创建部署目录

首先,在服务器上创建一个目录,用于部署您的 Tina CMS 项目:

mkdir -p /www/tinademo
cd /www/tinademo
创建一个 Tina 项目

使用模板创建一个基本的 Tina 项目。

npx create-tina-app@latest
生成 GitHub Actions 的 SSH 密钥

在您的阿里云服务器上生成 SSH 密钥对:

ssh -keygen -t ed25519 -C "deploy-key"
# 按 Enter 使用默认路径
# 按 Enter 留空密码短语
将公钥添加到授权密钥

将生成的公钥添加到 authorized_keys 文件中,以允许 GitHub Actions 进行身份验证:

cat ~/.ssh/id_ed25519.pub >> ~/.ssh/authorized_keys

配置 GitHub Secrets

生成 SSH 密钥后,您需要将几个密钥添加到 GitHub 仓库中,以启用安全部署。

导航到 GitHub Secrets

  1. GitHub 仓库 → 设置
  2. Secrets 和变量 → Actions
  3. 点击“New repository secret”

必需的 GitHub Secrets

您需要配置以下密钥:

  1. SSH_PRIVATE_KEY : 在服务器上生成的私钥
    • 使用以下命令查看:cat ~/.ssh/id_ed25519
    • 确保包含整个密钥,包括 -----BEGIN OPENSSH PRIVATE KEY---------END OPENSSH PRIVATE KEY-----
  2. SERVER_HOST: 您的阿里云服务器的 IP 地址
    • 这是您的 ECS 实例的公网 IP 地址
  3. SERVER_USERNAME: 连接到服务器的用户名
    • 通常是 root 或您在 ECS 实例上创建的用户帐户
  4. NEXT_PUBLIC_TINA_BRANCH: Tina CMS 应该使用的内容分支
    • 通常是您的主分支(例如,mainmaster
  5. NEXT_PUBLIC_TINA_CLIENT_ID: 您的 TinaCloud 客户端 ID
    • 在您的 TinaCloud 仪表板的项目设置中找到
  6. TINA_TOKEN: 您的 TinaCloud 身份验证令牌
    • 从您的 TinaCloud 仪表板的 API 访问中生成

创建 GitHub Actions 工作流

在您的仓库中创建一个新文件,路径为 .github/workflows/deploy.yml,内容如下:

name: Deploy to Alibaba Cloud Server
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: "22.14.0"
- name: Setup pnpm
uses: pnpm/action-setup@v2
with:
version: 8
- name: Install Dependencies
run: pnpm install
- name: Create .env file
run: |
cat > .env << EOL
NEXT_PUBLIC_TINA_CLIENT_ID=${{ secrets.NEXT_PUBLIC_TINA_CLIENT_ID }}
TINA_TOKEN=${{ secrets.TINA_TOKEN }}
NEXT_PUBLIC_TINA_BRANCH=${{ secrets.NEXT_PUBLIC_TINA_BRANCH }}
EOL
- name: Build
env:
NEXT_PUBLIC_TINA_CLIENT_ID: ${{ secrets.NEXT_PUBLIC_TINA_CLIENT_ID }}
TINA_TOKEN: ${{ secrets.TINA_TOKEN }}
NEXT_PUBLIC_TINA_BRANCH: ${{ secrets.NEXT_PUBLIC_TINA_BRANCH }}
run: pnpm build
- name: Deploy to Server
uses: appleboy/scp-action@master
with:
host: ${{ secrets.SERVER_HOST }}
username: ${{ secrets.SERVER_USERNAME }}
key: ${{ secrets.SSH_PRIVATE_KEY }}
source: ".next/,public/,package.json,pnpm-lock.yaml,.env,tina/,next.config.js,.tina/"
target: "/tina/tinademo/"
rm: true
- name: Execute Remote SSH Commands
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.SERVER_HOST }}
username: ${{ secrets.SERVER_USERNAME }}
key: ${{ secrets.SSH_PRIVATE_KEY }}
script: |
cd /tina/tinademo
pnpm install
pm2 delete tinademo || true
pm2 flush tinademo
NODE_ENV=production pm2 start "pnpm start" --name tinademo

配置自定义域名

要在中国使用自定义域名与您的 TinaCMS 项目:

域名设置

  1. 从中国的提供商处购买域名(例如阿里云、腾讯云)
  2. 添加指向您阿里云服务器 IP 地址的 A 记录
  3. 更新您的 Nginx 配置:
server {
listen 80;
server_name yourdomain.cn;
# 其余配置
}

ICP 备案

请记住,在中国大陆托管的网站需要进行 ICP 备案。通过您的域名提供商或阿里云开始此过程。

结论

通过上述阿里云和 GitHub Actions 的配置,中国用户现在可以在中国大陆正常使用所有 TinaCMS 功能。此设置保持与 Vercel 相同的自动内容同步,没有功能差异。

上次编辑: July 11, 2025