CentOS 8에 가상 호스트와 함께 Apache를 설치하는 방법

웹서버인 Apache는 호스팅 산업에서 여전히 거대한 시장 점유율을 자랑하는 오픈소스이자 인기 있는 HTTP 웹 서버입니다. 이 서버는 모듈 개선, 다중 프로토콜 지원, 간소화된 구성, 그리고 다국어 지원을 비롯한 다양한 기능을 제공합니다.

관련 기사: CentOS 8에 Nginx 설치하는 방법

이 가이드에서는 Apache 웹서버를 CentOS 8RHEL 8에 가상 호스트 환경으로 설치하는 과정을 안내합니다. 이 튜토리얼을 작성하는 시점에서 최신 버전의 Apache는 Apache 2.2.43입니다.

Apache 웹 서버 설치

먼저 다음의 dnf 명령어를 사용하여 CentOS 8 또는 RHEL 8 시스템의 패키지 목록을 업데이트합니다.

$ sudo dnf update

업데이트가 완료되면 다음 명령어를 실행하여 Apache 웹 서버를 설치합니다.

$ sudo dnf install httpd

설치가 완료되면 rpm 명령어를 실행하여 Apache의 버전을 확인할 수 있습니다.

$ rpm -qi httpd
Verify Apache Version

이 명령은 패키지의 버전, 릴리즈 날짜, 빌드 및 아키텍처와 같은 다양한 정보를 출력합니다.

아파치 HTTP 웹 서비스를 시작하려면 systemctl 명령을 실행하십시오.

$ sudo systemctl start httpd

서비스가 실행 중인지 확인하려면 실행하십시오.

$ sudo systemctl status httpd
Verify Apache Service Status

출력에서 초록색으로 표시된 ‘active’ 상태는 아파치 웹 서버가 작동 중임을 나타냅니다.

웹 서버가 실행 중인지 확실하지 않다면, 서버의 IP 주소 또는 도메인 이름을 찾아 아파치에서 테스트 페이지를 요청하십시오.

http://server-ip  

ifconfig 명령을 실행하여 서버 IP를 얻을 수 있습니다. 서버가 클라우드에 호스팅되어 있으면 curl 명령을 실행하여 공용 IP를 얻을 수 있습니다.

$ curl ifconfig.me 
OR
$ curl -4 icanhazip.com
Find CentOS Server IP Address

서버의 IP 주소를 찾을 때 다음과 같은 웹 페이지가 표시되어야 합니다.

Check Apache Webpage

이것은 웹 서버가 작동 중임을 확신하는 것입니다.

아파치 웹 서버 관리

아파치를 설치하고 실행한 후에는 systemctl 검사 도구를 사용하여 아파치를 관리할 수 있습니다.

예를 들어, 아파치를 중지하려면 다음 명령을 실행하십시오:

$ sudo systemctl stop httpd

서비스를 다시 시작하려면 다음을 실행하십시오:구성 파일 중 하나를 변경하고 변경 사항을 적용하려면 명령을 실행하십시오:

$ sudo systemctl start httpd

만약 설정 파일을 변경했고 변경 사항을 적용하려면 재시작해야 하는 경우 다음 명령을 실행하십시오:

$ sudo systemctl restart httpd

서비스를 다시 시작하는 것은 일반적으로 서비스 중단을 유발합니다. 연결을 중단하지 않고 간단히 다시로드하는 것이 더 나은 대안입니다.

$ sudo systemctl reload httpd

부팅 시 자동으로 Apache 웹 서버를 시작하려면 아래 명령을 실행하십시오. 이렇게 하면 Apache가 자동으로 시작되어 개입 없이 작동합니다.

$ sudo systemctl enable httpd

부팅 시 서비스를 자동으로 시작하지 않기로 선택한 경우 다음을 실행하십시오:

$ sudo systemctl disable httpd

Apache 가상 호스트 설정하기

기본적으로 Apache 웹 서버는 하나의 웹사이트만 제공하거나 호스팅하도록 구성되어 있습니다. 하나의 웹사이트만 호스팅하려면 이 단계는 필요하지 않습니다. 그러나 서버에서 여러 도메인을 호스팅할 계획이라면 Apache 가상 호스트를 구성해야 합니다.

