태그:                             

이전 글에서 DigitalOcean의 VPS 서비스에 우분투 16.04를 올리고, 아파치 서버까지 설치했다.
VPS를 사용하면 서버 한 대를 내 전용으로 사용하는 효과가 있어서 도메인네임서버에 도메인만 등록하면 여러 개의 도메인을 연결할 수 있다는 것이다.
하지만 기본적으로는 하나의 홈페이지만 연결이 되므로 여러 개의 도메인을 이용하여 여러 사이트를 만들 경우 적절한 설정을 해야된다.

이번에는 아파치 서버에서 가상호스트를 설정하는 방법을 정리해본다.
IP는 하나만 주어지고, 포트도 될 수 있으면 꼭 필요한 것 외에는 열지 않을 것이므로 도메인 이름으로 구분하는 가상호스트를 사용할 것이다.

제일 먼저 할 일은 홈페이지를 만들 홈 디렉토리를 만드는 것이다.
Apache에서 추천하는 디렉토리는 /var/www인데, 나는 각 사용자별 홈 디렉토리에 html이란 디렉토리를 사용할 것이다.
그래서 가상 호스트 설정 방법을 찾아봤는데 /var/www 디렉토리를 이용하는 방법은 많이 나오지만 각 사용자별 홈 디렉토리를 사용하는 건 찾기가 어려웠다.
이런 저런 방법을 조합해서 성공을 시키긴 했다.
나중에 참고할 수 있게 그 방법을 적기로 한다.

여기에서는 root가 아닌 일반 사용자로 로그인해서 모든 작업을 하는 것으로 root 권한이 필요하면 sudo 명령을 이용한다.

먼저 사용자 홈 디렉토리에 html이란 디렉토리를 만든다(사용자는 smartxyz와 lightxyz로 한다).

$ sudo mkdir /home/smartxyz/html
$ sudo mkdir /home/lightxyz/html

다음으로 해당 사용자 웹 홈 디렉토리에 index.html 파일을 만든다(여기에서는 텍스트 에디터로 nano를 사용했는데, 각자 편한 에디터를 사용하면 된다).

smartxyz 사용자의 index.html 파일

<html>
  <head>
    <meta charset="utf8">
    <title>smartxyz.com에 오신 것을 환영합니다.</title>
  </head>
  <body>
    <h1>smartxyz.com에 오신 것을 환영합니다.<br />
    서버가 정상 동작 중...</h1>
  </body>
</html>

lightxyz 사용자의 index.html 파일

<html>
  <head>
    <meta charset="utf8">
    <title>lightxyz.com에 오신 것을 환영합니다.</title>
  </head>
  <body>
    <h1>lightxyz.com 서버가 정상 동작 중입니다.</h1>
  </body>
</html>

이렇게 하면 해당 디렉토리의 소유자 및 그룹이 root가 되므로 해당 사용자는 수정도 할 수 없게 된니까 소유자 및 그룹을 해당 사용자로 바꾼다.

$ sudo chown -R smartxyz:smartxyz /home/smartxyz/html
$ sudo chown -R lightxyz:lightxyz /home/lightxyz/html

위와 같이 chown에 -R을 붙이면 해당 디렉토리의 아래에 있는 모든 파일 및 디렉토리까지 해당 설정이 적용된다.

이어서 설정을 해야된다.
지금도 같은 방법으로 할 수 있지만, 예전에는 httpd.conf 파일 하나에 모든 설정을 다 때려넣었는데, 지금은 각 사이트별로 별개의 파일로 적절한 설정을 하고 아파치에 적용하면 다 적용이 된다.
사이트별로 설정하는 방법은 /etc/apache2/sites-available 디렉토리에 있는 000-default.conf라는 파일을 적절한 이름으로 복사한 다음 해당 파일을 수정한다.

$ cd /etc/apache2/sites-available
$ sudo cp 000-default.conf smartxyz.com.conf
$ sudo cp 000-default.conf lightxyz.com.conf

smartxyz.com.conf 파일을 수정한다.

$ sudo nano smartxyz.com.conf

내용은 아래와 같이.

<virtualhost *:80>
  ServerName www.smartxyz.com
  ServerAlias smartxyz.com
  ServerAdmin webmaster@smartxyz.com
  DocumentRoot /home/smartxyz/html

  <Directory /home/smartxyz/html>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride none
    Require all granted
  </Directory>

  ErrorLog ${APACHE_LOG_DIR}/error.log
  CustomLog ${APACHE_LOG_DIR}/access.log combined
</virtualhost>
smartxyz.com.conf 파일 내용

lightxyz.com.conf 파일을 수정한다.

$ sudo nano lightxyz.com.conf

내용은 아래와 같이.

<virtualhost *:80>
  ServerName www.lightxyz.com
  ServerAlias lightxyz.com
  ServerAdmin webmaster@lightxyz.com
  DocumentRoot /home/lightxyz/html

  <Directory /home/lightxyz/html>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride None
    Require all granted
  </Directory>

  ErrorLog ${APACHE_LOG_DIR}/error.log
  CustomLog ${APACHE_LOG_DIR}/access.log combined
</virtualhost>
lightxyz.com.conf 파일 내용

위와 같이 한 다음 이 설정파일을 아파치에서 사용할 수 있도록 설정한다.
방법은 2가지로 할 수 있다.

첫번째 방법은 /etc/apache2/sites-enabled 디렉토리에 해당 설정파일의 심볼릭 링크를 만드는 방법이다.

$ cd /etc/apache2/sites-enabled
$ sudo ln -s ../sites-available/smartxyz.com.conf ./smartxyz.com.conf
$ sudo ln -s ../sites-available/lightxyz.com.conf ./lightxyz.com.conf

두번째는 간단하게 아파치 설치시 같이 설치되는 명령인 a2ensite를 사용하는 방법으로 아래와 같이 하면 위에서 한 것과 같은 심볼릭 링크를 만든다.

$ sudo a2ensite smartxyz.com.conf
$ sudo a2ensite lightxyz.com.conf

마지막으로 이 설정을 아파치에서 적용하게 설정을 다시 읽어들인다.

$ sudo service apache reload

위와 같이 하면 모든 설정이 끝났다.

이제 브라우저를 실행하고 해당 사이트의 도메인명으로 불러오면 된다.

smartxyz.com의 결과
lightxyz.com의 결과
Ubuntu 16.04에서 Apache 가상호스트 설정하기

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다