더북(TheBook)

사용자마다 웹 사이트 운영하기

리눅스 서버의 사용자마다 자신의 홈 디렉터리에서 웹 사이트를 운영하도록 설정할 수 있습니다. 아파치 웹 서버는 이런 기능을 사용자 디렉터리 모듈(userdir)로 분리해서 제공합니다. 웹 서버의 모듈을 활성화하는 명령은 a2enmod입니다. 다음과 같이 userdir 모듈을 활성화합니다.

administrator@server01:~$ sudo a2enmod userdir

웹 서버를 재시작해서 설정 내용을 반영합니다.

administrator@server01:~$ sudo service apache2 restart

홈 디렉터리마다 각자의 웹 서버 루트 디렉터리가 필요합니다. public_html이라는 디렉터리를 만들어 ‘index.html’ 파일을 vi로 생성합니다.

administrator@server01:~$ mkdir public_html
administrator@server01:~$ vi public_html/index.html
Tip

사용자 계정의 웹 서버 루트 디렉터리가 public_html인 이유는 아래에서 설명합니다.

구분하기 쉽도록 웹 서버 루트 디렉터리의 ‘index.html’과 약간 다르게 ‘index.html’ 파일을 작성해봅시다.


<html>
  <body>
    <h1>웹 서버 테스트입니다.</h1>
    <p>이 문서는 사용자 디렉터리의 public_html에서</p>
    <p> 제공되는 index.html 파일입니다.</p>
  </body>
</html>

호스트로 돌아와서 웹 브라우저를 실행하고

[웹 서버 주소]/~[사용자 계정] 형식으로 주소를 입력해봅니다. 앞서 public_html 디렉터리를 생성한 사용자 계정이 administrator이므로 ‘www.webserver.com/~administrator’라고 입력했습니다. 이렇게 리눅스 서버의 사용자마다 각각 웹 사이트를 운영할 수 있습니다.

그림 8-9 administrator 계정의 홈 디렉터리에서 웹 서비스하기

아파치 웹 서버의 모듈을 활성화시키는 a2enmod 명령은 사용 가능한 모듈이 들어 있는 /etc/apache2/mods-available 디렉터리에서 특정 파일을 /etc/apache2/mods-enabled 디렉터리에 링크시킵니다.

a2enmod 명령이 userdir 모듈을 활성화시켰기 때문에 mods-available 디렉터리에 ‘userdir.conf’와 ‘userdir.load’ 두 파일에 대한 링크가 mods-enabled 디렉터리에 생성됩니다.

administrator@server01:~$ ls -l /etc/apache2/mods-enabled/
...
lrwxrwxrwx 1 root root 40 May 11 00:39 userdir.conf -> /etc/apache2/mods-available/userdir.conf
lrwxrwxrwx 1 root root 40 May 11 00:39 userdir.load -> /etc/apache2/mods-available/userdir.load

‘userdir.conf’ 파일에는 사용자 디렉터리와 관련된 항목을 설정합니다. vi로 열어서 살펴봅시다.

administrator@server01:~$ vi /etc/apache2/mods-enabled/userdir.conf

UserDir은 사용자 웹 서버 루트 디렉터리를 public_html로 지정합니다. 보안을 유지하기 위해 루트 사용자 홈 디렉터리에 대한 접근은 차단합니다(disabled root).

사용자 웹 서버 루트 디렉터리의 기본 설정은 <Directory /home/*/public_html>에 정의되어 있습니다.

<IfModule mod_userdir.c>
        UserDir public_html
        UserDir disabled root

        <Directory /home/*/public_html>
                AllowOverride FileInfo AuthConfig Limit Indexes
                Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
        ...
이렇게 하세요!

a2enmod 명령을 사용하는 대신 다음과 같이 직접 ln 명령으로 mods-enabled 디렉터리에 링크를 만들어서 사용자 디렉터리 기능을 활성화할 수 있습니다. 물론 링크를 만든 다음 아파치 웹 서버를 재시작해야 설정 내용이 반영됩니다.

administrator@server01:~$ cd /etc/apache2/mods-enabled/
administrator@server01:/etc/apache2/mods-enabled$ sudo ln -s /etc/apache2/mods-available/userdir.conf
administrator@server01:/etc/apache2/mods-enabled$ sudo ln -s /etc/apache2/mods-available/userdir.load

아파치 웹 서버 모듈을 해제하는 명령은 a2dismod입니다. 사용자 디렉터리 모듈을 해제합니다.

administrator@server01:~$ sudo a2dismod userdir
Tip

a2dismod가 처리하는 일은 단순합니다. /etc/apache2/mods-enabled 디렉터리를 확인하면 userdir.conf와 userdir.load에 대한 링크가 삭제된 사실을 알 수 있습니다.

웹 서버를 재시작해서 설정 내용을 반영합니다.

administrator@server01:~$ sudo service apache2 restart

사용자 계정에 대한 웹 서비스가 중단됩니다.

그림 8-10 administrator 계정의 웹 서비스가 중단됨
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.