个人项目的代码保存在Git仓库里,不定时提交,每次push之后,想在线上预览效果,都得登录服务器执行pull,觉得很繁琐。因为对实时性无要求,所以写了个简单的脚本,设置定时任务,每晚十一点半pull代码,第二天就能预览了。

首先在服务器上建立一个与项目目录同级的文件,这里取名为pull.php,编辑内容如下:

1
2
3
4
5
6
<?php
#!/usr/local/php/bin/php -q // php可执行命令
$target = '/data/wwwroot/codecourse'; // 项目路径
$cmd = 'cd '.$target.' && git pull'; // 操作命令
echo $cmd .' --- '. date('Y-m-d H:i:s') . PHP_EOL; // 输出信息
echo shell_exec($cmd) . PHP_EOL; // 输出执行结果

crontab内容如下:

1
30 23 * * * /usr/local/php/bin/php -f /data/wwwroot/pull.php >> /data/wwwroot/git.log

再建立一个同级的日志文件,用来记录定时任务每次执行的结果,这里取名为git.log。为这个文件赋可写入权限。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
cd /data/wwwroot/codecourse && git pull --- 2017-05-08 23:30:01
Updating 3504c48..8b251d7
Fast-forward
app/Http/Constants/ErrCode.php | 6 +
.../Controllers/Web/Frontend/AccountController.php | 29 +++++-
.../Controllers/Web/Frontend/SendController.php | 2 +-
app/Http/Helpers/Response.php | 16 +++
app/Http/Models/Cores/Account.php | 28 +++++-
app/Http/Models/Services/Sender/Message.php | 97 ++++++++++++++++++-
config/app.php | 2 +-
resources/views/frontend/register.blade.php | 99 ++++++++++++--------
resources/views/layout/master.blade.php | 2 +-
9 files changed, 221 insertions(+), 60 deletions(-)
create mode 100644 app/Http/Helpers/Response.php

最后,注意一下shell_exec方法在php.ini配置文件里是否启用。