본문 바로가기
컴퓨터 활용(한글, 오피스 등)/50_2.운영체제_리눅스

[linux] 인터넷이 안되고 루트계정없는 내부망에서 아파치 설치하기

by 3604 2023. 10. 10.
728x90

출처: [linux] 인터넷이 안되고 루트계정없는 내부망에서 아파치 설치하기 (tistory.com)

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

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


 

Apache 2.4.x 소스 설치

소스 설치와 패키지 설치 나름의 장,단점이 있지만 이미 옛날부터 회사에서 소스 설치로 Apache를 꾸려왔었기 때문에.. 저도 소스설치부터 시작해서 정리하게 되었습니다. 최종적으로 PHP도 같이

medium.com

 

출처: [linux] 인터넷이 안되고 루트계정없는 내부망에서 아파치 설치하기 (tistory.com)

728x90