아파치 모듈의 config를 어디에 넣을 것인가

2014/11/12

1. 컴파일 타임에 넣기

컨피그 파일등을 두고 파싱을 하든 지지고 볶든 -D 매크로를 쓰든 등등 해서 컴파일 타임때 넣는 방식이다. 배포 사고가 발생할 확률이 있다. 보안 측면에서 권장하지 않는다. 유연하지 않다.

##2. 런타임에서 컨피그 파일을 읽기

얼마되진 않지만 file io가 발생한다. 파싱 부하도 있것다. 뭐 별건 아니다. 그렇다해도 아파치 모듈을 짜는 입장에서는 좀 별로다. 초당 수천 요청이 오는데 그 때마다 컨피그를 읽기 위해서 file 시스템 콜이 발생한다는 것은 좀 찜찜하다. 잘 짜면 실시간 반영이 가능하다.

##3. 아파치 설정에서 읽기

깨끗하지만 아파치 설정 관련 코딩 노가다량이 좀 생긴다. 아파치를 재시동하지 않으면 실시간 반영은 어렵다.

##5. 공유 메모리에 넣기

공유 메모리에 컨피그를 넣는 임포터를 만든다. 속도도 가장 빠를 것이다. 뽄새는 나는데 영 번잡스럽다.

##6. 현실적인 대안이라면 아파치 설정에서 읽는 것이 괜찮은 것 같다. 또는 컨피그 파일과 조합하여 아파치 설정에서 파일명을 지정하는 것이다. 즉 아파치 설정에서 이렇게 할 수 있겠다.

REL_MODE=debug.cfg // 디버그 모드일때

REL_MODE=biz.cfg // 상용 모드 일 때

나는 그냥 귀찮아서 아파치 설정에서 읽는 것을 택하려고 한다.

대신 환경변수는 모아놓는다. 즉 env_local.cfg, env_dev.cfg, env.biz.cfg 를 생성하고 심볼릭 링크로 env.cfg를 생성하여 타겟팅한다. 컨피그 파일에는 디비 주소, 암호 등을 설정할 수 있다.

그리고 httpd.conf에 다음과 같이 처리한다.

Include env.cfg