A virtual host is a separate file that contains configurations that allow you to set up a separate domain from the default one. For this guide, we will set up a virtual host for the domain crazytechgeek.info.

기본 가상 호스트는 /var/www/html 디렉토리에 있습니다. 이는 단일 사이트에만 적용됩니다. 우리 도메인을 위한 별도의 가상 호스트를 만들기 위해 /var/www 디렉토리 내에 다른 디렉토리 구조를 만들 것입니다.

$ sudo mkdir -p /var/www/crazytechgeek.info/html

추가로 로그 파일을 저장할 디렉토리도 만들 수 있습니다.

$ sudo mkdir -p /var/www/crazytechgeek.info/log

다음으로, $USER 환경 변수를 사용하여 파일 권한을 편집하십시오.

$ sudo chown -R $USER:$USER /var/www/crazytechgeek.info/html

또한 웹루트 디렉토리의 권한을 조정하십시오.

$ sudo chmod -R 755 /var/www

다음으로, 다음과 같이 샘플 index.html 파일을 만드십시오.

$ sudo vim /var/www/crazytechgeek.info/html/index.html

키보드에서 'i' 키를 누르고 테스트할 때 웹 브라우저에 표시될 샘플 콘텐츠를 붙여넣으십시오.

<html>
  <head>
    <title>Welcome to crazytechgeek.info!</title>
  </head>
  <body>
    <h1>Success! The crazytechgeek.info virtual host is up and perfectly working!</h1>
  </body>
</html>

구성 파일을 저장하고 종료합니다.

샘플 인덱스 파일과 사이트 디렉터리를 생성했으므로 이제 가상 호스트 파일을 만들 수 있습니다. 가상 호스트 파일에는 도메인의 사이트 구성이 포함되며 Apache에게 클라이언트 요청에 응답하는 방법을 지시합니다.

가상 호스트 파일에는 도메인의 사이트 구성이 포함되며 Apache에게 클라이언트 요청에 응답하는 방법을 지시합니다. 그러나 계속 진행하기 전에 2개의 디렉터리를 생성해야 합니다: sites-availablesites-enabled 디렉터리입니다.

가상 호스트 파일은 sites-available 디렉터리에 저장되며 sites-enabled 디렉터리에는 가상 호스트에 대한 심볼릭 링크가 포함됩니다.

다음과 같이 두 디렉터리를 생성합니다.

$ sudo mkdir /etc/httpd/sites-available
$ sudo mkdir /etc/httpd/sites-enabled

다음으로, Apache 웹 서버의 주 구성 파일을 수정하여 Apache가 sites-enabled 디렉터리 내에서 가상 호스트를 찾을 수 있도록 지시합니다.

$ sudo vim /etc/httpd/conf/httpd.conf

구성 파일의 맨 끝에 아래와 같은 줄을 추가합니다.

