阿里云是中国领先的云服务提供商。由于中国没有像Vercel那样与GitHub无缝集成的云服务,阿里云成为希望在中国大陆部署网站的开发者的首选。
阿里云提供了多种服务器选项。我们通常建议使用 弹性计算服务 (ECS) 来部署TinaCMS项目。有关创建和配置服务器的详细说明,请参考 阿里云官方文档。
创建ECS实例后,您需要设置必要的软件来管理您的TinaCMS项目。
PM2是一个用于Node.js应用程序的进程管理工具,可以帮助您的应用程序在生产环境中保持运行。
pnpm install -g pm2
Nginx将作为您的TinaCMS应用程序的反向代理。
yum install nginx
接下来,启动Nginx并设置为系统启动时自动运行:
systemctl start nginx # 启动Nginx服务systemctl enable nginx # 配置Nginx在系统启动时自动运行systemctl status 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
首先,在您的服务器上创建一个目录,用于部署您的TinaCMS项目:
mkdir -p /www/tinademocd /www/tinademo
在您的阿里云服务器上生成一个SSH密钥对:
ssh -keygen -t ed25519 -C "deploy-key"# 按Enter使用默认路径# 按Enter留空密码短语
将生成的公钥添加到authorized_keys文件中,以允许GitHub Actions进行身份验证:
cat ~/.ssh/id_ed25519.pub >> ~/.ssh/authorized_keys
生成SSH密钥后,您需要将几个Secrets添加到您的GitHub仓库中,以启用安全部署。
您需要配置以下Secrets:
SSH_PRIVATE_KEY
:在您的服务器上生成的私钥cat ~/.ssh/id_ed25519
-----BEGIN OPENSSH PRIVATE KEY----
和-----END OPENSSH PRIVATE KEY-----
SERVER_HOST
:您的阿里云服务器的IP地址SERVER_USERNAME
:连接到您的服务器的用户名root
或您在ECS实例上创建的用户账户NEXT_PUBLIC_TINA_BRANCH
:TinaCMS用于内容的分支main
或master
)NEXT_PUBLIC_TINA_CLIENT_ID
:您的TinaCloud客户端IDTINA_TOKEN
:用于身份验证的TinaCloud令牌在您的仓库中创建一个新文件,路径为.github/workflows/deploy.yml
,内容如下:
name: Deploy to Alibaba Cloud Serveron:push:branches: [main]jobs:deploy:runs-on: ubuntu-lateststeps:- uses: actions/checkout@v3- name: Setup Node.jsuses: actions/setup-node@v3with:node-version: "22.14.0"- name: Setup pnpmuses: pnpm/action-setup@v2with:version: 8- name: Install Dependenciesrun: pnpm install- name: Create .env filerun: |cat > .env << EOLNEXT_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: Buildenv: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 Serveruses: appleboy/scp-action@masterwith: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 Commandsuses: appleboy/ssh-action@masterwith:host: ${{ secrets.SERVER_HOST }}username: ${{ secrets.SERVER_USERNAME }}key: ${{ secrets.SSH_PRIVATE_KEY }}script: |cd /tina/tinademopnpm installpm2 delete tinademo || truepm2 flush tinademoNODE_ENV=production pm2 start "pnpm start" --name tinademo
要在中国使用自定义域名与您的TinaCMS项目:
server {listen 80;server_name yourdomain.cn;# 其他配置}
请记住,在中国大陆托管的网站需要进行ICP备案。通过您的域名提供商或阿里云开始此流程。