文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
php爱好者> php教程>PHP实现git部署的方法教程解答

PHP实现git部署的方法教程解答

时间:2020-12-29  来源:互联网

在一些站点上,直接用git来部署php代码相当方便,下面这篇文章主要给大家介绍了关于PHP实现git部署的方法教程解答,需要的朋友可以参考下。

u=1778657316,3257817025&fm=26&gp=0.jpg

账号相关

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内容

/**

* 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

特别注意:

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

相关阅读更多 +
最近更新
排行榜 更多 +
元梦之星最新版手游

元梦之星最新版手游

棋牌卡牌 下载
我自为道安卓版

我自为道安卓版

角色扮演 下载
一剑斩仙

一剑斩仙

角色扮演 下载