Engineering/WEB & WAS

[Apache] 아파치 HTTPD Server v2.4.52 설치 (Source Compile)

[앙금빵] 2021. 11. 22.

1. Prerequisite

configure 작업 시 필요한 유틸리티 설치

(리눅스 버전에 따라 일부 작업은 불필요할 수 있다.)

① C 및 C++ Compiler 설치

  • Source Compile을 진행하기 위해서는 gcc Compiler가 필요하다.
sudo yum install -y gcc 
sudo yum install -y gcc-c++

# 한 줄에 한번에 설치
sudo yum install -y gcc gcc-c++

② XML parser 라이브러리 설치

  • Apache 2.4를 설치하기 위해서는 apr, apr-util, pcre 패키지를 설치해야 한다.
  • 이 패키지들을 설치하기 위해서는 XML parser 라이브러리를 설치해야 한다.
sudo yum -y install expat
sudo yum -y install expat-devel
sudo yum -y install expat-static

# 한줄에 한번에 설치
sudo yum install -y expat expat-devel expat-static

③ PCRE 설치

  • PCRE( Perl Compatible Regular Expressions )는 펄 호환 정규 표현식으로서, 정규식 패턴 일치를 구현하는 함수의 집합
  • 최근 Apache, PHP, KDE 등을 포함한 오프 소스 프로젝트에서 사용되고 있으며, 아파치 2.4 버전을 설치할 때는 pcre를 설치해야 한다.
 💡 apr (Apache Portable Runtime ) , apr-util 💡
- 아파치 2.0을 설치할 때는 yum으로 apr, apri-util을 설치하지 않았음
- 아파치 2.4 이상에서는 apr, apr-util이 없기 때문에 별도로 설치해야 함.

 

2. Apache v2.4.52설치

# /tmp/lib 디렉토리 이동 웹에서 필요파일 다운로드
mkdir /tmp/lib
cd /tmp/lib

# 아파치 공식홈페이지를 통한 다운로드 & 압축해제
# https://www.pcre.org/
wget https://sourceforge.net/projects/pcre/files/pcre/8.45/pcre-8.45.tar.gz/download
tar xvfz download

# Apache 설치 & 압축해제
wget https://dlcdn.apache.org//httpd/httpd-2.4.52.tar.gz
tar xvfz httpd-2.4.52.tar.gz

# APR 설치 & 압축해제
wget https://mirror.navercorp.com/apache//apr/apr-1.7.0.tar.gz
tar xvfz apr-1.7.0.tar.gz

# APR-util 설치 & 압축해제
wget https://mirror.navercorp.com/apache//apr/apr-util-1.6.1.tar.gz
tar xvfz apr-util-1.6.1.tar.gz

# /tmp/lib 내용 확인
[root@bastion lib]# ls
apr-1.7.0  apr-1.7.0.tar.gz  apr-util-1.6.1  apr-util-1.6.1.tar.gz  download  httpd-2.4.51  httpd-2.4.51.tar.gz  pcre-8.45

 

2-1. 디렉토리 이동

# 압축을 푼 4개 디렉터리를 /usr/local/로 이동
mv apr-1.7.0 apr-util-1.6.1 httpd-2.4.52 pcre-8.45 /usr/local/

 

2-2. APR 설치

# APR 설치
cd /usr/local/src/apr-1.7.0

# 절대경로 지정
# ./configure = 설치를 위한 환경 설정 | --prefix = 절대경로 --with 라이브러리 참조
./configure --prefix=/usr/local/src/apr-1.7.0 

# 설치
make && make install
💡 make & make install
make = configure에 의해 만들어진 makefile로 프로그램 컴파일
make install = 컴파일된 프로그램, 환경파일, 데이터 파일을 지정된 위치에 복사하는 과정

 

2-3. APR-UTIL 설치

# APR-UTIL 경로 이동
cd /usr/local/src/apr-util-1.6.1

# 반드시 --with 뒤에 내가 설치한 APR 버전을 넣는다
./configure --prefix=/usr/local/src/apr-util-1.6.1 --with-apr=/usr/local/src/apr-1.7.0

# 설치
make && make install

 

2-4. PCRE 설치

cd /usr/local/src/pcre-8.45

# 반드시 --with 뒤에 내가 설치한 APR 버전을 넣는다
./configure --prefix=/usr/local/src/pcre-8.45 \
--with-apr-util=/usr/local/src/apr-util-1.6.1 \
--with-apr=/usr/local/src/apr-1.7.0

# 설치
make && make install

 

2-5. 아파치(httpd) 설치

