php通过ssh2链接到另一台服务器同步代码并重启php-fmp和supervisor
1:首先需要先按照php的ssh2拓展:
2:
//先测试拓展是否安装并开启
if (!function_exists('ssh2_connect')) {
Log::error('SSH2扩展没有安装或者没有安装成功');
return;
}
//建立ssh2连接
$ssh2 = ssh2_connect($ip, 22);
if (!$ssh2) {
Log::error('连接服务器失败');
return;
} else {
Log::info('成功连接上了服务器');
//连接成功后进行密码验证,没验证无法进行其他操作。
if (!ssh2_auth_password($ssh2, 'root', 'MyPassword')) {
Log::error('登录失败');
return false;
}
Log::info('ssh2_connect 是否存在:'.function_exists('ssh2_connect'));
//登录后的命令操作:
/**
* 改.env权限
* 拉代码
* 执行composer
* 启动php和supervisor.
*/
$code_update = "chown deployer:nginx /var/www/html/staging/mpace-stage.ixxud.cn/.env;su deployer -c 'cd /var/www/html/staging/mpace-stage.ixxd.cn/current;git pull;composer install --prefer-dist --no-scripts -q -o';systemctl restart php-fpm.service;/usr/bin/supervisord -c /etc/supervisord.conf";
ssh2_exec($ssh2, $code_update);
}
2:获取ssh2的结果:
$stream = ssh2_exec($conn, 'php -v'); stream_set_blocking($stream, true); $stream_out = ssh2_fetch_stream($stream, SSH2_STREAM_STDIO); echo stream_get_contents($stream_out);