PHP实现git部署的方法,可以学学!

PHP实现git部署的方法,可以学学!

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

 

在小站点上,直接用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

特别注意

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

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

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/112805.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • R-L模型算法的优缺点_模型解题

    R-L模型算法的优缺点_模型解题@[TOC]LR模型相关知识点#1.LR归一化问题,什么情况可以不归一化,什么情况必须归一化,#2.为什么提到LR损失函数要能知道交叉熵,为什么是它,以它为损失函数在优化的是一个什么东西,知道它和KL散度以及相对熵的关系#3.提到LR的求解方法,比如SGD,知道SGD和BGD的区别,知道不同的GD方法有什么区别和联系,二阶优化算法知道什么,对比offlinelearning和onlinelearning的区别#4.提到调参,知道模型不同超参数的含义,以及给定一个特定情况,大概要调整哪些参数,怎么

    2022年10月10日
    4
  • Web前端开发实战4:导航菜单(一)「建议收藏」

    Web前端开发实战4:导航菜单(一)「建议收藏」在前面的博文中我们提到横向一级菜单,这里我们来看看导航菜单。导航菜单种类很多,但是制作原理都是大同小异的,这里看的比二级下拉式菜单还简单。来看一些网站上的导航菜单:    垂直导航菜单:    水平导航菜单:    一垂直菜单   制作原理:(1)用无序列表构建菜单;(2)标签的设置:ullia{display:block;}。定义的

    2022年7月26日
    15
  • idea 查看类图_idea查看方法的实现

    idea 查看类图_idea查看方法的实现以BeanFactory为例给大家展示在Idea中查看某个接口的所有的实现类图1.展示一下BeanFactory类2.选中接口右键->Diagrams(showDiagrams)3.出现一个接口类,然后点中接口右键showimplementations或者快捷键ctrl+alt+B4.出现了图然后全选或者快捷键ctrl+a,然后回车就出现了所有的关系图…

    2022年8月15日
    5
  • 端口分类_宽带端口是什么样的

    端口分类_宽带端口是什么样的一、端口通俗地讲,端口(Port)就是电脑向网络开放的信息出入“门户”。和小区大门不同的是,在电脑上这种“门户”有个256×256(65535)个,而且它们还有多种状态。1.端口的分类根据端口和服务的绑定情况,端口可分为公认端口、注册端口和动态端口。公认端口:0~1023。这个范围内的端口系统一般保留给一些常用的系统服务,比如WEB服务使用80端口,FTP服务使用21端口

    2025年9月16日
    5
  • fasterrcnn详解_faster RCNN

    fasterrcnn详解_faster RCNNpaper:FasterR-CNN:TowardsReal-TimeObjectDetectionwithRegionProposalNetworks前言fasterrcnn是何凯明等大神在2015年提出目标检测算法,该算法在2015年的ILSVRV和COCO竞赛中获得多项第一。该算法在fastrcnn基础上提出了RPN候选框生成算法,使得目标检测速度大大提高。RCN…

    2022年10月5日
    0
  • 数字信号处理频谱分析实验_声压频谱分析仪软件

    数字信号处理频谱分析实验_声压频谱分析仪软件从实验室到现场进行测量当今的无线信号环境比以往任何时候都要复杂。面对迅速的创新,新的无线信号标准以及不断增长的频率和带宽要求,研究人员必须找到新的方法来检测RF干扰,分类信号类型,测试传播模型并确保在各种环境中的覆盖范围。他们需要一种经济高效,通用且可联网的替代方案,以替代传统的基于硬件的频谱分析设备。为了在真实条件下进行实验并验证仿真或模型,这些频谱分析解决方案必须能够在实验室和现场中部署,并与通用实验室软件和处理工具集成在一起,以进行更深入的信号分析。应用与要求无线研究人员需要的解决方案是

    2022年8月11日
    11

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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