아파치2(Apache2) Virtual Host 설정으로 도메인별 디렉토리 구성하기

한 서버에서 여러 개의 도메인을 운영해야 할 때, 가장 기본이 되는 설정이 바로 Virtual Host입니다. 실제 웹호스팅 환경에서는 한 대의 서버에 200개에서 많게는 250개 이상의 계정(도메인)이 세팅되기도 합니다. 이런 환경에서는 도메인마다 웹 루트 디렉토리를 분리해 관리하지 않으면 보안과 유지보수 측면에서 많은 문제가 발생할 수 있습니다.

Apache 웹 서버는 이러한 요구를 충족시키기 위해 도메인별로 설정 파일을 따로 만들어 운용할 수 있도록 되어 있습니다. 이 글에서는 각 도메인에 맞게 웹 루트를 따로 구성하는 방법을 차근차근 설명해드리겠습니다.

** 모든 명령어는 SSH를 통해 root 권한으로 접속했을 때를 기준으로 합니다.

1. 설정 파일 복사 및 편집

먼저 Apache 설정 디렉토리로 이동해 기본 설정 파일을 복사한 뒤, 도메인 전용 설정 파일을 만듭니다.

# 아파치 vhost 설정 디렉토리로 이동
cd /etc/apache2/sites-available

# 새로운 설정 파일 생성
vi your-domain.conf

your-domain.conf 파일을 열고 다음과 같은 내용을 입력합니다.

<VirtualHost *:80>
    # 설정할 도메인
    ServerName your-domain.com
    ServerAlias www.your-domain.com
  
    ServerAdmin webmaster@localhost
    # 설정할 디렉토리
    DocumentRoot /var/www/your-folder
    
    # 디렉토리 속성 설정
    <Directory /var/www/your-folder>
        Options FollowSymLinks MultiViews
        AddType application/x-httpd-php .php .html .htm .xml
        AllowOverride All
        Require all granted
        Order allow,deny
        allow from all
    </Directory>
    
    # 로그파일 지정
    ErrorLog ${APACHE_LOG_DIR}/your-domain-error.log
    CustomLog ${APACHE_LOG_DIR}/your-domain-access.log combined
</VirtualHost>
제 서버는 8080 포트를 사용합니다 (기본 설정: 80)

your-domain.com (설정할 도메인), your-folder(설정할 폴더) 등은 실제 사용하는 도메인과 경로에 맞게 수정해 주세요.

2. 웹 루트 디렉토리 생성

설정한 DocumentRoot 경로는 실제로 존재해야 합니다. 아래 명령어로 디렉토리를 생성하고, 권한도 설정합니다.

# 설정한 경로에 폴더 생성
mkdir /var/www/your-folder

3. 설정 활성화 및 Apache 재시작

이제 만든 설정 파일을 활성화하고 Apache를 다시 불러옵니다.

# 설정파일 활성화
a2ensite your-domain.conf

# 아파치 재시작
systemctl reload apache2

기존 기본 설정을 비활성화하고 싶다면 아래 명령어를 추가로 실행합니다.

# 예시파일 비활성화
a2dissite 000-default.conf

또한 웹 브라우저에서 정상적으로 작동하는지 확인하려면, 설정한 웹 루트 디렉토리(/var/www/your-folder)에 테스트용 index.php 파일을 만들어 두는 것이 좋습니다.

echo "<?php phpinfo(); ?>" > /var/www/your-folder/index.php

이렇게 하면 브라우저에서 접속했을 때 PHP 설정 정보를 출력해주는 페이지가 보이므로, Apache와 PHP가 제대로 연동되었는지 쉽게 확인할 수 있습니다.

4. 정상 동작 확인하기

브라우저를 열고 http://your-domain.com으로 접속해보세요. 설정한 웹사이트가 정상적으로 출력된다면 Virtual Host 설정이 성공한 것입니다.

혹시 서버 환경이 공유기에 연결되어 있는 경우, 외부에서 접속하려면 포트포워딩 설정이 필요할 수 있습니다. 공유기에서 80번 포트를 해당 서버로 포워딩해야 웹사이트가 외부에서도 보이게 됩니다. 이 부분은 다음 포스팅에서 자세히 다룰 예정입니다.

Windows WSL 환경에서 웹서버를 구축한 경우, 도메인으로 접속했을 때 “방화벽 확인” 메시지가 출력된다면 80번 포트에 대한 방화벽 설정이 필요할 수 있습니다. 이 경우 아래 포스팅을 참고해 방화벽 규칙을 수정해 주세요.


이 설정 방식을 통해 도메인마다 별도의 웹 루트와 로그 파일을 관리할 수 있어, 보안성과 유지보수 효율성이 크게 향상됩니다. 특히 여러 개의 도메인을 하나의 서버에서 운용하는 웹호스팅 환경에서는 필수적인 설정이라 할 수 있습니다.

Leave a Comment