环境配置文件布局解决方案

简介: 一般来说,我们有开发环境(DEV)、测试环境(TEST)、生产环境(PROD)。 怎样解决自动根据不同环境切换相应的配置文件的问题呢?   本文以PHP为例。   最简单的方法,是确保三种环境的服务器可以给出一模一样的设置给程序,如数据库地址、端口、数据库名、用户名密码等。

一般来说,我们有开发环境(DEV)、测试环境(TEST)、生产环境(PROD)。

怎样解决自动根据不同环境切换相应的配置文件的问题呢?

 

本文以PHP为例。

 

最简单的方法,是确保三种环境的服务器可以给出一模一样的设置给程序,如数据库地址、端口、数据库名、用户名密码等。但在资源紧缺的环境下可操作性不强。

 

首先,无论如何,建三个对应的配置文件是必须的。

如:

config.dev.php

config.test.php

config.prod.php/config.php

 

然后,便是自动切换的问题。

其实,正常情况下,这三者的运行环境可能都相同,无法简单的通过环境的不同进行区分。除非那种极客型的,如修改php代码,不同环境增加不同环境变量标示手动编译PHP,这样运行环境中就具备了区分标示,然后封装一个判断方法。同样在资源紧缺的情况下,可操作性不强。

剩下比较可行的,就是通过文件软连接的方式。*nix、Windows都有办法创建文件软连接,系统无论有几个配置文件,在运行时都只需要一个文件,所以在不造成相应程序大幅改动代码来实现切换的话,就是这种方案了:

config.dev.php

config.test.php

config.prod.php

 

然后手动在每种环境创建软连接config.php,指向对应的文件config.xxx.php。

实在像虚拟主机,就直接在服务器上把config.prod.php 改成 config.php

 

PS

在大型的应用中,异常复杂的无数资源需要调用的环境,专门做一个资源管理与调度的系统,然后针对每种资源如mysql服务编号命名,然后在应用环境中,调用统一的api来获取配置资源。这种方式,其实还是要在资源比较充足的情况下,尤其测试环境与正式环境不能在一台机器上。这样,可以根据应用请求的ip或端口来判断:那台是测试服务器,我就返回一个测试用的配置数据给它;这台是正式环境,就返回正式的配置。

 

PPS

有一个《2011PHP技术高峰论坛演讲-张宴》这样的课件,从当初发布到网上,期间看了很多次,里面演示的很多东西,都有很强的启发意义。

 

目录
相关文章
|
3月前
|
编译器 C语言 C++
配置C++的学习环境
【10月更文挑战第18天】如果想要学习C++语言,那就需要配置必要的环境和相关的软件,才可以帮助自己更好的掌握语法知识。 一、本地环境设置 如果您想要设置 C++ 语言环境,您需要确保电脑上有以下两款可用的软件,文本编辑器和 C++ 编译器。 二、文本编辑器 通过编辑器创建的文件通常称为源文件,源文件包含程序源代码。 C++ 程序的源文件通常使用扩展名 .cpp、.cp 或 .c。 在开始编程之前,请确保您有一个文本编辑器,且有足够的经验来编写一个计算机程序,然后把它保存在一个文件中,编译并执行它。 Visual Studio Code:虽然它是一个通用的文本编辑器,但它有很多插
|
4月前
|
传感器 Java 关系型数据库
「深入揭秘」 Micronaut配置与环境管理的隐藏技巧:如何无缝切换部署场景?
【9月更文挑战第9天】Micronaut是一款轻量级、高性能的Java/Grails框架,支持灵活的配置管理和环境感知。通过`application.yml`或`application.properties`文件,开发者可以轻松定义不同环境下的配置,如开发环境使用H2内存数据库,生产环境则连接远程MySQL数据库。Micronaut还支持通过环境变量或命令行参数覆盖配置值,增强应用灵活性和安全性。利用`@Environment`等注解,开发者能实现基于环境条件的依赖注入,使应用能够根据不同部署场景做出相应调整。这套完善的配置管理机制简化了应用维护,提高了安全性和可扩展性。
95 7
|
5月前
|
存储 Kubernetes 监控
软件环境管理问题之不可变环境的定义如何解决
软件环境管理问题之不可变环境的定义如何解决
|
Java 数据库连接 应用服务中间件
MaBatis核心配置文件
MaBatis核心配置文件
88 0
|
存储 小程序 Shell
【平台开发】技术整合思考(一)——启动配置
【平台开发】技术整合思考(一)——启动配置
117 0
|
Java Spring
编程小技巧7-配置文件自动提示功能消失解决方案
编程小技巧7-配置文件自动提示功能消失解决方案
155 0
编程小技巧7-配置文件自动提示功能消失解决方案
|
IDE Unix 编译器
C++基础(1)之设置 C++ 开发环境
C++ 是一种通用编程语言,如今广泛用于竞争性编程。它具有命令式、面向对象和通用编程特性。C++ 可以在许多平台上运行,如 Windows、Linux、Unix、Mac 等。 C++ 是一种通用编程语言,如今广泛用于竞争性编程。它具有命令式、面向对象和通用编程特性。 C++ 可以在 Windows、Linux、Unix、Mac 等许多平台上运行。在我们开始使用 C++ 编程之前。我们需要在本地计算机上设置一个环境,以成功编译和运行我们的 C++ 程序。如果你不想设置本地环境,你也可以使用在线 IDE 来编译你的程序。
218 0
|
JavaScript 前端开发 数据可视化
超级变变变,动态云组件加载实践
题目为动态组件,但为了好理解可以叫做远程加载动态组件,后面统一简化称为“远程组件”。
超级变变变,动态云组件加载实践
|
C++
配置 C 和 C++ 环境
配置 C 和 C++ 环境
124 0
因切换多个版本环境 导致SpringBoot核心配置文件绿色叶子变成Properties文件 解决方案
在这个问题上我走了很多坑 我是一个大二的学生 我这边一会班级代码 一会自己的网站项目代码 一会又是比赛的工程代码 环境都不一样切换的时候遇到了好多问题 以下是我的一个对标题的一个总结
因切换多个版本环境 导致SpringBoot核心配置文件绿色叶子变成Properties文件 解决方案