对于phper来说部署项目和更新项目是很方便的,只要直接将写好的项目覆盖到项目的根目录就可以啦。但是平时项目开发的时候肯定不是只部署一个环境,一般是三套环境(开发环境、测试环境、生产环境),我们每次在开发环境开发完之后要将项目更新到测试环境和生产环境上,如果每次更新的话都是将项目复制然后手动的去覆盖到项目的根目录下的话就太麻烦啦,而且也容易出错所以我们应该有一套项目管理系统来方便的管理项目的更新迭代,大致结构如下:

画的不好但是意思是对的,这样的话就可以通过一个脚本文件直接更新代码啦,更重要的是我们可以通过php中的 exec() 函数来操作脚本,这意味着我们可以使用php来开发这个项目管理平台,今天只说如何配置rsync。

实验环境:

docker(ubuntu镜像)实例化两台虚拟器

在两台虚拟机上都安装好 rsync 工具,rsync 使用分两种情况,一种是客户端使用(直接执行 rsync 相关命令)另一种是服务器端使用(以daemon模式执行)

配置 rsync 服务端

首先要在 `/etc` 目录下手动添加个 rsyncd.conf 文件并填写相关配置,配置选项解释如下:

port=837  #监听端口默认 873
log file=/var/log/rsync.log #rsync日志
pid file=/var/run/rsync.pid #rsync运行时生成的pid存放目录
[abc] #模块名称
path=/var/www/html #模块对应的目录
use chroot=yes #是否限定为模块默认目录
max nonections=4 #指定最大可以连接的客户端数
read only=no #yes 为改模块内容只允许读,no 为该模块允许读写
list=yes #是否允许 使用 `rsync ip地址::` 列出模块名
uid=root #以哪个用户的身份来传输
gid=root #以哪个组的身份来传输
auth users=root #指定验证用户名,如果不设置则可以不用密码进行传输
secrets file=/etc/rsync.passwd #指定用户名和密码的存放文件 注:文件需要以 "用户名:密码"的形式存储 并且需要设置权限 chmod 600 rsync.passwd

从客户端读取服务器端文件

rsync --port=837 -avz root@192.168.99.100::abc /myweb

这时会将服务端 /var/www/html 目录下的文件同步到 客户端的 /web 目录下

从客户端推送文件到服务端

rsync --port=837 -avzH /myweb/ root@192.168.99.100::abc

这时会将客户端的 /web 目录下的文件同步到 服务端 /var/www/html 目录下

对于 rsync 命令各个选项的含义 建议看下这篇文章吧,这哥们写的翻译的挺详细的  @骏马金龙  man rsync翻译(rsync命令中文手册)

使用rsync工具构建php项目管理平台的更多相关文章

  1. 《基于Apache Kylin构建大数据分析平台》

    Kyligence联合创始人兼CEO,Apache Kylin项目管理委员会主席(PMC Chair)韩卿 武汉市云升科技发展有限公司董事长,<智慧城市-大数据.物联网和云计算之应用>作者 ...

  2. Jmeter+maven+Jenkins构建云性能测试平台(mark 推荐)

    转自:http://www.cnblogs.com/victorcai0922/archive/2012/06/20/2555502.html Jmeter+maven+Jenkins构建云性能测试平 ...

  3. 【转】Kylin系列-使用Saiku+Kylin构建多维分析OLAP平台

    关于Kylin的介绍和使用请参考之前的文章 <分布式大数据多维分析(OLAP)引擎Apache Kylin安装配置及使用示例> Kylin对外提供的是SQL查询接口,基于Kylin构建OL ...

  4. 利用Azure Functions和k8s构建Serverless计算平台

    题记:昨晚在一个技术社区直播分享了"利用Azure Functions和k8s构建Serverless计算平台"这一话题.整个分享分为4个部分:Serverless概念的介绍.Az ...

  5. 什么是云效 Projex,云效Projex企业级高效研发项目管理平台

    云效项目协作Projects是一款企业级高效研发项目管理平台, 提供了快速实践的敏捷研发项目管理机制,提供对需求.迭代.缺陷各个维度的协同管理以及相关的统计报告,让研发团队高效协作.践行敏捷并持续交付 ...

  6. 基于Apache Hudi在Google云构建数据湖平台

    自从计算机出现以来,我们一直在尝试寻找计算机存储一些信息的方法,存储在计算机上的信息(也称为数据)有多种形式,数据变得如此重要,以至于信息现在已成为触手可及的商品.多年来数据以多种方式存储在计算机中, ...

  7. 以太坊开发DApp实战教程——用区块链、星际文件系统(IPFS)、Node.js和MongoDB来构建电商平台(一)

    第一节 简介 欢迎和我们一起来用以太坊开发构建一个去中心化电商DApp!我们将用区块链.星际文件系统(IPFS).Node.js和MongoDB来构建电商平台类似淘宝的在线电商应用,卖家可以自由地出售 ...

  8. 基于Jmeter+maven+Jenkins构建性能自动化测试平台

      一.目的: 为能够将相关系统性能测试做为常规化测试任务执行,且可自动无人值守定时执行并输出性能测试结果报告及统计数据,因此基于Jmeter+maven+Jenkins构建了一套性能自动化测试平台 ...

  9. Polaristech 刘洋:基于 OpenResty/Kong 构建边缘计算平台

    2019 年 3 月 23 日,OpenResty 社区联合又拍云,举办 OpenResty × Open Talk 全国巡回沙龙·北京站,Polaristech 技术专家刘洋在活动上做了<基于 ...

