이전 글에서 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>
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>
위와 같이 한 다음 이 설정파일을 아파치에서 사용할 수 있도록 설정한다.
방법은 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
위와 같이 하면 모든 설정이 끝났다.
이제 브라우저를 실행하고 해당 사이트의 도메인명으로 불러오면 된다.