PHP分布式部署代码同步Git实现

article/2025/9/22 21:27:38

PHP 分布式部署后 代码自动同步实现

项目架构如下:
在这里插入图片描述

需要更新代码时我们只需要把代码传到主服务器后通过定时任务主服务器自动push 代码到Git服务端,之后其他从服务器则自动从Git云端拉取最新的代码即可

需要用到 expect 软件
安装expect

yum install expect

定时push shell(不要用win编辑器编辑 不然cd 找不到文件)

#!/usr/bin/bash
cd /home/wwwroot/test
git add .
git commit -a -m auto
set timeout 60
/usr/bin/expect <<-EOF
spawn git push ssh://mgit@127.0.0.1/home/gitprojects/test master
expect "*password:"
send "123456\r"
interact
expect eof
EOF

定时pull shell

#!/usr/bin/bash
cd /home/test
#延迟5s 等待push 后在拉取
sleep 5
set timeout 60
/usr/bin/expect <<-EOF
spawn git pull ssh://mgit@127.0.0.1/home/test master
expect "*password:"
send "123456\r"
interact
expect eof
EOF

定时任务 主服务器每分钟执行 push,从服务器每分钟执行pull

* * * * * sh /home/wwwroot/test/git_push.sh
* * * * * sh /home/wwwroot/test_server/git_pull.sh

gitignore 把不需要同步的文件处理掉

application/install.lock
application/upload.lock
/.idea
/runtime
/logs
/data
/uploads/pic_cache
/.htaccess
.htaccess
.project

更新gitignore

git rm -r --cached .
git add .
git commit -m 'update .gitignore'

**注意:
1:编辑shell 不要用win 编辑器,不然cd 容易找不到文件目录
2:git 服务仓库文件夹权限应该归属推送账号,客户端运行项目权限应该归属php所属账号
3:拓容服务器拉下代码时注意项目文件夹权限要归属于php所属用户,不然代码无法创建文件夹,些日志那些
4:拓容服务器的代码不要手动改动,改了最后搞完要还原回去,不然定时pull 会有冲突,pull失败,如果已经被修改则可以手动强制同步远端代码(命令如下)
**

$ git fetch --all
$ git reset --hard origin/master
$ git pull

http://chatgpt.dhexx.cn/article/0obrxgXi.shtml

相关文章

大部分PHP程序员,都搞不懂如何安全代码部署

总结 1.创建一个普通用户账户 2.先设置所有文件夹为只读不可写 sudo chmod -R a-w /path/to/directory3.再把php执行的用户组加上 sudo chown -R username:groupname /path/to/php/files4.再把可执行的文件加入 sudo chmod -R 755 /path/to/php/files关于权限 理清PHP在Lin…

PHP项目部署到云服务器(CentOS+HTTP+PHP+MYSQL)

如何将写好的项目部署到云服务器&#xff0c;让外界可以通过互联网访问项目网站。以下使用的是腾讯云服务器操作&#xff0c;系统环境为CentOS7.9。 一、购买云服务器 打开腾讯云官网&#xff0c;注册好自己的平台账号。如果是新人的话去新人专区购买服务器&#xff0c;性价比…

phpstudy搭建nginx+php服务器显示php网页

下载了phpstudy-all.bin一键安装包&#xff0c;管理员执行./phpstudy-all.bin安装完成后&#xff0c;在火狐浏览器上输入:localhost 测试服务器是否从成功。 遇到的问题&#xff1a; 默认打开的web页面是/usr/share/nginx/www/index.html页面&#xff0c;如下 初次尝试解决&a…

php如何启动内置web服务器

前言&#xff1a; PHP从5.4开始&#xff0c;就提供了一个内置的web服务器。 当然这个主要是用来做本地的开发用的。 不能用于线上环境。 现在我就介绍一下这个工具如何使用。 前提&#xff1a; php已经加入到本地电脑的环境变量中 命令中输入&#xff1a; cd 项目目录 php -S…

公司官网建站笔记(二):在云服务器部署PHP服务(公网访问首页)

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/124659175 各位读者&#xff0c;知识无穷而人力有穷&#xff0c;要么改需求&#xff0c;要么找专业人士&#xff0c;要么自己研究 红胖子(红模仿)的博…

阿里云ECS服务器Linux环境下配置php服务器(三)--项目部署篇

在前两篇里&#xff0c;我们分别介绍了如何购买阿里云服务器&#xff0c;安装基本软件和配置&#xff08;请看阿里云ECS服务器Linux环境下配置php服务器(一)&#xff0d;&#xff0d;基础配置篇&#xff09; 以及如何安装使用phpMyAdmin&#xff08;请看阿里云ECS服务器Linux环…

阿里云ECS服务器Linux环境下配置php服务器(二)--phpMyAdmin篇

上一篇讲了php服务器的基本配置&#xff0c;我们安装了apache&#xff0c;php&#xff0c;还有mysql&#xff0c;最后还跑通了一个非常简单的php页面&#xff0c;有兴趣的朋友可以看我的这篇博客&#xff1a; 阿里云ECS服务器Linux环境下配置php服务器(一) 这一次我们来继续说…

