웹사이트 검색

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


Apache 웹 서버는 호스팅 업계에서 지속적으로 막대한 시장 점유율을 누리고 있는 인기 있는 오픈 소스 HTTP 웹 서버입니다. 모듈 향상, 다중 프로토콜 지원, 단순화된 구성, 다중 언어 지원 등 다양한 기능이 함께 제공됩니다.

추가 읽기: CentOS 8에 Nginx를 설치하는 방법

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

Apache 웹 서버 설치

시작하려면 먼저 다음 dnf 명령을 사용하여 CentOS 8 또는 RHEL 8 시스템 패키지 목록을 업데이트하세요.

sudo dnf update

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

sudo dnf install httpd

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

rpm -qi httpd

이 명령은 패키지의 버전, 출시 날짜, 빌드 및 아키텍처와 같은 정보 배열을 인쇄합니다.

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

sudo systemctl start httpd

서비스가 실행 중인지 확인하려면 실행하세요.

sudo systemctl status httpd

출력에서 녹색의 '활성' 상태는 Apache 웹 서버가 실행 중임을 나타냅니다.

웹 서버가 실행 중이라는 의심을 없애려면 표시된 대로 서버의 IP 주소나 도메인 이름을 검색하여 Apache에서 테스트 페이지를 요청하세요.

http://server-ip  

ifconfig 명령을 실행하여 서버 IP를 얻을 수 있습니다. 서버가 클라우드에 호스팅된 경우 컬 명령을 실행하여 공용 IP를 얻을 수 있습니다.

curl ifconfig.me 
OR
curl -4 icanhazip.com

서버의 IP 주소를 검색하면 다음 웹 페이지가 표시됩니다.

이는 웹서버가 실행되고 있다는 확실한 확인입니다.

Apache 웹서버 관리

Apache를 설치하고 실행하면 systemctl 검사 도구를 사용하여 Apache를 관리할 수 있습니다.

예를 들어 Apache를 중지하려면 다음 명령을 실행합니다.

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 가상 호스트를 구성해야 합니다.

가상 호스트는 기본 도메인과 별도의 도메인을 설정할 수 있는 구성이 포함된 별도의 파일입니다. 이 가이드에서는 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

또한 표시된 대로 webroot 디렉터리의 권한을 조정합니다.

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가 클라이언트 요청에 응답하는 방법을 지시합니다. 하지만 계속 진행하려면 sites-availablesites-enabled 디렉터리라는 2개의 디렉터리를 만들어야 합니다.

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

표시된 대로 두 디렉터리를 모두 만듭니다.

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

다음으로, Apache 웹 서버의 기본 구성 파일을 수정하고 사이트 활성화 디렉터리 내에서 가상 호스트를 찾을 위치를 Apache에 지시합니다.

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에는 Linux 시스템의 보안을 강화하기 위한 보안 모듈인 SELinux가 함께 제공됩니다. 이전 단계에서 사용자 정의 log 디렉토리를 구성했으므로 일부 SELinux 정책을 업데이트하여 Apache 웹 서버가 디렉토리에 쓰도록 지시해야 합니다.

SELinux Apache 정책을 조정하는 방법에는 두 가지 접근 방식이 있습니다. 조정 정책을 보편적으로 조정하는 것과 디렉터리의 정책을 조정하는 것입니다. 후자가 더 선호되기 때문에 선호됩니다.

디렉터리에서 SELinux 정책 조정

로그 디렉토리에 대한 SELinux 권한을 편집하면 Apache 웹 서버 정책을 완벽하게 제어할 수 있습니다. 이 방법은 시간이 많이 걸리며 가상 호스트 구성 파일에 지정된 추가 디렉터리에 대한 컨텍스트 유형을 수동으로 구성해야 합니다.

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

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

출력은 아래 내용과 유사해야 합니다.

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

따라서 다음 명령을 실행하십시오.

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

"semanage: 명령을 찾을 수 없습니다" 아래 오류가 발생하는 경우.

이는 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/

출력에 표시된 대로 컨텍스트 유형이 httpd_log_t로 변경되었음을 확인하세요.

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

sudo systemctl restart httpd

이제 다음과 같이 내용을 나열하여 Apache가 로그 디렉터리에 로그 파일을 저장하고 있는지 확인할 수 있습니다.

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

표시된 대로 오류 로그와 요청 로그 파일이라는 두 개의 로그 파일을 볼 수 있습니다.

Apache 가상 호스트 테스트

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

http://domain-name

완벽한! 이는 모든 것이 잘 진행되었으며 가상 호스트가 예상대로 서비스되고 있음을 나타냅니다.

결론

이 가이드에서는 CentOS 8RHEL 8Apache 웹 서버를 설치하는 방법과 가상 호스트 파일을 구성하는 방법을 배웠습니다. 추가 도메인에 대한 콘텐츠를 제공합니다. 추가 도메인을 수용하는 데 적합하다고 생각되면 여러 가상 호스트 파일을 자유롭게 구성하십시오.

완전한 호스팅 스택을 설정하려면 CentOS 8에 LAMP 스택을 설치하는 것이 좋습니다.