서버와 호스팅

Ubuntu 16.04에서 Apache 가상호스트 설정하기

이전 글에서 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의 결과

답글 남기기

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