deployer 部署PHP项目

经常部署 PHP 项目,会把代码传到多台服务器上,平时用 FTP 进行上传,一方面由于上传的人为操作,非常的麻烦,
有时还会出现几台服务器代码不同步的现象。这时就迫切的需要一个管理项目上线部署的工具,恰好在网上搜到了 deployer
就试用了一下,感觉还不错,将使用过程做下记录。

安装

首先是现在安装 deployer
地址

1
2
mv deployer.phar /usr/local/bin/deployer
chmod +x /usr/local/bin/deployer

安装完毕之后,在需要部署的目录里面生成 deployer.php 部署文件

1
deployer init   // 生成 deployer.php 文件

deployer.php 文件进行编辑

设置 server

首先是设置部署服务器

1
2
3
server('pro1', 'ip地址/域名', [端口])
->user("username")
->password("password");

上面就是服务器的设置,可以设置多台
参数说明:

  1. server 里面可以传递三个参数,第一个是名称,第二个服务器地址,可以是 ip,也可以是域名,第三个参数是端口,可选,默认为 22
  2. username 登录服务器使用的用户名
  3. password 登录服务器使用的密码

上面服务器是使用用户名和密码认证登录的,也可以使用 ssh 认证的方式进行登录认证

1
2
3
server('pro1', 'ip')
->identityFile()
->user("user");

上面使用当前用户名的 id_rsa 的秘钥进行验证登录,也可以自定义

1
2
3
// ...
->identityFile('path/to/id_rsa', 'path/to/id_rsa.pub', '生成秘钥时设置的密码')
// ...

设置 task

举个栗子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
task('dev', function() {
writeln('<info>开始...</info>');
$appFiles = [
'dir1',
'dir2'
];
$deployPath = "/src/path"; // 本地文件目录
$remotePath = "/des/path"; // 服务器目录

foreach ($appFiles as $file)
{
upload($file, "{$remotePath}/{$file}"); // 上传文件
}


writeln('<info>完成.</info>');
});

上面书写了一个 dev 的任务,在命令行执行 deployer dev 就可以进行部署了。

部署完毕之后,可以到服务器进行查看。
但是这个例子会有个局限性,每次部署都是重新上传代码,这样的话,很不人性化,这时可以用到 git 版本管理,配合 git 可以达到目的。
稍微需要注意的是,在部署服务器上面要安装 git

详细配置参考 文档

函数介绍:

  1. run 运行系统命令,例: run(‘pwd’)
  2. cd 同系统命令 cd
  3. upload 上传文件,例: upload(src, des)
  4. download 下载文件 举例: download(local, remote)
  5. writeln 输出一行文字信息 举例: writeln(“info”);
    其他函数参考 函数

©版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 & 作者信息

End

坚持原创技术分享,您的支持将鼓励我继续创作!
Flyertutor WeChat Pay

WeChat Pay

Flyertutor Alipay

Alipay