출처: [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
- Apache HTTP 구동시 Cannot load modules/mod_ssl.so into server: libssl.so.1.0.0: cannot open shared object file 출처: https://springboot.cloud/22 [갓.바.조.아]
- xml/apr_xml.c:35:19: fatal error: expat.h: No such file or directory
A: 아파치 설치시 --with-expat 경로가 정확히 되어있는지 확인 - 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
'컴퓨터 활용(한글, 오피스 등) > 50_2.운영체제_리눅스' 카테고리의 다른 글
내부망 (폐쇄, 사설 , 인트라넷) 에 공인 SSL 적용 (1) | 2023.10.10 |
---|---|
Apache - Tomcat 연동 (물리적 분리 - 외부망 : WEB, 내부망 : WAS) (0) | 2023.10.10 |
리눅스 사용자/그룹 계정 관리 명령어 (1) | 2023.10.09 |
서버/리눅스Cent OS 7.x Linux LVM (PV, VG, LV) 개념, 명령어 정리 (1) | 2023.10.08 |
centos7에 apache tomcat 설치 (1) | 2023.10.08 |