SW/리눅스

CentOS 7 : Apache Virtual Hosts 설치하는 방법, 예제, 명령어

얇은생각 2020. 12. 15. 07:30
반응형

Apache Virtual Host를 사용하면 하나의 웹 서버에서 여러 웹 사이트를 실행할 수 있습니다. 가상 호스트를 사용하면 사이트 문서 루트(웹 사이트 파일이 들어 있는 디렉토리)를 지정하고, 각 사이트에 대해 별도의 보안 정책을 생성하고, 각 사이트에 대해 서로 다른 SSL 인증서를 사용할 수 있습니다.

이 튜토리얼에서는 CentOS 7 서버에 Apache 가상 호스트를 설정하는 방법에 대한 단계별 지침을 제공합니다.

 

 

 

필수 구성 요소

이 튜토리얼을 계속하기 전에 다음 필수 구성 요소를 충족했는지 확인합니다. 

- 공용 서버 IP를 가리키는 도메인 이름이 있습니다. 우리는 example.com을 사용할 것입니다.

- CentOS 7에 Apache를 설치하는 방법에 따라 Apache가 설치되어 있습니다.

- sudo 권한을 가진 사용자로 로그인했습니다.

 

 

 

디렉토리 구조

DocumentRoot는 도메인 이름의 웹 사이트 파일이 저장되고 요청에 응답하여 제공되는 디렉토리입니다. 원하는 위치에 문서 루트를 설정할 수 있습니다. 이 예에서는 다음 디렉토리 구조를 사용합니다.

# /var/www/
# ├── example.com
# │   └── public_html
# ├── example-1.com
# │   └── public_html
# ├── example-2.com
# │   └── public_html

 

 

서버에서 /var/www 디렉토리 내에 호스트할 각 도메인에 대해 별도의 디렉토리를 만들고 있습니다. 각 디렉토리 내에 도메인 웹 사이트 파일을 저장할 public_html 디렉토리를 작성합니다. 

mkdir 명령을 사용하여 도메인 example.com의 루트 디렉토리를 생성합니다.

sudo mkdir -p /var/www/example.com/public_html

 

 

테스트를 위해 도메인 문서 루트 디렉토리 내에 index.html 파일을 작성합니다. 편집기를 열고 다음 내용이 포함된 HTML 파일을 만듭니다.

# /var/www/example.com/public_html/index.html

<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title>Welcome to example.com</title>
  </head>
  <body>
    <h1>Success! example.com home page!</h1>
  </body>
</html>

 

 

모든 명령은 sudo 사용자로 실행되므로 새로 생성된 파일과 디렉터리는 루트 사용자가 소유합니다. 사용 권한 문제가 없는지 확인하려면 도메인 문서 루트 디렉토리의 소유권을 apache 사용자로 변경합니다.

sudo chown -R apache: /var/www/example.com

 

 

 

가상 호스트 파일 생성

가상 호스트를 설정하는 방법에는 몇 가지가 있습니다. 모든 가상 호스트 지시어를 단일 파일에 추가하거나 각 가상 호스트 지시문에 대한 새 구성 파일을 생성할 수 있습니다. 개인적으로, 저는 두 번째 접근법이 유지가능하기 때문에 선호합니다.

기본적으로 Apache는 /etc/httpd/conf.d/ 디렉토리에서 .conf로 끝나는 모든 구성 파일을 로드하도록 구성됩니다.

특정 웹 사이트의 가상 호스트를 생성하려면 편집기를 열고 다음과 같은 기본 가상 호스트 구성 파일을 생성합니다.

# /etc/httpd/conf.d/example.com.conf

<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com
    ServerAdmin webmaster@example.com
    DocumentRoot /var/www/example.com/public_html

    <Directory /var/www/example.com/public_html>
        Options -Indexes +FollowSymLinks
        AllowOverride All
    </Directory>

    ErrorLog /var/log/httpd/example.com-error.log
    CustomLog /var/log/httpd/example.com-access.log combined
</VirtualHost>

 

- ServerName : 이 가상 호스트 구성에 대해 일치해야 하는 도메인입니다. 도메인 이름이어야 합니다.

- ServerAlias : 이 가상 호스트에 대해 일치해야 하는 다른 모든 도메인(예: www 하위 도메인)입니다.

- DocumentRoot : Apache가 도메인 파일을 제공할 디렉토리입니다.

- Options : 지시문은 특정 디렉토리에서 사용할 수 있는 서버 기능을 제어합니다.

- Index : 디렉토리 목록을 금지합니다.

- FollowSymLinks : 이 옵션은 웹 서버에 심볼 링크를 따르도록 지시합니다.

- AllowOverride : .htaccess 파일에 선언된 지시문을 구성 지시문을 재정의할 수 있는 지시문을 지정합니다.

- ErrorLog, CustomLog : 로그 파일의 위치를 지정합니다.

 

필요에 따라 파일을 편집하고 저장합니다. 

구성 파일 이름은 .conf로 끝나는 것이 중요합니다. 구성 파일의 이름을 원하는 대로 지정할 수 있지만 도메인 이름을 가상 호스트 구성 파일의 이름으로 사용하는 것이 가장 좋습니다.

 

다음을 사용하여 구성 파일 구문을 테스트합니다.

sudo apachectl configtest

 

 

오류가 없으면 다음 출력이 표시됩니다.

# Syntax OK

 

 

새로 생성된 가상 호스트를 활성화하려면 다음을 사용하여 Apache 서비스를 다시 시작합니다.

sudo systemctl restart httpd

 

 

http://example.com을 열어 모든 것이 예상대로 작동하는지 확인합니다.

CentOS 7 : Apache Virtual Hosts 설치하는 방법, 예제, 명령어

 

반응형