아파치 모듈 컨피그 다중화
2014/11/14
apache module, apr, config
목적
- 아파치 모듈을 개발함에 있어서 config를 로컬/개발/스테이징/상용 과 같은 방식으로 다중화 하고 싶다.
제약사항
- 컴파일 타임에 config 를 넣고 싶진 않다.
###1. http.conf 에 Include env.conf 를 삽입한다. ###2. env_local.conf, env_staging.conf, env_dev.conf, env_biz.conf 를 생성하고 env.conf로 심볼릭 링크를 건다. ###3. env_local.conf 를 예제로 환경변수를 탑재한다. 뭐.. 다음과 같이 될 것이다.
main_db_ip 100.100.100.100
dev_mode local
###4. 아파치 모듈에서 읽어보자. 참고로 넘어오는 환경변수는 이미 아파치가 const char *로 보낸다. 그러니까 복사를 따거나 할 필요는 없다.
static const char *set_env_test_msg(cmd_parms *parms, void *mconfig, const char *scheduler_ip)
{
global_env.test_msg = scheduler_ip;
return NULL;
}
const command_rec load_env[] =
{
AP_INIT_TAKE1("test_msg", set_env_test_msg, NULL, OR_ALL, "eeee"),
// 아규먼트 2개인 경우
// AP_INIT_TAKE2("exampleAction", example_set_action, NULL, ACCESS_CONF, "Special action value!"),
{ NULL }
};
module AP_MODULE_DECLARE_DATA dawnsea_module = {
STANDARD20_MODULE_STUFF,
NULL,
NULL,
NULL,
NULL,
load_env,
register_dawnsea_hooks
};