一、环境准备
- 项目要求
- 已完成开发的前端项目(React/Vue/Angular 等)
- 使用 Webpack/Vite 等构建工具
- 项目已托管到 Git 仓库(GitHub/GitLab/Gitee 等)
- 服务器准备
- 购买云服务器(阿里云/腾讯云/AWS 等)
- 开放 22(SSH)、80(HTTP)、443(HTTPS)端口
- 安装 Node.js 环境(建议使用 nvm 管理版本)
bashcurl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash nvm install 18
二、配置服务器部署环境
- 创建部署用户
bashadduser deployer usermod -aG sudo deployer
- 配置 SSH 免密登录
- 本地生成密钥对:
bashssh-keygen -t rsa -b 4096 -C "your_email@example.com"
- 将公钥上传到服务器:
bashssh-copy-id -i ~/.ssh/id_rsa.pub deployer@your_server_ip
- 创建项目目录
bashsudo mkdir -p /var/www/your-project sudo chown -R deployer:deployer /var/www/your-project
三、配置 GitHub 仓库
- 添加 SSH 私钥到仓库 Secrets
- 进入仓库 Settings > Secrets > Actions
- 添加新 Secret:
- Name:
SERVER_SSH_KEY
- Value: 本地
id_rsa
文件的内容
- Name:
- 添加环境变量到仓库 Secrets
- 添加以下 Secrets:
SERVER_IP
: 服务器 IP 地址SERVER_USER
: 部署用户名(deployer)DEPLOY_PATH
: 部署路径(/var/www/your-project)
四、创建 GitHub Actions 工作流
- 创建配置文件 在项目根目录创建:
.github/workflows/deploy.yml
- 创建配置文件 在项目根目录创建:
- 编写工作流配置
yamlname: Deploy to Production on: push: branches: ["main"] jobs: build-and-deploy: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v3 - name: Setup Node.js uses: actions/setup-node@v3 with: node-version: 18 - name: Install dependencies run: npm install - name: Build project run: npm run build - name: Archive build artifacts uses: actions/upload-artifact@v3 with: name: build path: dist/ - name: Deploy to Server uses: appleboy/ssh-action@v1.0.0 with: host: ${{ secrets.SERVER_IP }} username: ${{ secrets.SERVER_USER }} key: ${{ secrets.SERVER_SSH_KEY }} script: | cd ${{ secrets.DEPLOY_PATH }} git pull origin main rm -rf ./dist mv /home/deployer/build/dist ./ sudo systemctl restart nginx
五、配置 Nginx(服务器端)
- 安装 Nginx
bashsudo apt update sudo apt install nginx
- 创建站点配置文件
bashsudo nano /etc/nginx/sites-available/your-project.conf
添加以下内容:
nginxserver { listen 80; server_name your-domain.com; root /var/www/your-project/dist; index index.html; location / { try_files $uri $uri/ /index.html; } }
- 启用配置
bashsudo ln -s /etc/nginx/sites-available/your-project.conf /etc/nginx/sites-enabled/ sudo nginx -t sudo systemctl restart nginx
六、执行自动化部署
- 推送代码到 main 分支:
bashgit add . git commit -m "触发自动化部署" git push origin main
- 查看部署状态:
- 进入 GitHub 仓库 > Actions 标签页
- 查看工作流执行情况
- 访问网站:
http://your-server-ip 或 http://your-domain.com
七、高级配置(可选)
- 添加域名 SSL 证书
bashsudo apt install certbot python3-certbot-nginx sudo certbot --nginx -d your-domain.com
- 配置 CDN 加速
- 在云服务商配置 CDN
- 修改 DNS 解析记录
- 添加部署通知
- 在 GitHub Actions 中添加 Slack/钉钉/企业微信通知
- 使用
actions-cool/dingtalk-msg
发送钉钉消息
八、常见问题排查
- SSH 连接失败
- 检查服务器安全组设置
- 验证 SSH 密钥是否正确
- 测试本地 SSH 连接:
ssh -i id_rsa deployer@your-server-ip
- 文件权限问题
bashsudo chown -R deployer:deployer /var/www/your-project sudo chmod -R 755 /var/www
- Nginx 403 错误
- 检查文件路径是否正确
- 确认 index.html 文件存在
- 查看 Nginx 错误日志:
tail -f /var/log/nginx/error.log
按照以上步骤完成后,你的前端项目就实现了完整的自动化部署流程。每次向 main 分支推送代码时,GitHub Actions 会自动执行构建并部署到生产服务器。