PHP实现git部署的方法教程

PHP实现git部署的方法教程

https://mp.weixin.qq.com/s/WH_JXah47BhQyviuuPAunw

背景

在小站点上,直接用git来部署php代码相当方便,你的远程站点以及本地版本库都有一个版本控制,追踪问题或者回滚是很轻松的事情。

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

 

账号相关

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

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

.ssh文件夹权限 700
id_rsa 600
id_rsa.pub 644
authorized_keys 600

文件权限设置

将git与站点运行nginx或者apache的用户放同一用户组,如www

vim /etc/passwd   找到git账号与www账号,将git账号的组标识变更为与www组标识一致

站点所属者设置为git,用户组设置为 www     //假设nginx与git 都归属于www用户组

目录权限设置775 ,文件权限设置为664

仓库代码

服务器端

cd 站点目录
git init //初始化目录

git配置

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

设置sudo免密

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

钩子设置

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

hook.php内容

<?php
/**
 * git上传执行钩子
 */
//TODO 安全限制
//TODO 其他钩子行为
// 清除opcache
if (version_compare(PHP_VERSION, '5.5.0', '>=')) {
 opcache_reset();
}

增加钩子可执行权限

chmod a+x .git/hooks/post-receive

本地代码

git remote add 远程仓库名称 ssh://git@IP地址:/站点目录 //添加远程仓库
git push 远程仓库名称 master

特别注意

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/112922.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • vscode写前端代码要装什么插件_AE必备插件

    vscode写前端代码要装什么插件_AE必备插件本篇文章先介绍下常见的插件,如果本文对你有所帮助请三连支持博主,你的支持是我更新的动力。vscode之所以被称为宇宙第一神器(虽然我喜欢用HBuilderX),其中丰富的插件功不可没,安装起来超级简单,给我们开发带来了极大的便捷。注意,新手学习期间,不建议安装t太多的插件,用到啥就安装啥。因为有些插件会到vue学习的时候引起冲突,所以这里就介绍几个常用的插件。vscode刚下载完毕是语言英文的,要先安装这个插件,把语言改为中文版,所以是我们第一个安装的插件就是他想必各位大佬也都用。修改开始标签,结束标签

  • ADRC学习笔记( 一)[通俗易懂]

    ADRC学习笔记( 一)[通俗易懂]近期正在自学自抗扰技术,不得不感叹韩老师乃神人也!话不多说先把这两天的学习成果与大家分享,后续在做详细的介绍。欢迎大家批评指正。(1)过渡过程输入一个阶跃信号,其跟踪效果如图所示,可以看到毫无超调。(2)扩张状态观测器(3)非线性组合(4)整个控制器结构最后附上学习的资料,需要的小伙伴自取,simulink仿真和matalb仿真代码也会陆续分享出来,敬请关注。自抗扰学习资料…

  • Excel解密——okfone解密大师

    Excel解密——okfone解密大师Excel工作表为了保护数据,设置了打开密码,时间久了就把密码忘记了,这种情况该怎么办。这个情况可以考虑使用解密软件帮你将工作簿密码找回。okfoneExcel解密大师可以解决密码忘记的问题,使用教程如下:打开okfoneExcel解密大师,点击【找回密码】将Excel文件添加进去,选择找回方法,然后点击【开始】密码找回成功就会在软件界面上显示![…

  • Hmily:高性能异步分布式事务TCC框架「建议收藏」

    Hmily:高性能异步分布式事务TCC框架「建议收藏」作者:xiaoyu  来源:分布式事务技术研究Hmily框架特性[https://github.com/yu199195/hmily]无缝集成Spring,Spring…

  • tar压缩文件

    tar压缩文件tar压缩的优点:兼容性好使用tar压缩文件tar-zcvftest.tar.gz./test/该命令表示压缩当前文件夹下的文件夹test,压缩后缀名为test.tar.gz如果不需要压缩成gz,只需要后缀为tar格式的,那么输入如下命令:tar-cvftest.tar./test/使用tar解压文件tar-xzvftest.tar.gz该命令表示把后缀为.tar.gz的文件解压到当前文件夹下。如果压缩文件的后缀是.tar,没有gz,则使用命令:tar-xvf

  • 微信朋友圈分享接口使用总结

    微信朋友圈分享接口使用总结微信朋友圈分享接口是非常细节的,而且不好调试,所以在此总结一下,以帮助大家首先应该遵循微信开发者文档介绍,用接口调试工具将你需要的接口的权限确定一下(这里得去申请接口权限)?然后将这个网址用手机端微信打开测试一下接口是否可用?http://203.195.235.76/jssdk/在保证所有的接口可用的前提下,下面我们正式进入主题我用的是java的struts框架写的后台vartimestam

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号