记录一下如何在搬瓦工建一个 git 服务器,再利用勾子函数实现每次 push 代码后自动将代码部署到站点目录。
实际目的是我在本地写了个项目, 首先需要一个 git 仓库存放代码, 自然而然想到, 上传代码之后怎么上到服务器去呢?手动传多麻烦啊, 有没有每次我 push 代码 都自动部署到服务器上的方法呢?
答案是肯定的, 下面我们来一步一步配置。
安装和配置 git
查看一下 git 版本
如果没有安装 git, 请移驾新 CentOS 开发环境搭建参考安装一下
1 | $ git --version |
创建 git 用户, 并授权
创建 git 用户,根据提示设置密码
1 | $ adduser git |
赋予 git 用户 sudo 权限
1 | $ chmod 740 /etc/sudoers |
找到以下内容 并添加
1 | # User privilege specification |
保存退出后,修改回文件权限 chmod 440 /etc/sudoers
初始化 git 仓库
切换到 git 用户并创建对应目录
1 | $ su git |
root 模式下 设置 git 密码
1 | passwd git 密码 |
创建网站目录
1 | $ cd /home/wwwroot |
查看用户权限 确保dewhome.git、www.dewhome.cn目录用户组权限全是git:git
1 | $ ll /home/git/dewhome.git |
如果不是 git:git 权限, 执行下列命令
1 | $ sudo chown git:git -R /home/git/dewhome.git |
配置 Git Hooks
创建 post-receive 文件
git 用户执行:
1 | $ cd /home/git/dewhome.git/hooks |
注意:不要直接用自带编辑器打开 post-receive 文件 copy 进去了事, 最好手打。会有莫名 bug,应该跟 window 下编辑器保存格式有关。
编辑 post-receive 文件:
1 |
|
最后保存退出,赋予文件执行权限chmod +x post-receive
本地 clone 项目
1 | $ git clone ssh://git@IP:Port/home/git/dewhome.git |