본문 바로가기

IT/Linux

[Linux] CentOS 7 - Apache2.4 다운로드 및 컴파일

CentOS 7에 Apache2.4 설치 및 컴파일 그리고 httpd Service 등록하는 방법에 대한 정리 글입니다.

 

1. 필수 툴 설치

# yum install gcc gcc-c++ expat-devel.x86_64 pcre-devel

 

2. pcre 다운로드 및 컴파일

# mkdir /usr/local/download
# cd /usr/local/download

# wget https://sourceforge.net/projects/pcre/files/pcre/8.44/pcre-8.44.tar.gz
# tar zxvf pcre-8.44.tar.gz
# cd pcre-8.44

# ./configure --prefix=/usr/local
# make
# make install

 

3. apr-util, apr, httpd 다운로드 및 컴파일

# cd /usr/local/download
# wget http://mirror.apache-kr.org/httpd/httpd-2.4.46.tar.gz
# wget http://mirror.apache-kr.org/apr/apr-1.7.0.tar.gz
# wget http://mirror.apache-kr.org/apr/apr-util-1.6.1.tar.gz

# tar zxvf apr-1.7.0.tar.gz
# tar zxvf apr-util-1.6.1.tar.gz
# tar zxvf httpd-2.4.46.tar.gz

# mv apr-1.7.0 ./httpd-2.4.46/srclib/apr
# mv apr-util-1.6.1 ./httpd-2.4.46/srclib/apr-util

# cd /usr/local/download/httpd-2.4.46
# ./configure
# make
# make install

 

4. httpd.conf의 ServerName 수정

# vi /usr/local/apache2/conf/httpd.conf
파일의 193번째 라인


ServerName localhost:80

 

5. apache 실행 및 확인

# cd /usr/local/apache2/bin
# ./apachectl start

#ps -ef|grep httpd

 

6. apache 테스트

1) 내부 작동 테스트

# wget http://127.0.0.1

/usr/local/apache2/htdocs 경로에 위치한 index.html이 다운로드 된다.

2) 외부 접근 테스트

방화벽이 실행되고 있고, 80포트에 대한 허가가 없다면 외부에서 접근할 수 없다.

2-1) 방화벽 80포트 허용하기

# 방화벽 실행 확인
# firewall-cmd --state
running

# 현재 사용중인 Zone 확인
# firewall-cmd --get-default-zone
public

# 80포트 허용
# firewall-cmd --permanent --zone=public --add-port=80/tcp
success

# 방화벽 재시작
# firewall-cmd --reload
success

# 방화벽 적용 확인
# firewall-cmd --zone=public --list-all
외부에서 접근이 되는지 테스트해보려면 브라우저에 IP 또는 도메인을 입력하면 된다. 

index.html 페이지 접근

7. httpd service 등록 ( init.d, systemctl )
둘 중 한가지 선택해주시면 됩니다.

1) /etc/init.d (CentOS 6에서 주로 쓰임)

# cd /etc/init.d
# cp /usr/local/apache2/bin/apachectl ./httpd
# vi httpd
맨 위에 다음과 같이 입력한다.

#!/bin/sh 

# httpd Startup script for the Apache HTTP Server 
# chkconfig: 345 85 15 
# description: Apache is a World Wide Web server. It is used to serve 
# processname: httpd 
# pidfile: /usr/local/apache2/logs/httpd.pid

...

저장 후에 서비스에 등록한다.

# chkconfig --add httpd
# chkconfig --level 345 httpd on
# chkconfig --list

# service 명령어 테스트
# service httpd stop
# service httpd start

 

2) systemctl (CentOS 7에서 주로 쓰임)

# cd /usr/lib/systemd/system
# vi apache.service
[Unit] Description=apache2 Service 
After=syslog.target 
After=network.target 

[Service] 
Type=forking 
ExecStart=/usr/local/apache2/bin/apachectl start 
ExecStop=/usr/local/apache2/bin/apachectl graceful-stop 
ExecReload=/usr/local/apache2/bin/apachectl graceful 

User=root
Group=root

[Install] 
WantedBy=multi-user.target
//데몬 재시작
# systemctl daemon-reload

//linux 재시작 시 apache 자동 실행 등록
# systemctl enable apache