# 압축해제한 httpd 디렉토리 이동
cd /usr/local/src/httpd-2.4.52/

# 절대경로 지정
./configure --prefix=/usr/local/apache2.4.52 \
--enable-modules=most --enable-mods-shared=all --enable-so \
--with-apr=/usr/local/src/apr-1.7.0 \
--with-apr-util=/usr/local/src/apr-util-1.6.1 \
--with-pcre=/usr/local/src/pcre-8.45

# 설치
make && make install

# 서버 이름 설정
vim /usr/local/apache2.4/conf/httpd.conf

ServerName을 검색해서 사진과 같이 수정한다.

(Error) 서버 이름 설정 안할시 나타나는 에러

# : <https://httpd.apache.org/docs/2.4/en/mod/mod_authz_core.html#require>

# 서버 이름 설정 안할시 나타나는 에러
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::fe:64ff:fe01:513a%eth0. Set the 'ServerName' directive globally to suppress this message

 

💡 ServerName

서버의 자신의 도메인 명을 적는 부분이다. 처음 설치 시 기본적으로 주석처리가 되어 있으며 도메인이 없으면 IP 주소를 적는다.

💡 Proxy 연동시 ServerName & <Directory>반드시 설정

  • Require all granted: 무조건 허용
  • Require all denied: 무조건 금지
  • Require ip 10 172.20 192.168.2: 특정 아이피만 접근 허용.
    (여기서는 10, 172.20, 192.168.2로 시작하는 아이피 세 개를 허용한다는 의미)

 

3. 실행하기

 cd /usr/local/apache2.4.52

# 버전확인
[root@test apache2.4.52]# ./bin/httpd -V

Server version: Apache/2.4.52 (Unix)
Server built:   Dec 29 2021 05:18:43
Server's Module Magic Number: 20120211:121
Server loaded:  APR 1.7.0, APR-UTIL 1.6.1
Compiled using: APR 1.7.0, APR-UTIL 1.6.1
Architecture:   64-bit
Server MPM:     event
  threaded:     yes (fixed thread count)
    forked:     yes (variable process count)
Server compiled with....
 -D APR_HAS_SENDFILE
 -D APR_HAS_MMAP
 -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
 -D APR_USE_PROC_PTHREAD_SERIALIZE
 -D APR_USE_PTHREAD_SERIALIZE
 -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
 -D APR_HAS_OTHER_CHILD
 -D AP_HAVE_RELIABLE_PIPED_LOGS
 -D DYNAMIC_MODULE_LIMIT=256
 -D HTTPD_ROOT="/usr/local/apache2.4.52"
 -D SUEXEC_BIN="/usr/local/apache2.4.52/bin/suexec"
 -D DEFAULT_PIDLOG="logs/httpd.pid"
 -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
 -D DEFAULT_ERRORLOG="logs/error_log"
 -D AP_TYPES_CONFIG_FILE="conf/mime.types"
 -D SERVER_CONFIG_FILE="conf/httpd.conf"


# 아파치 시작
[root@test apache2.4.52]# ./bin/apachectl start

[root@test apache2.4.52]# netstat -tulpn | grep httpd
tcp6       0      0 :::80                   :::*                    LISTEN      25045/httpd         

[root@test apache2.4.52]# ps -ef | grep httpd
root     25045     1  0 05:30 ?        00:00:00 /usr/local/apache2.4.52/bin/httpd -k start
daemon   25046 25045  0 05:30 ?        00:00:00 /usr/local/apache2.4.52/bin/httpd -k start
daemon   25047 25045  0 05:30 ?        00:00:00 /usr/local/apache2.4.52/bin/httpd -k start
daemon   25048 25045  0 05:30 ?        00:00:00 /usr/local/apache2.4.52/bin/httpd -k start
root     25134  4211  0 05:30 pts/0    00:00:00 grep --color=auto httpd

curl localhost 를 했을 때 It works! 라고 뜨면 정상적으로 아파치가 실행된 것이다.

[root@test apache2.4.52]# curl localhost
<html><body><h1>It works!</h1></body></html>

참조

아파치(apache) 웹 서버 수동으로 구축하기 https://ansan-survivor.tistory.com/120?category=363952

아파치 2.4 소스 컴파일 설치 https://victorydntmd.tistory.com/220

아파치 permission(디렉토리) 설정 https://mytory.net/archives/3143

아파치 웹 서버 관련 파일/디렉토리 https://tar-cvzf-studybackup-tar-gz.tistory.com/12

포트번호로 Apache 가상 호스트 설정하기 https://mytory.net/archives/13

 

댓글