共计 735 个字符,预计需要花费 2 分钟才能阅读完成。
导语
前文配置好了裸仓库和本地同步,剩下的就是仓库和正式目录之间的自动部署。
正式目录使用 Git 连接裸仓库
同样是分为两种情况,一种是有代码,我的情况不仅是有代码,而且远端还有 GitHub;另一种是无代码,新建。
已有代码
切换到正式目录中,再添加一个远端仓库,也就是同服务器中的裸仓库,git remote add git_library /you_path/my_laravel.git
pull、push 测试一下是正常的。一个插曲,因为编辑器还开着 FTP 同步,开始总是出错????。
新建项目
clone 代码到正式目录 git clone /you_paht/my_laravel.git
配置 Git Hook
接下去切换到裸仓库的目录中,可以看到 hooks 目录下是有很多示例的
在 hooks 目录下新建 post-update 文件,编辑完成后设置权限 chmod +x post-update,文件如下
#!/bin/sh
unset GIT_DIR
DIR_ONE=/usr/local/nginx/html/myLaravel/ #正式目录
cd $DIR_ONE
git pull git_library master #新建项目 remote 默认是 origin
经过测试没有问题。因为我是在已有的项目中进行操作,遇到各种问题。一个问题是提示没有权限去修改文件。同步使用的是 git 用户,代码文件的所有者是 www-data。最终的解决办法是将 git 添加近 www-data 用户组 usermod -a -G www-data git,同时正式目录执行 chmod -R g+w。
结语
本以为很简单的流程,没想到过程一波三折。主要问题是在已有的项目中进行部署,如果是新项目会简单很多。
参考资料:用 Git 钩子进行简单自动部署、git hook 实现代码自动更新。