微信小程序wx.uploadFile(上传文件)PHP服务器获取formData的数据

例如下面的代码是微信小程序上传图片的伪代码 wx.chooseImage({success: function(res) {var tempFilePaths res.tempFilePathswx.uploadFile({url: https://example.weixin.qq.com/upload, //仅为示例&#xff0c;非真实的接口地址filePath: tempFilePaths[0],name: file,fo…

树莓派4B搭建轻量级Web服务器 (Nginx,sqlite,php)

树莓派硬件的配置&#xff0c;包括外置硬盘的挂载和设置&#xff0c;系统的烧录和设置就略了&#xff0c;详情见第一篇文章。 一&#xff1a;更新源安装Nginx服务器 sudo apt-get updatesudo apt-get install nginx二&#xff1a; 启动Nginx服务器 //启动服务器的两种方式sudo…

一、用XAMPP搭建本地PHP服务器,运行php文件

一、XAMPP下载安装 点击下载&#xff0c;下载完成之后执行安装文件安装&#xff0c;一路next&#xff0c;完成。运行界面如下&#xff1a; 二、启动 这里&#xff0c;我是把XAMPP安装在了D:\XAMPP文件夹下。 点击第一行Apache后面的Start是启动XAMPP本地虚拟机(默认端口8080)…

Android手机利用KSWEB+端口转发搭建PHP服务器

Android手机利用KSWEB端口转发搭建PHP服务器 转载来自&#xff1a;https://golthr.gitee.io/articles/202002281619/ KSWEB是一款基于Android的开源服务器&#xff0c;可通过Lighttpd/Nginx/ApachePHPMySql在Android手机上搭建起自己的私人PHP WEB服务器。软件提供了上述功能…

PHP搭建服务器

1. 认识互联网 思考&#xff1a;平常我们上网的时候是怎么实现的&#xff1f; 引入&#xff1a;上网其实打开浏览器&#xff0c;然后输入一个URL&#xff0c;最后就看到了网站打开的效果。 1.1. 普通用户访问网站【了解】 定义&#xff1a;URL&#xff1a;Uniformed Resource L…

PHP本地web服务器搭建教程(通俗易懂版)

现在是北京时间21点22分&#xff1b;忙碌了一天的小菜鸡开始写起了博文。在被搭建本地服务器折磨了一天后终于成功的本人&#xff0c;怀着激动的心情写下了这篇博文&#xff0c;也算是写一篇学习笔记了&#xff0c;希望本篇博文能对想搭一个本地服务器的小伙伴们有所帮助。 好…

PHP(1)搭建服务器

PHP&#xff08;1&#xff09;搭建服务器 一、配置并安装Apache1. 配置2. 安装3. 验证4. 排错5. 重启6. 添加环境变量 二、安装PHP1. 配置2. 验证 三、Apache加载PHP四、安装虚拟主机 一、配置并安装Apache 1. 配置 下载 Apache Download解压 将解压后的文件夹复制到指定目录…

微信小程序网络请求服务器php接口获取数据库数据信息

前言 在写php接口之前 需要事先搭建好环境 1 拥有一台服务器 2 服务器安装好宝塔 3 搭建安装好Apache套件&#xff08;包括php Apache MySQL数据库等等&#xff09; 4 已经开放相应的端口 5 安装微信开发者工具 如果小白没关系&#xff0c;下面的视频会一步一步的说明很详细&…

Android Studio —— ArrayAdapter

效果 代码过程 代码 <?xml version"1.0" encoding"utf-8"?> <TextView xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:gravity"center_vertical"andro…

java arrayadapter_简单好用的Adapter---ArrayAdapter详解

拖延症最可怕的地方就是:就算自己这边没有拖延&#xff0c;但对方也会拖延&#xff0c;进而导致自己这边也开始拖延起来&#xff01;现在这个项目我这边已经是完工了&#xff0c;但是对方迟迟没有搞定&#xff0c;导致整个项目无法提交。 这就是拖延症的可怕&#xff1a;我们不…

ArrayAdapter SimpleAdapter

1.ArrayAdapter 数组适配器 用于简单的文字列表 2.SimpleAdapter 简单适配器 用户条目只有两个控件的列表 3.条目点击事件 ListView 一般用 setOnItemClickListener() 这个方法属于 AdapterView 1.先得到适配器 getAdapter() 2.在得到所在位置的条目的数…

ArrayAdapter使用示例

1&#xff09;ArrayAdapter使用示例&#xff1a; 运行效果图&#xff1a; 代码实现&#xff1a; public class MainActivity extends AppCompatActivity {Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.…

Android Listview ArrayAdapter示例

ListView 的使用大致上可以分为四个步骤&#xff1a;添加 ListView 组件、存储数据、设置列表项item的布局文件、加载数据/资源进行显示、添加监听。 这篇文章主要讲一下最简单的ArrayAdapter的用法 示例效果如下&#xff1a; 主layout文件 <?xml version"1.0"…