728x90
반응형

회사내부에 아파치를 설치할 일이 생겼는데 리눅스도 배워볼 기회와 인터넷이 안돼는 폐쇄(?)적인 특수한 환경에서 소프트웨어를 설치할 수 있는 경험을 체험할 수 있을 것 같아서 설치에 대한 경험을 공유하고자합니다.

yum, wget 사용이 안될경우에 Apache를 수동설치해야하는데  많은 의존성 때문에 설치방법이 복잡해집니다.
그렇기 때문에 파편화 되어있는 수동설치방법들에 대해서 수집하여 정리하였습니다.

 

설치조건은 아래와 같았습니다. 

  • root계정이 아닌 사용자 계정(apache)으로 설치 할 것 
  • root 디렉토리(/)가 아닌 사용자 디렉토리(/app/...)에 설치 할 것
  • 인터넷이 안되는 내부망
  • yum 같은 패키지관리자를 사용할 수 없는 부분
  • SSL 모듈설치 
  • 로드밸런싱 모듈(mod_jk)설치

 

가급적 위에서 아래로 순서있게 진행하는것을 권장합니다.

1. 필요 라이브러리


아래의 라이브러리는 아파치를 설치하는데 필요한 설치파일 및 의존성 파일을 인터넷이 되는 환경에서 다운받습니다. 
아파치 컴파일시에 필요한 파일과 써드모듈을 사용하기 위해 필요한 모듈입니다. 

 apr-1.7.0.tar.gz
 apr-util-1.6.1.tar.gz
 http-2.4.41.tar.gz
 pcre-8.42.tar.gz
 expat-2.2.9.tar.gz
 zlib-1.2.11.tar.gz 
 openssl-devel-1.0.1e-57.el6.x86_64.rpm   ( SSL 설정이 필요할경우 설치 )

 

APR -(Apache Portable Runtime) 어플리케이션의 실행을 위해 사용 될 수 있는 공용라이브러리 를 묶어 놓은것(API세트)
APR-UTIL APR 라이브러리에서 유용하게 사용되는 유틸리티성 API 들
http-2.4.41 - 아파치 웹서버 설치 파일
pcre-8.42 : (perl Compatible Regular Expressions)펄기반 정규표현 식으로 서 다양한 문자열을 쉬운 문법을 기반으로 표현
(예: 스팸문자 탐지 , 대.*리운전 )
expat-2.2.9 - C로 작성된 stream지향 XML파서이다. (Apach를 설치하기 위해 필요함)
openssl -아파치에 SSL 모듈(mod_ssl.so)적용을 위한 라이브러리

2. 필요 라이브러리 압축 해제

아파치 및 각종 설치에 필요한 유틸을 특정 디렉토리에 압축 해제합니다.
해당 예제는 home 디렉토리 밑에 temp 디렉토리에 해제합니다.

http 아파치압축을 미리 해제해두어야 합니다.

 $ cd ~ # home 디렉토리 이동 
 $ cd [다운로드 경로] # 아파치 설치 관련 파일이 다운로드된 경로
 $ tar zxf http-2.4.41.tar.gz
 $ tar zxf apr-1.7.0.tar.gz
 $ tar zxf apr-util-1.6.1.tar.gz
 $ tar zxf pcre-8.42.tar.gz
 $ tar zxf expat-2.2.9.tar.gz
 $ tar zxf zlib-1.2.11.tar.gz

# apr, apr-util 라이브러리 이동

압축 해제한 아파치 srclib/ 폴더에 apr, apr-util 을 이동시킵니다.

$ cd [path-to-apache] # 아파치 압축해제 폴더 이동 
$ mv apr-1.7.0 [path-to-apache]/srclib/apr #아파치 압축해제폴더에 apr 유틸 저장 
$ mv apr-util-1.6.1 [path-to-apache]/srclib/apr-util #아파치 압축해제폴더에 apr-util 폴더 저장

# PCRE, EXPAT 설치

# PCRE 설치 

 $ cd pcre-8.42/ 
 $ ./configure --prefix=[path-to-pcre]    
 $ make 
 $ make install

# EXPAT 설치

 $ cd expat-2.2.9/ 
 $ ./configure --prefix=[path-to-expat] 
 $ make
 $ make install


# OPENSSL-DEVEL 패키지 설치


openssl 버전과 아파치 버전의 호환이 맞지않으면 에러가 발생합니다

#### --prefix 와 --openssldir 의 경로는 설치될 경로를 지정해주어야 한다. 
 $ ./config --prefix=[path-to-openssl] --openssldir=[PATH] shared -fPIC
  

 $ make 
 $ make install

# zlib 패키지 설치

$ ./config --prefix=[PATH]. 
$ make 
$ make install

3. 아파치 톰캣 설치

아파치 설치와 함께 쓰일 각종 모듈을 포함하는 옵션을 추가하여 설치합니다.
일부 ‘--with-…’ 으로 시작 하는 옵션에 대해서는 경로명을 명시적으로 지정해주어야 합니다.

일부 설정에 대한 이슈 부분은 'Troule Shooting' 항목을 참고하시기 바랍니다.

 $ cd [아파치 압축해제 디렉토리] # configure 파일이 존재하는지 확인 
 $ ./configure --prefix=[아파치 설치 폴더] --with-pcre=[pcre 설치 폴더] --with-expat=[expat압축해제 폴더] --with-ssl=[openssl 압축   해제 폴더] --with-z=[zlib 설치 폴더] --with-included-apr --enable-module=so --enable-mods-shared=all --enable-so --enable-   deflate --enable-rewrite --enable-module=ssl --enable-ssl=shared --enable-ssl

# 아파치 톰캣 커넥터(mod_jk.so) 설치

현재 구성정보에서는 아파치 이중화가 필요로 한데 이중화에 대한 부분은 "아파치 톰캣 커넥터"에 관련모듈이 존재합니다.

연결방식은 많이 쓰이는 방식인 mod_jk 방식을 사용하여 이중화 설정을 활용합니다.

 $ cd [톰캣 커넥터 해제폴더] # configure 파일이 존재하는지 확인 
 $ ./configure --with-apxs=[아파치설치파일]/bin/apxs # apxs 파일이 존재하는지 확인

모든 과정이 정상적으로 진행되었다면 아파치가 설치된 폴더로 이동하여 modules/mod_jk.so , modules/mod_ssl.so 파일이 존재하는지 확인이 가능합니다.

Trouble Shooting


  1. Apache HTTP 구동시 Cannot load modules/mod_ssl.so into server: libssl.so.1.0.0: cannot open shared object file

    출처: https://springboot.cloud/22 [갓.바.조.아]

  2. xml/apr_xml.c:35:19: fatal error: expat.h: No such file or directory
    A: 아파치 설치시 --with-expat 경로가 정확히 되어있는지 확인

  3. libtool: error: cannot find the library '/app/apache2/tmp/apr/lib/libapr-1.la' or unhandled argument '/app/apache2/tmp/apr/lib/libapr-1.la'
    A: make clean 을 시도한 후 다시 make 합니다.

Reference


728x90
반응형

+ Recent posts