随机推荐

  1. CF1214D

    CF1214D 题意: 给你一个 $ n \times m $ 的矩阵,求最少用多少个障碍,将 $ (1,1) $ 到 $ (n,m) $ 的路径堵死. 题意: 因为可以将起点两边堵死,所以答案最多是 ...

  2. mysql.zip版本的安装教程

    MySQL zip版本安装 一直以来都习惯了使用MySQL安装文件(.exe),今天下载了一个.zip版本的MySQL,安装过程中遇到了一些问题,如下: 1.在MySQL官网上(http://dev. ...

  3. RAFT选举算法-分布式数据库困惑

    在做HIS研发工作的时候一直想完善其数据组件,想做一个分布式的数据库支持系统.但一直以来都不清楚这个选举算法应怎么做,原来有一个叫raft的算法https://www.cnblogs.com/just ...

  4. 经典算法:n个人围成一圈,报m的离开,最后剩下谁?

    public int remainPersonNumber(int n, int m) { //输入不合法 if(n < 1 || m < 1) return -1; //初始化,存入Li ...

  5. Linux设备驱动程序 之 per-cpu变量

    数组形式 支持SMP的现代操作系统使用每个cpu上的数据,对于给定的处理器其数据是唯一的:一般来说,每个cpu的数据存放在一个数组中,数组总的每一项对应着系统上的一个存在的处理器:按当前处理器号确定这 ...

  6. Linux设备驱动程序 之 vmalloc

    vmalloc()函数的工作方式类似于kmalloc(),只不过在前者分配的内存虚拟地址是连续的,而物理地址则无须连续:这也是用户空间分配函数的工作方式:由malloc()返回的页在进程的虚拟地址空间 ...

  7. Jquery.Data()和HTML标签的data-*属性

    Jquery.Data()和HTML标签的data-*属性 一.总结 一句话总结: 在页面中用到要用标签存数据还是用HTML标签的data-*属性,这样 不会破坏html本身的结构 1.使用HTML标 ...

  8. 彻底搞清楚javascript中的require、import和export(js模块加载规范的前世今生)

    为什么有模块概念 理想情况下,开发者只需要实现核心的业务逻辑,其他都可以加载别人已经写好的模块. 但是,Javascript不是一种模块化编程语言,在es6以前,它是不支持”类”(class),所以也 ...

  9. JS判断与过滤的表情符号表情的方法

    一.js判断文本中是否有表情符号表情 isEmojiCharacter(substring){ for ( var i = 0; i <substring.length; i ++){ var ...

  10. python中的cls到底指的是什么

    python中的cls到底指的是什么,与self有什么区别? 2018年07月31日 11:13:09 rs勿忘初心 阅读数:7769   作者:秦风链接:https://www.zhihu.com/ ...