2010년에 쓴 글인데, 2022년에 완전히 새로 썼다.

사이트 설정 작성

우분투에서는 /etc/apache2/sites-available/에 가상 호스트 관련 파일들을 둔다. 기본적으로 가상호스트 기능은 작동하고 있는 상태이다.

활성화된 가상 호스트들은 /etc/apache2/sites-enabled/에 있다. 여기 있는 파일들은 /etc/apache2/sites-available/ 폴더에 있는 파일의 심볼릭 링크(소프트 링크)다.

아파치 관련 설정을 하나도 건으리지 않았다면 000-default.confdefault-ssl.conf 파일이 있을 것이다.

여기에 파일을 하나 만들어 가상호스트 설정을 한 뒤 활성화를 해 주면 된다.

추가할 가상 호스트 도메인이 test.localhost라면 test.localhost.conf라는 파일을 만들고 아래 내용을 넣자. 편집기는 자신이 선호하는 것을 사용하면 된다.

<VirtualHost *:80>
    ServerName test.localhost
    DocumentRoot /var/www/test.localhost
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

사이트 설정 활성화

저장했다면 이제 활성화를 해 준다.

sudo a2ensite test.localhost

위 명령어에서 test.localhosttest.localhost.conf에서 .conf를 제외한 부분을 적은 것이다. 만약 파일명이 mysite.conf라면 sudo a2ensite mysite라고 명령을 내리면 된다.

이제 아파치를 리로드한다.

sudo systemctl reload apache2

WSL이라면 sudo service apache2 reload 명령을 사용한다.

주의! DocumentRoot/var/www/의 하위 폴더가 아니라면

DocumentRoot/var/www/의 하위 폴더가 아니라면 다음과 같은 에러 메시지를 만나게 될 것이다.

Forbidden
  You don't have permission to access / on this server.

“아파치 Forbidden You don’t have permission to access / on this server. 에러 해결”을 참고해서 해결한다. 중요한 부분이니 꼼꼼히 읽어 보자.

a2ensite를 이용한 활성화의 실제 내용

활성화란 별거 없다. 우분투의 아파치는 /etc/apache2/sites-enabled/에 있는 conf 파일들을 모두 읽게 설정돼 있다. 그래서 /etc/apache2/sites-available에 기본으로 설정들을 두고, sites-enabled에 사용할 설정을 심볼릭 링크로 만드는 것이다. 사용 안 하는 경우 심볼릭 링크를 지우면 된다. 그러면 원본 설정은 남고 작동은 안 하게 되는 것이다. (심볼릭 링크가 무엇인지 궁금하다면 맨 아래 참고 쪽에 있는 글을 보시면 된다.)

즉, a2ensite가 해 주는 건 심볼릭 링크를 만들어 주는 것이다. 수동으로 심볼릭 링크를 만들어도 된다(sudo ln -s /etc/apache2/sites-available/test.localhost.conf /etc/apache2/sites-enabled/ 같은 형식의 명령).

심볼릭 링크를 지우려면 a2dissite 명령을 사용한다: sudo a2dissite test.localshot 같은 식으로 말이다. 물론 그냥 심볼릭 링크를 지워도 된다(sudo rm /etc/apache2/sites-enabled/test.localhost).

호스트 추가

이제 컴퓨터가 가상 호스트의 주소를 알아먹을 수 있도록 /etc/hosts 파일에 호스트의 주소를 추가해 준다. /etc/hosts 파일에 다음 줄을 추가해 준다. (이 파일이 무엇인지 궁금하다면 맨 아래 참고 쪽에 있는 글을 보시면 된다.)

127.0.0.1	   test.localhost

이제 브라우저로 접속하면 잘 될 것이다.

참고