在当前的开发环境中,将本地服务器与GitHub连接并实现自动化部署,已成为提升效率的关键步骤,以下为具体操作流程,适用于具备基础命令行操作能力的用户。
第一步:生成SSH密钥
本地服务器与GitHub的通信依赖SSH协议,打开终端,执行以下命令生成密钥:
ssh-keygen -t ed25519 -C "your_email@example.com"
默认保存路径为~/.ssh/id_ed25519
,生成后通过cat ~/.ssh/id_ed25519.pub
获取公钥内容。
第二步:配置GitHub仓库
1、登录GitHub,进入目标仓库的Settings > Deploy Keys。
2、点击Add deploy key(如“Server-Deploy”),粘贴公钥内容,勾选Allow write access(若需自动提交)。
第三步:服务器环境准备
1、确保服务器已安装Git:
sudo apt update && sudo apt install git -y
2、克隆仓库至服务器指定目录(如/var/www/project
):
git clone git@github.com:username/repo.git /var/www/project
第四步:自动化部署(两种方案)
方案一:Webhook触发
1、服务器安装Webhook监听工具(如webhook
):
sudo apt install webhook
2、创建钩子脚本hooks/deploy.sh
:
#!/bin/bash cd /var/www/project && git pull origin main
3、配置Webhook服务(/etc/webhook.conf
):
[ { "id": "github-deploy", "execute-command": "/var/www/project/hooks/deploy.sh", "command-working-directory": "/var/www/project" } ]
4、GitHub仓库中设置Webhook(Settings > Webhooks),URL格式为http://服务器IP:9000/hooks/github-deploy
。
方案二:GitHub Actions
1、仓库内创建.github/workflows/deploy.yml
:
name: Auto Deploy on: push: branches: [main] jobs: deploy: runs-on: ubuntu-latest steps: - name: SSH Deploy uses: appleboy/ssh-action@master with: host: your_server_ip username: root key: ${{ secrets.SSH_PRIVATE_KEY }} script: | cd /var/www/project git pull origin main
2、将服务器私钥(id_ed25519
存入仓库的Secrets,命名为SSH_PRIVATE_KEY
。
关键注意事项
1、权限控制:服务器目录需授予Git用户写入权限(例如chown -R gituser:gituser /var/www/project
)。
2、防火墙配置:开放SSH端口(默认22)或Webhook监听端口(如9000)。
3、密钥安全:私钥文件权限应设为600
,禁止外部访问。
个人观点
自动化部署的核心在于减少人为操作失误,Webhook方案适合轻量级项目,而GitHub Actions更适合需要多环境测试的场景,建议定期轮换SSH密钥,并通过日志监控(如journalctl -u webhook
)确保流程稳定。
> 引用说明:GitHub官方文档(https://docs.github.com)、Linux man-pages项目(https://man7.org)
文章摘自:https://idc.huochengrm.cn/fwq/6135.html
评论