eriktorsner / wp-deployhelper
一个小型工具,用于通过ftp部署WordPress安装。只有快速。
Requires
- php: >=5.3.3
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(瑞典)上进行测试