intahwebz / configurator
Requires
- php: ^7.2 || ^8.0
- danack/console: ^2.6.1
- rdlowrey/auryn: ^1.0.2
Requires (Dev)
- mikey179/vfsstream: ^1.4.0
- phpunit/phpunit: 9.5.6
- squizlabs/php_codesniffer: ^3.6.0
- symfony/yaml: ^2.8.2
README
一些简单的工具,用于合理地管理配置数据。这些工具可以安全地共享环境数据。它们不是用来保存“机密”的,例如api/oauth密钥。
-
配置文件生成器
-
环境设置生成器
-
将PHP ini文件转换为PHP-FPM格式
哲学
环境变量需要细粒度控制。虽然它们可以分组为“环境”,但它们需要在每个部署的基础上可配置,而不需要复制大量信息。
它们还需要与应用程序的代码存储在一起,以便易于维护。
此库允许您完成这两件事。所有环境设置都可以以简单的方式存储,然后提取并组合为任意组合。例如,使用'centos,dev'作为环境设置将使用所有的'centos'环境设置,'dev'设置将覆盖任何重复的设置。
不喜阅读说明的人的示例用法
如果您通过Composer安装Configurator,可执行文件将在vendor/bin
目录中,并可以使用以下方式运行:
# Generate nginx config file for the centos,dev environment vendor/bin/configurate -p example/config.php example/config_template/nginx.conf.php autogen/nginx.conf "centos,dev" # Generate a PHP file that contains a function which returns the current application env settings vendor/bin/genenv -p example/config.php example/envRequired.php autogen/appEnv.php "centos,dev" # Convert a PHP ini file to be in the PHP-FPM format vendor/bin/fpmconv autogen/php.ini autogen/php.fpm.ini
配置文件生成器
此工具允许您从基于PHP的模板和存储不同环境设置的PHP数据文件生成配置文件。
源配置模板文件
<?php $config = <<< END server { access_log ${'nginx.log.directory'}/project.access.log requestTime; error_log ${'nginx.log.directory'}/project.error.log; root ${'project.root.directory'}/public; } END; return $config;
存储任意环境数据的文件
<?php $centos = [ 'nginx.log.directory' => '/var/log/nginx', 'project.root.directory' => '/home/project', ]; $windows = [ 'nginx.log.directory' => 'c:/nginx', 'project.root.directory' => 'c:/documents/project', ]; $john = [ 'project.root.directory' => '/home/workdir/project', ]
运行命令configurate data/nginx.conf.php var/generated/nginx.conf centos,john -p settings.php
将生成文件
access_log /var/log/nginx/project.access.log requestTime;
error_log /var/log/nginx/project.error.log;
root /home/workdir/project/public;
语法
configurate [-p|--phpsettings="..."] [-j|--jssettings="..."] 输入 输出 环境
-p | 逗号分隔的PHP数据文件列表。每个都需要返回一个数据数组。 |
-j | 逗号分隔的JSON数据文件列表。 |
-y | 逗号分隔的YAML文件列表。 |
输入 | 输入模板文件。 |
输出 | 要写入的输出文件。 |
环境 | 逗号分隔的应应用的环境设置列表。 |
生成环境设置
一个工具,它将解析应用程序所需的环境设置和数据文件,这些数据文件存储了所有环境设置,并生成一个包含函数的文件,该函数返回此应用程序所需的env设置数组。
给定此文件列出了应用程序所需的环境设置
<?php use ExampleApp\AppConfig; $env = [ AppConfig::CACHING_SETTING, AppConfig::SCRIPT_PACKING, AppConfig::FILE_STORAGE ]; return $env;
以及一个存储各种环境设置数据的文件
$dev = [ AppConfig::SCRIPT_PACKING => true, AppConfig::CACHING_SETTING => 'caching.disable', ]; $live = [ AppConfig::SCRIPT_PACKING => true, AppConfig::CACHING_SETTING => 'caching.time' ]; // Anyone doing UX testing needs to have the scripts packed together // to avoid slow UI responses $uxtesting = [AppConfig::SCRIPT_PACKING => true];
运行命令bin/genenv -p environment/config.php environment/envRequired.php env.php dev,uxtesting
将生成一个包含所有请求的env设置的文件
<?php function getAppEnv() { static $env = [ 'caching.setting' => 'caching.disable', 'script.packing' => 'true', ]; return $env; }
键是实际的字符串,而不是应用程序中使用的常量,以便可以在应用程序外部使用设置。
语法
genenv [-p|--phpsettings="..."] [-j|--jssettings="..."] 输入 输出 环境
-p | 逗号分隔的PHP数据文件列表。每个都需要返回一个数据数组。 |
-j | 逗号分隔的JSON数据文件列表。 |
-y | 逗号分隔的YAML文件列表。 |
输入 | 输入模板文件。 |
输出 | 要写入的输出文件。 |
环境 | 逗号分隔的应应用的环境设置列表。 |
将 PHP ini 文件转换为 PHP-FPM 格式
由于某些原因,PHP-FPM 在 PHP-FPM 配置文件中包含池中的 ini 文件时,不使用标准的 PHP 文件格式。配置器这方面的功能将 PHP 风格的 ini 文件转换为 PHP-FPM 所期望的格式
输入 ini 文件
extension=imagick.so
default_charset = "utf-8";
post_max_size = 10M
运行命令 php bin/fpmconv example.php.ini example.phpfpm.ini
将生成此 PHP-FPM ini 文件
php_admin_value[extension] = "imagick.so"
php_admin_value[default_charset] = "utf-8"
php_admin_value[post_max_size] = "10M"