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

简介: 一般来说,我们有开发环境(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技术高峰论坛演讲-张宴》这样的课件,从当初发布到网上,期间看了很多次,里面演示的很多东西,都有很强的启发意义。

 

目录
相关文章
|
2月前
|
传感器 Java 关系型数据库
「深入揭秘」 Micronaut配置与环境管理的隐藏技巧:如何无缝切换部署场景?
【9月更文挑战第9天】Micronaut是一款轻量级、高性能的Java/Grails框架,支持灵活的配置管理和环境感知。通过`application.yml`或`application.properties`文件,开发者可以轻松定义不同环境下的配置,如开发环境使用H2内存数据库,生产环境则连接远程MySQL数据库。Micronaut还支持通过环境变量或命令行参数覆盖配置值,增强应用灵活性和安全性。利用`@Environment`等注解,开发者能实现基于环境条件的依赖注入,使应用能够根据不同部署场景做出相应调整。这套完善的配置管理机制简化了应用维护,提高了安全性和可扩展性。
49 7
|
Java 数据库连接 应用服务中间件
MaBatis核心配置文件
MaBatis核心配置文件
71 0
|
Windows
环境部署过程hosts文件不显示的解决方案
环境部署过程hosts文件不显示的解决方案
250 0
|
存储 小程序 Shell
【平台开发】技术整合思考(一)——启动配置
【平台开发】技术整合思考(一)——启动配置
112 0
|
Java 开发工具 Windows
四、实现生产、开发配置文件分离
实现生产、开发配置文件分离
150 0
四、实现生产、开发配置文件分离
因切换多个版本环境 导致SpringBoot核心配置文件绿色叶子变成Properties文件 解决方案
在这个问题上我走了很多坑 我是一个大二的学生 我这边一会班级代码 一会自己的网站项目代码 一会又是比赛的工程代码 环境都不一样切换的时候遇到了好多问题 以下是我的一个对标题的一个总结
因切换多个版本环境 导致SpringBoot核心配置文件绿色叶子变成Properties文件 解决方案
goj基础环境的配置
一、Goland官网下载 官网下载地址:https://www.jetbrains.com/go/download/other.html
225 0
goj基础环境的配置
|
Web App开发 JavaScript 前端开发
web 应用开发最佳实践之一:避免大型、复杂的布局和布局抖动
web 应用开发最佳实践之一:避免大型、复杂的布局和布局抖动
132 0
web 应用开发最佳实践之一:避免大型、复杂的布局和布局抖动
|
Java 应用服务中间件 C++
Java项目属性的配置解决方案
Java项目属性的配置解决方案
140 0
Java项目属性的配置解决方案
|
机器学习/深度学习 人工智能 物联网
扩展眼界的都在这:【方向】系列文章根目录
眼界决定人的成就高低,在新的时代只有不断接触新的技术,新的事物,才能紧跟时代潮流,顺势而为。
11054 0