Laravel中使用阿里云ACM
- 安全性:配置跟随源代码保存在版本管理系统中,容易造成配置泄漏
- 时效性:修改配置,需要每台服务器每个应用修改并重启服务
- 局限性:无法支持动态调整,例如日志开关、功能开关等
jason@Jason laravel % composer require donjan-deng/laravel-acm-client
Using version ^1.0 for donjan-deng/laravel-acm-client
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 6 installs, 0 updates, 0 removals
- Installing ralouphie/getallheaders (3.0.3): Loading from cache
- Installing psr/http-message (1.0.1): Loading from cache
- Installing guzzlehttp/psr7 (1.6.1): Loading from cache
- Installing guzzlehttp/promises (v1.3.1): Loading from cache
- Installing guzzlehttp/guzzle (6.5.3): Loading from cache
- Installing donjan-deng/laravel-acm-client (1.0.0): Downloading (100%)
guzzlehttp/psr7 suggests installing zendframework/zend-httphandlerrunner (Emit PSR-7 responses)
Package jakub-onderka/php-console-color is abandoned, you should avoid using it. Use php-parallel-lint/php-console-color instead.
Package jakub-onderka/php-console-highlighter is abandoned, you should avoid using it. Use php-parallel-lint/php-console-highlighter instead.
Writing lock file
Generating optimized autoload files
> Illuminate\Foundation\ComposerScripts::postAutoloadDump
> @php artisan package:discover --ansi
Discovered Package: donjan-deng/laravel-acm-client
Discovered Package: facade/ignition
Discovered Package: fideloper/proxy
Discovered Package: laravel/tinker
Discovered Package: maatwebsite/excel
Discovered Package: nesbot/carbon
Discovered Package: nunomaduro/collision
Package manifest generated successfully.
jason@Jason laravel %
env
配置文件中添加:
ALIYUN_ACM_NAMESPACE=
ALIYUN_ACM_DATA_ID=
ALIYUN_ACM_GROUP=
ALIYUN_ACM_AK=
ALIYUN_ACM_SK=
从 ACM 获取配置:
jason@Jason laravel % php artisan acm:get-config
success
jason@Jason laravel %
添加数据库配置服务:
jason@Jason laravel % php artisan make:provider DatabaseServiceProvider
Provider created successfully.
jason@Jason laravel %
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
class DatabaseServiceProvider extends ServiceProvider
{
/**
* Register services.
*
* @return void
*/
public function register()
{
// 用于绑定服务到容器,请求进入时,框架先调用所有的 provider 的 register 方法
// 所有的服务注册完毕后,再调用每个服务的 boot 方法
// 因此不能在 register 方法中调用其他 provider 提供的服务,因为不能保证其他服务已经注册完毕
}
/**
* Bootstrap services.
*
* @return void
*/
public function boot()
{
if (config('DRIVER') && strtolower(config('DRIVER')) == 'mysql') {
$this->app->get('config')->set('database.connections.mysql.host', config('DB_HOST', env('DB_HOST')));
$this->app->get('config')->set('database.connections.mysql.port', config('DB_PORT', env('DB_PORT')));
$this->app->get('config')->set('database.connections.mysql.database', config('DB_DATABASE', env('DB_DATABASE')));
$this->app->get('config')->set('database.connections.mysql.username', config('DB_USERNAME', env('DB_USERNAME')));
$this->app->get('config')->set('database.connections.mysql.password', config('DB_PASSWORD', env('DB_PASSWORD')));
}
}
}
全局注册服务 config/app.php
:
...
'providers' => [
...
App\Providers\DatabaseServiceProvider::class,
...
],
...
添加任务调度任务 app/Console/Kernel.php
:
$schedule->command('acm:get-config')->everyMinute();