SW/리눅스

Debian 9 : Apache Virtual Hosts 설정하는 방법, 예제, 명령어

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

이 튜토리얼에서는 데비안 9에서 Apache Virtual Host를 설정하는 방법에 대해 안내해 드리겠습니다.

Apache Virtual Hosts를 사용하면 단일 시스템에서 둘 이상의 도메인을 호스트할 수 있습니다. 가상 호스트를 사용할 때 각 도메인 또는 하위 도메인에 대해 서로 다른 문서 루트(웹 사이트 파일이 들어 있는 디렉토리)를 지정하고, 별도의 보안 정책을 만들고, 서로 다른 SSL 인증서를 사용하는 등의 작업을 수행할 수 있습니다. 

이 튜토리얼은 Debian 9에 대해 작성되었지만 동일한 단계가 모든 Debian 기반 배포에 적용됩니다.

 

 

Debian 9 : Apache Virtual Hosts 설정하는 방법, 예제, 명령어

 

 

필수 구성 요소

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

- 서버 IP 주소를 가리키는 도메인 이름이 있어야 합니다. 이 튜토리얼에서는 example.com을 사용합니다.

- Debian 서버에 Apache를 설치합니다.

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

 

 

 

디렉토리 구조 생성

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

# /var/www/
# ├── domain1.com
# │   └── public_html
# ├── domain2.com
# │   └── public_html
# ├── domain3.com
# │   └── public_html

 

 

서버에서 호스트되는 각 도메인은 문서 루트를 /var/www/<domain_name>/public_html로 설정합니다. 

먼저 첫 번째 도메인인 example.com에 대한 문서 루트 디렉터리를 만들어 보겠습니다.

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

 

 

또한 브라우저에서 도메인을 방문할 때 표시되는 도메인 문서 루트 디렉토리 내에 index.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 사용자(www-data)로 변경합니다.

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

 

 

 

가상 호스트 생성

Debian 시스템에서 Apache Virtual Hosts 구성 파일은 /etc/apache2/sites 사용 디렉토리에 위치하며 /etc/apache2/sites 사용 디렉토리에 심볼 링크를 만들어 사용할 수 있습니다.

원하는 텍스트 편집기를 열고 다음과 같은 기본 가상 호스트 구성 파일을 만듭니다.

# /etc/apache2/sites-available/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 ${APACHE_LOG_DIR}/example.com-error.log
    CustomLog ${APACHE_LOG_DIR}/example.com-access.log combined
</VirtualHost>

 

 

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

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

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

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

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

- FollowSymLinks : 이 옵션을 선택하면 Apache가 심볼 링크를 따릅니다.

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

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

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

새 가상 호스트 파일을 사용하도록 설정하려면 가상 호스트 파일에서 사이트 사용 디렉토리에 대한 심볼 링크를 만듭니다. 이 링크는 시작 중에 Apache에서 읽습니다.

Debian 시스템에서는 a2ensite라는 도우미 스크립트를 사용하여 가상 호스트를 사용하도록 설정할 수 있습니다.

sudo a2ensite example.com

 

 

다른 옵션은 아래와 같이 symlink를 수동으로 만드는 것입니다.

sudo ln -s /etc/apache2/sites-available/example.com.conf /etc/apache2/sites-enabled/

 

 

구성이 활성화되면 다음을 입력하여 구문이 올바른지 테스트합니다.

sudo apachectl configtest

 

 

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

Syntax OK

 

 

apache2 서비스를 다시 시작하여 변경 내용을 적용합니다.

sudo systemctl restart apache2

 

 

모든 것이 예상대로 작동하는지 확인하려면 즐겨찾기 브라우저에서 http://example.com을 열면 다음과 같은 것이 나타납니다.

반응형