2008년 10월 19일
Apache HTTP Server 자동 설치
아파치를 자동 설치하는 방법도 SVN 클라이언트 자동 설치 크게 다르지 않다. 추가로 아파치와 톰캣 등은 어플리케이션에 맞는 설정이 필요하다.
1. 작업장으로 사용할 디렉토리를 정한다. 디렉토리 하나를 정하고 그곳에 개발에 필요한 환경을 모두 설치한다. 아파치 웹서버, 어플리케이션 서버, Ant나 Maven 등의 빌드툴 등을 모두 여기에 설치한다. 이클립스 워크스페이스도 이 디렉토리로 지정한다.
2. 각종 설정 파일은 SVN에서 관리한다. 모든 개발자가 작업 디렉토리를 모두 같은 곳으로 정하면 모두 같은 설정을 사용할 수 있다. 각기 다른 환경을 고려할 수도 있지만 자동 설치가 조금 더 어려워진다.
3. 아파치 HTTP 서버를 설치할 디렉토리를 정한다.
4. 아파치 바이너리를 다운로드 받는다. 공식 배포판은 Win32용 바이너리를 인스톨러로만 제공한다. http://www.apachelounge.com/ 에서 인스톨러가 아닌 압축된 바이너리를 받을 수 있다. 2.2.6까지는 모든 환경에서 잘 동작했는데 2.2.9 부터는 특정 환경에서만 동작한다. 현재 이유를 모르겠다.
5. 필요한 바이너리만 압축을 풀고, 위에서 정한 HTTP 서버 설치 디렉토리로 이름을 바꿔준다.
6. SVN에서 설정 파일을 다운로드 받아 기본 설정파일을 덮어 쓴다.
7. 서비스로 등록한다. 서비스 이름을 각기 다르게 하면 여러 환경을 위한 HTTP 서버를 모두 설치할 수 있다.
8. 서비스로 등록된 아파치 HTTP 서버를 시작한다.
위에서는 설치 바이너리를 외부에서 받아서 설치했으나 웹서버나 어플리케이션 서버는 어플리케이션의 일부이므로 작업 하는 어플리케이션과 마찬가지로 버전 관리를 하는 것이 좋다고 생각한다. 아파치 HTTP 서버나 톰캣의 모듈을 추가로 사용 때도 편리하고, 제어권이 없는 외부자원에 의존할 필요도 없어진다.
아파치 HTTP 서버 바이너리를 SVN으로 관리할 경우 4, 5 단계 대신에 6단계와 같이 SVN에서 export 받으면 된다. 4단계에서 언급한 문제도 정상 동작하는 바이너리나 공식 배포 바이너리를 받아서 인스톨러로 설치한 후, 설치된 파일을 SVN에 넣어 놓으면 문제를 피할 수 있다.
윈도우 환경을 기준으로 설명했지만 실행 환경으로 쓰이는 리눅스 환경도 같은 방법을 적용하면 된다. 어플리케이션에 맞는 바이너리를 빌드한 후에 SVN에 넣어 놓으면 다음 부터는 빌드할 필요 없이 손쉽게 환경 설정을 할 수 있다. 빌드 자체도 위의 설치와 같이 스크립트를 만들어 놓으면 다른 사람이 빌드 방법을 알 수 있는 문서도 되고 새 바이너리를 만들어야 할 경우도 편리하다.
자동화를 위해서는 그 과정을 명확하게 스크립트로 기술해야 한다. 나는 빌드나 설치 등 각종 자동화에서 결과인 빌드나 설치의 편리함도 중요하지만 암묵적 지식을 명시적으로 드러내어 기록한다는 점에 더 무게를 둔다.
set WORKSPACE_DIR=D:\foo-workspace
set CONF_SCM=http://svn.foo.com/foo-env/trunk/development
set HTTPD_HOME=%WORKSPACE_DIR%\apache-httpd
wget -nc http://ferienhaus-seenland.de/apache/httpd-2.2.10-win32-x86-ssl.zip
unzip httpd-2.2.10-win32-x86-ssl.zip -x "*.txt" -d %WORKSPACE_DIR%
move %WORKSPACE_DIR%\Apache2 %HTTPD_HOME%
svn --force export %CONF_SCM%/apache-httpd %HTTPD_HOME%
%HTTPD_HOME%\bin\httpd.exe -k install -n "Foo Apache"
%HTTPD_HOME%\bin\httpd.exe -k start -n "Foo Apache"
1. 작업장으로 사용할 디렉토리를 정한다. 디렉토리 하나를 정하고 그곳에 개발에 필요한 환경을 모두 설치한다. 아파치 웹서버, 어플리케이션 서버, Ant나 Maven 등의 빌드툴 등을 모두 여기에 설치한다. 이클립스 워크스페이스도 이 디렉토리로 지정한다.
2. 각종 설정 파일은 SVN에서 관리한다. 모든 개발자가 작업 디렉토리를 모두 같은 곳으로 정하면 모두 같은 설정을 사용할 수 있다. 각기 다른 환경을 고려할 수도 있지만 자동 설치가 조금 더 어려워진다.
3. 아파치 HTTP 서버를 설치할 디렉토리를 정한다.
4. 아파치 바이너리를 다운로드 받는다. 공식 배포판은 Win32용 바이너리를 인스톨러로만 제공한다. http://www.apachelounge.com/ 에서 인스톨러가 아닌 압축된 바이너리를 받을 수 있다. 2.2.6까지는 모든 환경에서 잘 동작했는데 2.2.9 부터는 특정 환경에서만 동작한다. 현재 이유를 모르겠다.
5. 필요한 바이너리만 압축을 풀고, 위에서 정한 HTTP 서버 설치 디렉토리로 이름을 바꿔준다.
6. SVN에서 설정 파일을 다운로드 받아 기본 설정파일을 덮어 쓴다.
7. 서비스로 등록한다. 서비스 이름을 각기 다르게 하면 여러 환경을 위한 HTTP 서버를 모두 설치할 수 있다.
8. 서비스로 등록된 아파치 HTTP 서버를 시작한다.
위에서는 설치 바이너리를 외부에서 받아서 설치했으나 웹서버나 어플리케이션 서버는 어플리케이션의 일부이므로 작업 하는 어플리케이션과 마찬가지로 버전 관리를 하는 것이 좋다고 생각한다. 아파치 HTTP 서버나 톰캣의 모듈을 추가로 사용 때도 편리하고, 제어권이 없는 외부자원에 의존할 필요도 없어진다.
아파치 HTTP 서버 바이너리를 SVN으로 관리할 경우 4, 5 단계 대신에 6단계와 같이 SVN에서 export 받으면 된다. 4단계에서 언급한 문제도 정상 동작하는 바이너리나 공식 배포 바이너리를 받아서 인스톨러로 설치한 후, 설치된 파일을 SVN에 넣어 놓으면 문제를 피할 수 있다.
set BINARY_SCM=http://svn.foo.com/foo-env/trunk/binary
svn --force export %BINARY_SCM%/apache-httpd-2.2.6-win32 %HTTPD_HOME%
윈도우 환경을 기준으로 설명했지만 실행 환경으로 쓰이는 리눅스 환경도 같은 방법을 적용하면 된다. 어플리케이션에 맞는 바이너리를 빌드한 후에 SVN에 넣어 놓으면 다음 부터는 빌드할 필요 없이 손쉽게 환경 설정을 할 수 있다. 빌드 자체도 위의 설치와 같이 스크립트를 만들어 놓으면 다른 사람이 빌드 방법을 알 수 있는 문서도 되고 새 바이너리를 만들어야 할 경우도 편리하다.
자동화를 위해서는 그 과정을 명확하게 스크립트로 기술해야 한다. 나는 빌드나 설치 등 각종 자동화에서 결과인 빌드나 설치의 편리함도 중요하지만 암묵적 지식을 명시적으로 드러내어 기록한다는 점에 더 무게를 둔다.
# by | 2008/10/19 17:47 | 트랙백 | 덧글(0)







☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]