IncludeOptional sites-enabled/*.conf

저장하고 종료합니다.

이제 다음과 같이 가상 호스트 파일을 만듭니다:

$ sudo vim /etc/httpd/sites-available/crazytechgeek.info

아래 내용을 붙여넣고 crazytechgeek.info를 사용자의 도메인 이름으로 바꿉니다.

<VirtualHost *:80>
    ServerName www.crazytechgeek.info
    ServerAlias crazytechgeek.info
    DocumentRoot /var/www/crazytechgeek.info/html
    ErrorLog /var/www/crazytechgeek.info/log/error.log
    CustomLog /var/www/crazytechgeek.info/log/requests.log combined
</VirtualHost>

파일을 저장하고 종료합니다.

이제 sites-enabled 디렉터리에 심볼릭 링크를 생성하여 가상 호스트 파일을 활성화합니다.

$ sudo ln -s /etc/httpd/sites-available/crazytechgeek.info.conf /etc/httpd/sites-enabled/crazytechgeek.info.conf

가상 호스트에 대한 SELinux 권한 조정

CentOS 8RHEL 8은 리눅스 시스템의 보안을 강화하는 보안 모듈인 SELinux을 함께 제공합니다. 이전 단계에서 사용자 정의 로그 디렉토리를 구성했으므로 Apache 웹서버가 해당 디렉토리에 쓸 수 있도록 일부 SELinux 정책을 업데이트해야 합니다.

SELinux Apache 정책을 조정하는 두 가지 방법이 있습니다: 일반적으로 정책을 조정하는 것과 디렉토리별로 정책을 조정하는 것입니다. 후자가 더 우선되는 방법입니다.

디렉토리별 SELinux 정책 조정

SELinux 권한을 로그 디렉토리에 대해 편집하면 Apache 웹서버의 정책을 완전히 제어할 수 있습니다. 이 방법은 꽤 번거롭고 가상 호스트 구성 파일에서 추가 디렉토리의 컨텍스트 유형을 수동으로 구성해야 합니다.

시작하기 전에 SELinux가 로그 디렉토리에 할당한 컨텍스트 유형을 먼저 확인하세요:

$ sudo ls -dlZ /var/www/crazytechgeek.info/log/

출력은 아래와 유사해야 합니다.

Set SELinux Policies on Apache Log Directory

출력에서 설정된 컨텍스트는 httpd_sys_content_t입니다. 이는 웹서버가 로그 디렉토리의 파일을 읽을 수만 있음을 나타냅니다. Apache가 디렉토리에 로그 항목을 생성하고 추가할 수 있도록 이 컨텍스트를 httpd_log_t로 변경해야 합니다.

따라서 다음 명령을 실행하세요:만약 아래와 같은 오류가 발생한다면 “semanage: command not found”.

$ sudo semanage fcontext -a -t httpd_log_t "/var/www/crazytechgeek.info/log(/.*)?"

만약 다음과 같은 오류를 받게 된다면 “semanage: command not found“.

이는 semanage 명령어를 제공하는 패키지가 설치되지 않았음을 의미합니다. 이 오류를 해결하려면 해당 패키지를 설치해야 합니다. 그러나 먼저 semanage 명령어를 제공하는 패키지를 확인하기 위해 다음을 실행하세요:

$ sudo dnf whatprovides /usr/sbin/semanage

출력은 semanage를 제공하는 패키지인 policycoreutils-python-utils를 알려줍니다.

이제 DNF 패키지 관리자를 사용하여 패키지를 설치하는 방법을 보여드리겠습니다.

$ sudo dnf install policycoreutils-python-utils

컨텍스트를 변경하는 명령어가 이제 작동해야 합니다.

$ sudo semanage fcontext -a -t httpd_log_t "/var/www/crazytechgeek.info/log(/.*)?"

변경 사항을 저장하고 지속적으로 유지하려면 restorecon 명령어를 다음과 같이 실행하세요:

$ sudo restorecon -R -v /var/www/crazytechgeek.info/log

변경 사항을 확인하려면 다시 실행하는 명령어:

$ sudo ls -dlZ /var/www/crazytechgeek.info/log/
Check SELinux Context Type

출력에서 컨텍스트 유형이 httpd_log_t로 변경되었음을 확인하십시오.

변경 사항을 적용하려면 Apache를 다시 시작하세요.

$ sudo systemctl restart httpd

이제 Apache가 로그 디렉토리에 로그 파일을 저장하고 있는지 확인하기 위해 다음과 같이 내용을 나열하세요:

$ ls -l /var/www/crazytechgeek.info/log/

다음과 같이 두 개의 로그 파일인 에러 로그 및 요청 로그 파일을 볼 수 있어야 합니다.

Check Apache Log Files

Apache Virtual Host 테스트

마지막으로, Apache 웹 서버가 가상 호스트 파일을 제공하고 있는지 확인해야 합니다. 이렇게 하려면 브라우저를 열고 서버의 IP 주소나 도메인 이름으로 이동하세요:

http://domain-name
Check Apache Virtual Host for Website

완벽합니다! 이는 모든 것이 잘 진행되었음을 나타내며 우리의 가상 호스트가 예상대로 제공되고 있음을 의미합니다.

결론

이 가이드에서는 CentOS 8 및 RHEL 8Apache 웹 서버를 설치하는 방법과 추가 도메인을 위한 콘텐츠를 제공하기 위해 가상 호스트 파일을 구성하는 방법을 배웠습니다. 추가 도메인을 수용하려면 필요에 맞게 여러 개의 가상 호스트 파일을 구성할 수 있습니다.

완전한 호스팅 스택을 설정하려면 CentOS 8에 LAMP 스택을 설치하는 것을 권장합니다.

Source:
https://www.tecmint.com/install-apache-with-virtual-host-on-centos-8/