league / shunt
此包已被废弃且不再维护。未建议替代包。
PHP 库,用于通过 SSH 在多台远程机器上并行执行命令
v2.1.1
2013-10-28 06:10 UTC
Requires
- php: >=5.3.3
- ext-ssh2: >=0.12
- symfony/console: ~2.3
Requires (Dev)
- league/phpunit-coverage-listener: ~1.0
- phpunit/phpunit: ~3.7.10
- symfony/finder: ~2.2
- symfony/process: ~2.1@dev
Replaces
- league/grunt: *
This package is not auto-updated.
Last update: 2020-01-19 17:39:56 UTC
README
#Shunt
受 Ruby 的 Capistrano 启发,Shunt 是一个 PHP 库,用于通过 SSH 在多台远程机器上执行命令。具体来说,这个库是为了简化并自动化将 PHP 应用部署到分布式环境而编写的。
安装
通过 Composer
{
"require": {
"league/shunt": "~2.0"
}
}
要求
- PHP >= 5.3.3
- libssh2
- ssh2.so
附加功能
- 支持安全复制(SCP)
- 支持安全文件传输(SFTP)
假设
Shunt 对如何做事有着非常坚定的看法,并试图将那些看法强加给你。这些观点背后的某些假设是
- 你正在使用 SSH 访问远程服务器。
- 你要么在所有目标机器上拥有相同的密码,要么已经设置了公钥以允许无密码访问。
不要期望这些假设会改变。
用法
通常,你将按照以下方式使用 Shunt
- 创建一个配方文件(
Shuntfile
)。 - 使用
shunt
脚本来执行你的配方。
从基于 composer 的项目的根目录中,使用 Shunt 脚本如下
vendor/bin/shunt some_task some_host,other_host
默认情况下,脚本将查找一个名为 Shuntfile
的文件,其中包含主机信息、凭证和你的任务。这里 Shuntfile
的结构如下
<?php
return array(
'hosts' => array(
'staging' => 'staging.domain.com',
'repro' => 'backup.domain.com',
'production' => 'production.domain.com',
),
'auth' => array(
'username' => 'shunt',
'password' => 'hearmyroar',
'pubkeyfile' => NULL,
'privkeyfile' => NULL,
'passphrase' => NULL,
),
'tasks' => array(
'read_home_dir' => function($s) {
$s->run('ls');
},
'print_php_info' => function($s) {
$s->run('php -i');
},
'upload_foo_source' => function($s) {
$s->sftp()->mkdir('source');
$s->scp()->put('foo', 'source/foo');
}
),
);
tasks
集合表示哪些任务可供执行。你可以执行 list
命令来查看所有可用的任务和主机。基于上述配方,你可以运行
vendor/bin/shunt read_home_dir .
上述命令将在 hosts
参数中定义的所有远程机器上执行 ls
命令。你可以通过在任务后追加主机昵称来告诉 Shunt 在特定主机(s)上运行任务
vendor/bin/shunt read_home_dir staging
vendor/bin/shunt print_php_info staging,production
如你所见,你可以在任务中通过调用 scp()
或 sftp()
方法轻松访问 SCP 和 SFTP 实例。以下表格显示了 SCP 和 SFTP 实例的可用 API
类型 | 方法签名 | 描述 |
---|---|---|
SCP | put($localFile = '', $remoteFile = '') |
将文件从本地发送到远程路径 |
SCP | get($remoteFile = '', $localFile = '') |
从远程到本地路径获取文件 |
SFTP | chmod($filename = '', $mode = 0644) |
尝试将指定文件的权限更改为在模式中给出的权限。 |
SFTP | lstat($path = '') |
在远程文件系统中统计符号链接,而不跟随链接。 |
SFTP | stat($path = '') |
在远程文件系统中统计文件,跟随任何符号链接。 |
SFTP | mkdir($dirname = '', $mode = 0777, $recursive = false) |
在远程文件服务器上创建一个目录,权限设置为模式。 |
SFTP | rmdir($dirname = '') |
从远程文件服务器中删除目录。 |
SFTP | symlink($target = '',$link = '') |
在远程文件系统中创建一个名为 link 的符号链接,指向目标。 |
SFTP | readlink($link = '') |
返回符号链接的目标。 |
SFTP | realpath($filename = '') |
将文件名转换为远程文件系统上的有效真实路径。 |
SFTP | rename($from = '', $to = '') |
在远程文件系统中重命名文件。 |
SFTP | unlink($filename = '') |
在远程文件系统中删除文件。 |
变更日志
贡献
请参阅CONTRIBUTING以获取详细信息。
支持
错误和功能请求在GitHub上跟踪
许可证
Shunt 以 MIT 许可证发布。有关详细信息,请参阅捆绑的LICENSE文件。