SW/리눅스

Ubuntu 18.04 : Apache 가상 호스트 설정 방법, 명령어, 예제

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

이 튜토리얼에서는 Ubuntu 18.04에서 Apache Virtual Host를 설정하는 방법에 대한 단계별 지침을 제공합니다. 

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

Ubuntu 18.04 Bionic Beaver에 대해 작성되었지만 Ubuntu 16.04 Xenial Xerus에도 동일한 단계를 사용할 수 있습니다.

 

 

 

필수 구성 요소

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

공용 서버 IP를 가리키는 도메인 이름이 있습니다. example.com을 사용하겠습니다.

다음 지침에 따라 Apache를 설치해야 합니다.

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

 

 

 

디렉토리 구조를 작성

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

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

 

 

기본적으로 /var/ww 디렉토리 내에 서버에서 호스팅할 각 도메인에 대해 별도의 디렉토리를 만듭니다. 각 디렉토리 내에 도메인 웹 사이트 파일을 저장할 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

 

 

 

가상 호스트를 생성

기본적으로 Ubuntu 시스템에서 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가 도메인 파일을 제공할 디렉토리입니다.

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

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

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

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

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

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

새 가상 호스트 파일을 사용하도록 설정하려면 가상 호스트 파일에서 사이트 사용 디렉토리에 대한 심볼 링크를 생성해야 합니다. 이 링크는 시작하는 동안 apache2에서 읽습니다.

가상 호스트를 사용하도록 설정하는 가장 쉬운 방법은 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

 

 

변경 내용을 적용하려면 Apache 서비스를 다시 시작합니다.

sudo systemctl restart apache2

 

 

마지막으로 모든 것이 예상대로 작동하는지 확인하려면 http://example.com을 선택한 브라우저에서 열면 다음과 같은 것을 볼 수 있습니다.  

 

Ubuntu 18.04 : Apache 가상 호스트 설정 방법, 명령어, 예제

반응형