centos搭建服务器上的GIT并实现自动同步到站点目录(www)
封面图
•
2026-01-08
•
Linux
486
0
0
0
在 CentOS 服务器上搭建 Git 并实现自动同步到站点目录(如 `/var/www/html`),可以按照以下步骤操作。这个过程主要包括安装 Git、创建 Git 仓库、配置 Webhook 或使用 Git Hook 实现自动部署。 --- ## ✅ 一、安装 Git 首先确保系统已更新,然后安装 Git: ```bash sudo yum update -y sudo yum install git -y ``` 验证安装是否成功: ```bash git --version ``` --- ## ✅ 二、创建项目目录和 Git 仓库 假设你的站点目录是 `/var/www/html`,我们将在该目录下初始化一个 Git 仓库: ```bash cd /var/www/html sudo git init --bare ``` > `--bare` 表示这是一个裸仓库,用于远程推送,不包含工作目录。 --- ## ✅ 三、创建 Git Hook 实现自动同步 Git Hook 是 Git 提供的脚本机制,可以在特定事件发生时执行自定义命令。我们可以使用 `post-receive` 钩子来实现代码推送到远程仓库后自动拉取到站点目录。 ### 1. 创建 `post-receive` 脚本 进入 Git 仓库的 hooks 目录: ```bash cd /var/www/html/hooks sudo nano post-receive ``` 添加以下内容: ```bash #!/bin/bash GIT_DIR=/var/www/html TARGET_DIR=/var/www/html # 检出代码到目标目录 git --work-tree=$TARGET_DIR --git-dir=$GIT_DIR checkout -f ``` 保存并退出(Ctrl+O,Enter,Ctrl+X)。 ### 2. 设置脚本可执行权限 ```bash sudo chmod +x post-receive ``` --- ## ✅ 四、本地客户端配置 在你的开发机器上,将远程仓库指向你的 CentOS 服务器: ```bash git remote add origin user@your-server-ip:/var/www/html ``` > 替换 `user` 为你的 SSH 用户名,`your-server-ip` 为你的服务器 IP 地址。 然后推送代码: ```bash git push origin master ``` > 如果你用的是 `main` 分支,请替换为 `main`。 --- ## ✅ 五、测试自动部署 在本地修改文件并提交,然后推送: ```bash echo "Test file" > test.txt git add . git commit -m "Test commit" git push origin master ``` 检查服务器上的 `/var/www/html` 是否有新文件,表示部署成功。 --- ## ✅ 六、配置 SSH 密钥(可选但推荐) 为了避免每次推送都需要输入密码,建议配置 SSH 密钥认证。 ### 1. 在本地生成 SSH 密钥(如果还没有): ```bash ssh-keygen -t rsa -b 4096 ``` ### 2. 将公钥复制到服务器: ```bash ssh-copy-id user@your-server-ip ``` ### 3. 测试连接: ```bash ssh user@your-server-ip ``` --- ## ✅ 七、注意事项 - 确保 `/var/www/html` 的权限正确,允许 Git 用户读写。 - 如果你是通过 `www-data` 或其他用户运行 Web 服务(如 Nginx/Apache),请确保 Git 仓库和目标目录的权限一致。 - 可以使用 `chmod` 和 `chown` 来调整权限: ```bash sudo chown -R apache:apache /var/www/html ``` --- ## ✅ 八、进阶:使用 Git WebHook(可选) 如果你希望从 GitHub、GitLab 等平台触发自动部署,可以使用 WebHook 触发脚本。 例如,使用 [GitHub WebHook](https://developer.github.com/webhooks/) 配合 [webhook](https://github.com/adnanh/webhook) 或者自定义脚本。 --- ## ✅ 总结 | 步骤 | 内容 | |------|------| | 安装 Git | `yum install git` | | 初始化裸仓库 | `git init --bare` | | 配置 Hook | 使用 `post-receive` 自动拉取代码 | | 推送代码 | `git push origin master` | | 自动部署 | 代码推送到远程仓库后自动同步到站点目录 | --- 如有需要,我可以提供完整的部署脚本或帮助你集成到 CI/CD 流程中。欢迎继续提问!
上一篇:
linux系统中的用户态和内核态都是什么?怎么理解转换原理?
下一篇:
elasticsearch 后台启动
标题录入,一次不能超过6条
留言
评论