自动化部署的好处 减少重复工作 确保全部目标...
###自动化部署的好处
减少重复工作
确保全部目标环境代码完全一致
方便快速地进行弹性扩展
如果部署失败,可以快速回滚
###Deployer的特性
快速回滚
并行任务:Deployer可以在多台服务器之间同时进行部署,使得部署操作更加快速
一致性:当多台服务器同时部署时,如果有一台部署失败,则全部服务器都回滚,保证了目标环境的一致性
自动化:更新代码、执行migration、修改文件权限、设置软链接等操作无需手动执行
Recipes:Deployer有许多开发者贡献的部署脚本,如果场景符合,可以直接下载使用
###安装
curl -LO https://deployer.org/deployer.phar
mv deployer.phar /usr/local/bin/dep
chmod +x /usr/local/bin/dep
###使用
mkdir yourproject
cd yourproject
dep init
能看下如下效果
可以看到,已经支持主流的框架了。这里我们做测试,就选择1好了。
###常用命令
dep init:脚本初始化
dep list:列出所有可执行命令
dep cleanup:清理旧版本
dep deploy:部署新版本
dep rollback:回滚
dep self-update:自更新
###Configure servers
方式一:
server('name', 'ip:port')
->user('user')
->password('password');
方式二:将服务器配置信息放到一个yml文件中,在deploy.php中引用server.yml文件
serverList('servers.yml');
beta:
host: ip1
user: user1
password: password1
test:
host: ip2
user: user2
password: password2
用方式二简单写了个上传到服务器以及列出服务器下 该目录下的文件夹
task('test', function () {
writeln('test...');
$appFiles = [
'app',
'artisan',
];
$deployPath = '/home/wwwroot/test';
// run("sudo ls");
foreach ($appFiles as $file)
{
upload($file, "{$deployPath}/{$file}");
}
cd($deployPath);
writeln(run("sudo ls"));
});
查看效果
ok,执行成功.
使用过程中出现的问题
解决办法:
vi /etc/sudoers
注释掉 Default requiretty 一行
#Default requiretty
###常用方法
run(string $command)
cd(string $path)
runLocally(string $command, int $timeout = 60)
upload(string $file, string $uploadFile)
download(string $localFile, string $deploymentFile)
writeln(string $message)
ok,后面就自己玩啦
###参考链接