CentOS 8 Apache 설치

이 포스트는 CentOS Stream 8을 기준으로 작성되었습니다.

필수 패키지 설치

컴파일에 필요한 필수 패키지를 먼저 설치합니다.

sudo yum install gcc make openssl-level pcre-devel expat-devel

다운로드

Apache 공식 홈페이지에서 httpd 소스를 다운로드합니다.
(https://httpd.apache.org/download.cgi)

추가적으로 컴파일할때 필요한 apr, apr-util 소스도 같이 다운로드합니다.
(https://apr.apache.org/download.cgi)

압축해제

다운로드한 소스 파일을 압축해제하고, apr, apr-util은 srclib 폴더 아래로 이동합니다.

$ tar -xvf httpd-2.4.53.tar.gz
$ tar -xvf apr-1.7.0.tar.gz
$ tar -xvf apr-util-1.6.1.tar.gz

$ mv apr-1.7.0 httpd-2.4.53/srclib/apr
$ mv apr-util-1.6.1 httpd-2.4.53/srclib/apr-util

컴파일 및 설치

소스 폴더로 이동하고, 아파치 초기 설정을 구성합니다.

$ cd httpd-2.4.53
$ ./configure --prefix=/opt/apache-2.4.53 --with-included-apr --enable-mods-shared=most --enable-rewrite --enable-ssl
  • 옵션 설명
    • --prefix : 컴파일된 Apache Server가 설치될 경로
    • --with-included-apr : srclib 폴더로 이동한 apr, apr-util 사용
    • --enable-mods-shared=most : 대부분의 Apache 모듈을 사용가능한 형태로 컴파일
    • --enable-rewrite : rewrite 모듈 활성화
    • --enable-ssl : ssl 모듈 활성화

구성이 마무리되면, 컴파일을 진행합니다.

$ make

정상적으로 컴파일되면 설치를 진행합니다. 설치된 Apache Server는 --prefix 로 지정한 경로에서 확인할 수 있습니다.

$ sudo make install
$ ls /opt/apache-2.4.53

추가 설정

1) 사용자 계정으로 Appache 실행가능하도록 설정

root 계정이 아닌 일반 사용자 계정으로 Apache Server를 실행할 수 있도록 권한을 설정합니다.
여기서는 web 계정으로 진행하겠습니다.

$ sudo chown -R web:web /opt/apache-2.4.53           # apache 폴더 소유자를 web 계정으로 변경
$ sudo chown root:root /opt/apache-2.4.53/bin/httpd  # httpd 파일만 root 계정으로 변경
$ sudo chmod u+s /opt/apache-2.4.53/bin/httpd        # httpd 파일에 특수 실행권한 지정

2) 서비스 등록

서비스로 등록하여, 재시작 후에도 자동으로 실행될 수 있도록 설정합니다.
/usr/lib/systemd/system 폴더로 이동하여 apache.service 파일을 생성하고, 아래 내용을 붙여넣습니다.

[Unit]
Description=The Apache HTTP Server
After=syslog.target
After=network.target

[Service]
Type=forking
User=web
Group=web
ExecStart=/opt/apache-2.4.53/bin/apachectl start
ExecStop=/opt/apache-2.4.53/bin/apachectl graceful-stop
ExecReload=/opt/apache-2.4.53/bin/apachectl graceful
PrivateTmp=true

[Install]
WantedBy=multi-user.target

파일을 저장하고 아래 명령어를 입력하여, Apache 서비스를 등록합니다.

$ sudo systemctl status apache    # apache 서비스 상태 확인
$ sudo systemctl enable apache    # 서비스로 등록
Created symlink /etc/systemd/system/multi-user.target.wants/apache.service → /usr/lib/systemd/system/apache.service.