3

导语

前文配置好了裸仓库和本地同步,剩下的就是仓库和正式目录之间的自动部署。

正式目录使用 Git 连接裸仓库

同样是分为两种情况,一种是有代码,我的情况不仅是有代码,而且远端还有 GitHub;另一种是无代码,新建。

已有代码

  1. 切换到正式目录中,再添加一个远端仓库,也就是同服务器中的裸仓库,git remote add git_library /you_path/my_laravel.git
  2. pullpush 测试一下是正常的。一个插曲,因为编辑器还开着 FTP 同步,开始总是出错😓。

新建项目

  1. clone 代码到正式目录 git clone /you_paht/my_laravel.git

配置 Git Hook

  1. 接下去切换到裸仓库的目录中,可以看到 hooks 目录下是有很多示例的hooks
  2. 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实现代码自动更新


Haoyuqi
472 声望23 粉丝

PHPer