资讯专栏INFORMATION COLUMN

PHP实现git部署

silenceboy / 1850人阅读

摘要:背景小公司上班原先的系统还在使用传统的上传部署部署太麻烦也不好管控线上的代码在网上找了下部署的教程一路跟着下来碰到了不少坑现在把整个过程发出来希望可以帮助到大家账号相关新增账号密钥生成如果已经有了可略过切换至账号切换到账号根目录创建目录

背景

小公司上班,原先的系统还在使用传统的ftp上传部署,部署太麻烦,也不好管控线上的代码.在网上找了下git部署的教程.一路跟着下来,碰到了不少坑.现在把整个过程发出来,希望可以帮助到大家.

账号相关

</>复制代码

  1. useradd -m git //新增git账号
  2. ssh-keygen //密钥生成,如果已经有了可略过
  3. su git //切换至git账号
  4. cd ~ //切换到git账号根目录
  5. mkdir .ssh //创建.ssh目录
  6. cat /密钥存放目录/xxx.pub >> ~/.ssh/authorized_keys //设置公钥

此处一定要注意权限问题,否则密钥登入无法生效,各文件夹对应的权限如下

</>复制代码

  1. .ssh文件夹权限 700
  2. id_rsa 600
  3. id_rsa.pub 644
  4. authorized_keys 600
文件权限设置

</>复制代码

  1. 将git与站点运行nginx或者apache的用户放同一用户组,如www
  2. vim /etc/passwd 找到git账号与www账号,将git账号的组标识变更为与www组标识一致
  3. 站点所属者设置为git,用户组设置为 www //假设nginx与git 都归属于www用户组
  4. 目录权限设置775 ,文件权限设置为664
仓库代码
服务器端

</>复制代码

  1. cd 站点目录
  2. git init //初始化目录
git配置

</>复制代码

  1. git config receive.denyCurrentBranch ignore //设置仓库接受代码提交
设置sudo免密

</>复制代码

  1. vim /etc/sudoers
  2. # Defaults secure_path 中若没有你要的命令,要注意添加
  3. # php的命令默认需要在 secure_path最后面添加 :/usr/local/php/bin"
  4. 在 root ALL=(ALL) ALL 下面一行添加
  5. git ALL=(ALL) NOPASSWD:ALL
  6. # 保存退出 ,这样针对laravel 要重启队列命令就可以使用了.
  7. # sudo php artisan queue:restart
钩子设置

</>复制代码

  1. cd .git/hooks //切换至站点钩子目录
  2. touch post-receive //创建接收提交时钩子
  3. // 钩子文件内容如下:
  4. #!/bin/sh
  5. # 设置账号创建文件的默认权限
  6. umask 002
  7. unset GIT_DIR
  8. cd ..
  9. git checkout -f
  10. # 执行PHP钩子逻辑
  11. /usr/bin/curl http(s)://域名/钩子文字位置/hook.php
  12. # 如果有使用laravel队列则需要重启队列进程,让新代码生效
  13. # sudo php artisan queue:restart
  14. exit 0
hook.php内容

</>复制代码

  1. =")) {
  2. opcache_reset();
  3. }
增加钩子可执行权限

</>复制代码

  1. chmod a+x .git/hooks/post-receive
本地代码

</>复制代码

  1. git remote add 远程仓库名称 ssh://git@IP地址:/站点目录 //添加远程仓库
  2. git push 远程仓库名称 master
特别注意

用户上传的图片目录一定要做好文件忽视动作,否则有可能在清除未追踪文件时将此部分文件删除,造成灾难性结果

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/26221.html

相关文章

  • php + Laravel 实现部署自动化

    摘要:镜像地址掘金实现部署自动化所谓自动化部署,我的理解就是在用户保证代码质量的前提下将代码能够快速的自动部署到目标服务器上的一种手段实现原理本地推送代码代码库通知服务端自动拉取代码库代码生成并且部署公钥具体步骤参照配置公钥生成公钥使用给定 镜像地址 (掘金)php + Laravel 实现部署自动化所谓自动化部署, 我的理解就是在用户保证代码质量的前提下, 将代码能够快速的自动部署到目标服...

    李义 评论0 收藏0
  • git利用post-receive自动化部署

    摘要:要求实现直接完成代码部署到服务器的目录实现方式利用的中的来实现代码提交完成之后的动作。对于代码部署目录和仓库我们已经通过进行了关联了,因为我们一旦将代码到仓库,那么会自动检出到目录下。 要求 实现git push 直接完成代码部署到服务器的目录 实现方式 利用git的hooks中的post-receive来实现代码提交完成之后的动作。将仓库指定一个--work-tree然后进行检出操作...

    paulli3 评论0 收藏0
  • git webhooks 实现自动拉取代码

    摘要:而利用的功能,能够让我们省去这一步,下面我就以码云的为例,实现服务端的代码自动同步部署。查看是哪个用户执行该命令参考文章使用脚本远程部署项目利用实现自动部署代码码云通过实现自动同步代码部署执行系统外部命令函数 当进行开发的环境在本地,而运行的环境要在服务端时,每一次提交代码都需要在服务端pull一次。而利用git的hooks功能,能够让我们省去这一步,下面我就以码云的webhooks为...

    marek 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<