导语
前文配置好了裸仓库和本地同步,剩下的就是仓库和正式目录之间的自动部署。
正式目录使用 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
。
结语
本以为很简单的流程,没想到过程一波三折。主要问题是在已有的项目中进行部署,如果是新项目会简单很多。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。