Aliyun ECS + Mkdocs 网站部署与配置
一、前提条件
- 拥有一个域名,例如 
philfan.cn。 - 拥有一台服务器,且服务器具有可访问公网 IP,例如 
47.xxx.xxx.xxx。 - 已经有 Mkdocs 文档,比如 ( 
gh-pages分支 ) 
二、准备网站目录
假设你的 MkDocs 构建输出目录为 /www/philfan.cn:
sudo mkdir -p /www/philfan.cn
sudo chown -R USERNAME:USERNAME /www/philfan.cn
sudo chmod -R 755 /www/philfan.cn
⚠️
USERNAME用户是你用于部署网站的普通用户,拥有该目录的写权限即可,无需 sudo。
三、配置 Nginx
sudo apt-get install nginx -y
sudo systemctl start nginx
sudo systemctl enable nginx
sudo systemctl status nginx
1. 创建站点配置文件
sudo vi /etc/nginx/sites-available/philfan.cn.conf
内容示例:
server {
    listen 80;
    server_name philfan.cn www.philfan.cn;
    root /www/philfan.cn;
    index index.html;
    location / {
        try_files $uri $uri/ =404;
    }
    location ~ /\. {
        deny all;
    }
    gzip on;
    gzip_types text/plain text/css application/json application/javascript text/xml application/xml+rss image/svg+xml;
    gzip_min_length 256;
}
2. 测试配置并重载 Nginx
sudo ln -s /etc/nginx/sites-available/philfan.cn.conf /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
四、配置 GitHub Actions 自动上传
原理其实就是 scp 上传文件到服务器
在仓库中创建 .github/workflows/ssh-upload.yml:
name: upload-to-server
on:
  workflow_run:
    workflows: ["deploy"]
    types:
      - completed
jobs:
  upload:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout gh-pages
        uses: actions/checkout@v3
        with:
          ref: gh-pages
      - name: Deploy to Server via SSH
        uses: appleboy/scp-action@v0.1.7
        with:
          host: ${{ secrets.SSH_HOST }}
          username: ${{ secrets.SSH_USER }}
          key: ${{ secrets.SSH_PRIVATE_KEY }}
          source: "./"
          target: "/www/philfan.cn"
1. 配置 GitHub Secrets
在 GitHub 仓库 Settings → Secrets and Variables → Actions 添加:
| Secret 名称 | 内容 | 
|---|---|
| SSH_HOST | 服务器公网 IP 或域名 | 
| SSH_USER | USERNAME | 
| SSH_PRIVATE_KEY | 对应 SSH 私钥(用于登录服务器) | 
2. 生成 SSH 密钥对(本地)
ssh-keygen -t ed25519 -C "github-action-deploy"
ssh-copy-id -i ~/.ssh/id_ed25519.pub USERNAME@47.xxx.xxx.xxx 
# 也可以
cp ~/.ssh/id_ed25519.pub ~/.ssh/authorized_keys
ssh -i ~/.ssh/id_ed25519 USERNAME@47.xxx.xxx.xxx
五、阿里云 DNS 配置
- 登录阿里云控制台:https://dns.console.aliyun.com
 - 选择你的域名,进入 “解析设置”
 - 添加解析记录:
 
| 记录类型 | 主机记录 | 记录值(服务器 IP) | 说明 | 
|---|---|---|---|
| A | @ | 47.xxx.xxx.xxx | 根域名 philfan.cn | 
| A | www | 47.xxx.xxx.xxx | www.philfan.cn | 
- 保存,等待 5~10 分钟生效
 - 测试解析:
 
dig philfan.cn +short
dig www.philfan.cn +short
浏览器访问:
http://philfan.cn
https://philfan.cn   (如已配置 HTTPS)