lumen 开发多环境配置整合

2019-03-24  本文已影响0人  IT513

因为当前代码与上线都是通过Git webhook的方式管理,需要提交代码后自动同步到开发服务器、测试服务器,发布版本后自动到生产环境的服务器中,所以需要有多环境配置,不用人工再登录服务器修改配置。
注意:生产环境的数据库当前只允许 localhost 访问,就算代码仓库外漏也没办法远程连接。

lumen 5.7 利用 Vance Lucas 的 PHP 库 DotEnv 管理配置文件,默认配置文件为 .env
当前多环境配置是根据虚拟域名后缀切换不同的配置文件:

修改文件 bootstrap\app.php

image.png

修改为:


try {
    //根据域名后缀配置切换不同环境
    $httpName = isset($_SERVER['HTTP_HOST'])?$_SERVER['HTTP_HOST']:'';  //当前域名
    $suffix = substr(strrchr($httpName, '.'), 1);   //获取域名后缀
    switch ($suffix) {
        case false:
            //shell 命令环境配置(没有域名后缀)
            $environment = '.env.localhost';
            break;
        case 'z':
            //本地环境
            $environment = '.env.localhost';
            break;
        case 'd':
            //开发环境
            $environment = '.env.develop';
            break;
        case 't':
            //测试环境
            $environment = '.env.testing';
            break;
        default:
            //正式环境
            $environment = '.env.production';
            break;
    }

    (new Dotenv\Dotenv(dirname(__DIR__),$environment))->load();
} catch (Dotenv\Exception\InvalidPathException $e) {
    //
}


lumen 5.8 有点变化
原:


image.png

修改为:

image.png

新建对应的配置文件,配置完成。


image.png

附配置文件说明:

//环境
APP_NAME=Lumen  //应用名称
APP_ENV=local    //运行环境名称
APP_KEY=    // 敏感信息加密密钥,可使用 php artisan key:generate 重新生成。
APP_DEBUG=true  // 是否启用调试模式  正式环境修改为 false。
APP_URL=http://localhost   //项目访问域名
APP_TIMEZONE=UTC    //时区
//日志
LOG_CHANNEL=stack  
LOG_SLACK_WEBHOOK_URL=
//数据库配置
DB_CONNECTION=mysql   //使用的数据库
DB_HOST=127.0.0.1    //链接地址
DB_PORT=3306      //端口
DB_DATABASE=homestead  //数据库名称
DB_USERNAME=homestead  //用户名
DB_PASSWORD=secret    //用户密码
//缓存
CACHE_DRIVER=file      // 缓存驱动,默认使用文件作为缓存。
QUEUE_CONNECTION=sync  // 队列驱动,默认使用同步模式。



shell 指定环境配置文件执行

通过参数 --env= + 环境名称

#执行开环环境下的数据导入
php artisan db:seed --env=develop

lumen 5.8 修改文件 bootstrap\app.php


if($_SERVER['HTTP_HOST']){
    //根据域名后缀配置切换不同环境
    $httpName = isset($_SERVER['HTTP_HOST'])?$_SERVER['HTTP_HOST']:'';  //当前域名
    $suffix = substr(strrchr($httpName, '.'), 1);   //获取域名后缀
    switch ($suffix) {
        case false:
            //shell 命令环境配置(没有域名后缀)
            $environment = '.env.localhost';
            break;
        case 'z':
            //本地环境
            $environment = '.env.localhost';
            break;
        case 'd':
            //开发环境
            $environment = '.env.develop';
            break;
        case 't':
            //测试环境
            $environment = '.env.testing';
            break;
        default:
            //正式环境
            $environment = '.env.production';
            break;
    }
} else {

    //指定执行命令环境 
    $environment = '.env.localhost';
    // $argv 为shell 执行的命令组合
    if(!empty($argv)){
        foreach($argv as $argvStr){
            if(strstr( $argvStr , '--env=' ) !== false ){
                $environment = str_replace('--env=','.env.',$argvStr);
            }
        }
    }

}


(new Laravel\Lumen\Bootstrap\LoadEnvironmentVariables(
    dirname(__DIR__),$environment
))->bootstrap();




上一篇 下一篇

猜你喜欢

热点阅读