如题,找了半天貌似都没有符合laravel的天朝网络环境的的部署脚本, 于是乎结合参考了多个部署脚本和工具的理念又造了个新轮子:

https://github.com/nickfan/envoy-deployscript

使用说明见:https://github.com/nickfan/envoy-deployscript/blob/master/README.zh-CN.md

欢迎大家测试吐槽。

主要特点:

支持本地构建打包部署

1
envoy run deploy_localrepo_install --branch=master --env=production

支持工作拷贝本地构建依赖模块(vendor目录)

1
envoy run deploy_mix_pack

原理/设计规划

你的 $deploybasepath 远程部署基础路径将会看起来像如下这样(如果你有多个子应用在同一个部署基路径里).

1
2
3
    mysite/
    mysite2/
    mysite3/

你的 $deploybasepath/$appname 远程部署应用路径将会看起来如下.

1
2
3
4
5
6
    releases/release_20150717032737/
    releases/release_20150717034646/
    current -> ./releases/release_20150717034646
    shared/storage/
    tmp/
    .env

正如你所见的, current 目录是软链到最近一次的部署目录的

在你的部署目录中文件列表看起来像下面这样(只列举了部分文件做例子):

1
2
3
4
5
6
7
8
    app/
    artisan
    boostrap/
    public/index.php
    composer.json
    .env -> ../../.env
    storage -> ../../shared/storage
    vendor/

部署目录中的.env文件和storage文件夹都软链接到了上级应用目录中的公共文件/文件夹了,这样部署本身只部署源代码和vendor等依赖环境, storage等公共数据在shared文件夹中并不随代码部署,节省了空间也保留延续了日志/应用cache等相关基础数据在应用中的使用