eriktorsner/wp-deployhelper

一个小型工具,用于通过ftp部署WordPress安装。只有快速。

0.1.1 2016-01-11 19:10 UTC

This package is not auto-updated.

Last update: 2024-09-24 20:58:55 UTC


README

一个简单的命令行工具,用于通过ftp协助部署。适用于远程服务器可通过ftp和http访问的特殊情况。通常,这是部署到Bluehost或GoDaddy标准Web账户等共享主机的情况。

wp-deployhelper最初是作为WP Bootstrap的辅助包编写的,这是一个WordPress部署工具,因此得名。

概念

wp-deployhelper结合使用ftp和http将更改的文件集的压缩包传输到远程服务器。通过跟踪本地和远程状态,可以将传输的文件数量保持到最小,将速度保持到最大。将标准(空)WordPress安装传输到Bluehost的典型时间是在第一次传输时大约30秒,增量更新时为5-8秒。

wp-deployhelper还提供重写功能,允许在解包后使用正则表达式重写单个文件。通常用于更改配置文件中的密码或数据库主机。

安装

要将此软件包作为本地、针对项目的依赖项添加到您的项目中,只需在您的项目的composer.json文件中添加对eriktorsner/wp-deployhelper的依赖项。以下是一个定义了依赖wp-bootstrap的composer.json文件的简单示例

{
    "require": {
        "eriktorsner/wp-deployhelper": "0.1.*"
    }
}

然后

$ composer update

配置

wp-deployhelper使用一个单一的json配置文件,该文件需要位于项目根目录,命名为ftpsettings.json。

{
    "host": "ftp.mydomain.com",
    "user": "mydomain",
    "pass": "secret",
    "remotePath": "/public_html",
    "localPath": "/vagrant/www/wordpress-default",
    "httpUrl": "www.mydomain.com",
    "rewrite": [{
        "file": "/wp-config.php",
        "pattern": "/define\\('DB_HOST', '.+'\\);/i",
        "replace": "define('DB_HOST', 'localhost');"
    }]
}

注意:主机、用户和密码用于通过标准php ftp客户端连接到远程服务器。目前不支持替代端口等。

remotePath和httpUrl需要匹配。将上传一个php脚本到远程路径,并期望可以通过httpUrl访问,如果这些不匹配,wp-deployhelper将无法正常工作。

重写规则重写规则是一个对象数组,每个对象代表一条规则。对于匹配file名称/glob模式的文件,将执行preg_replace。如果preg_replace产生任何匹配,则文件将保存为新的内容。

  • file:使用php fnmatch检查的文件名或glob模式。在解包每个文件时,它的名称将与file进行比较,如果匹配,则应用重写模式。
  • pattern作为preg_replace的pattern参数传递
  • replace作为preg_replace的replace参数传递

运行

wp-deplyhelper只有一个不带参数的命令

$ vendor/bin/wp-deployhelper deploy

保存状态

每次运行后,本地和远程状态都将保存在项目根目录下的wp-deployhelper子文件夹中。目前无法更改状态文件夹的路径或名称。

规则

目前无法配置要传输或删除的文件规则。预期的使用案例是本地服务器控制应该在服务器上存在的文件。但是,在服务器上“运行时”添加的文件将不会被删除。

注意:本地重命名的文件将被视为两个文件。一个已删除,一个新创建。

详细描述

步骤 1. wp-deployhelper 通过创建所有本地和远程文件的完整(递归)列表来工作。为了获取远程索引,将一个 PHP 脚本推送到目标服务器,利用 PHP 的 scandir 函数,而不是依赖通过 ftp(慢)进行索引。然后将这两个索引与本地和远程两端的保存状态进行比较,以确定需要传输或删除在远程服务器上的文件。

步骤 2. 在下一步中,wp-deployhelper 创建一个包含所有必需文件以及一些元信息的 zip 归档。然后通过 ftp(为了避免潜在的文件上传限制)将 zip 归档发送到目标服务器。然后调用 PHP 脚本来解压缩归档、删除应删除的文件等。

步骤 3. 作为最后一步,wp-deployhelper 获取远程状态的最新索引并保存本地和远程状态。

在本地端,索引过程使用 md5 文件哈希来检测修改过的文件。但出于性能考虑,远程端仅对修改和文件大小进行哈希。理论上,可能在远程文件上进行更改而不会被检测到,但在现实中这种情况应该很少发生。

安全

目前 wp-deployhelper 较不安全,因为它依赖明文 ftp 进行文件传输。为了提高安全性,wp-deployhelper 使用(伪)随机文件名用于脚本和 zip 文件。每次工具运行时,都会创建一个新的随机名称。一旦进程完成,zip 和 php 文件都会从目标服务器上删除。

版本历史

0.1.0

  • 第一个版本。支持远程部署和重写
  • 在 Bluehost、Loopia(瑞典)上进行测试