소개
대학교 서버를 관리한다고 가정해 보겠습니다. 모든 학생이 university.com/~student1과 같은 URL 로 접속할 수 있는 개인 웹사이트를 갖도록 하려는 상황입니다.
모든 파일을 하나의 중앙 디렉터리에 저장하는 대신, Apache 는 사용자 디렉터리라는 기능을 제공합니다. 이 기능을 사용하면 각 사용자가 자신의 홈 디렉터리에서 직접 웹사이트를 호스팅할 수 있습니다. 일반적으로 홈 디렉터리 안에 public_html이라는 하위 디렉터리를 만듭니다.
대규모 최신 운영 환경에서는 이 기능을 사용하는 경우가 줄었지만, URL 매핑, 권한, 사용자별 웹 콘텐츠가 어떻게 함께 작동하는지 학습하는 데 여전히 유용합니다.
이 실습에서는 다음 작업을 수행합니다.
- 모듈 활성화: Apache 에서
userdir기능을 켭니다. - 디렉터리 생성: 홈 디렉터리에
public_html폴더를 만듭니다. - 권한 구성: Apache 가 파일에 접근하는 데 필요한 권한을 설정합니다.
- 테스트: 브라우저 요청을 통해 개인 페이지에 접속합니다.
사용자 디렉터리 모듈 활성화
Apache 는 모듈식 서버이므로 필요에 따라 특정 기능을 활성화하거나 비활성화할 수 있습니다. userdir 모듈은 ~username과 같은 URL 을 사용자의 홈 디렉터리에 매핑합니다.
이러한 모듈식 설계는 Apache 의 대표적인 특징입니다. 많은 기능이 기본적으로 항상 활성화되어 있는 것은 아닙니다. 대신 관리자가 서버 역할에 필요한 모듈을 선택해 활성화합니다.
Apache 가 실행 중인지 확인하려면 상태를 확인합니다.
sudo service apache2 status
a2enmod(Apache 2 Enable Module) 명령을 사용해 userdir 모듈을 활성화합니다.
a2enmod 도우미는 Ubuntu 의 Apache 패키징 방식에 포함되어 있습니다. 모든 설정을 직접 편집하는 대신 필요한 심볼릭 링크를 생성해 모듈 관리를 간소화합니다.
sudo a2enmod userdir
모듈을 활성화하고 있다는 메시지가 표시되어야 합니다.
활성화된 모듈을 나열해 활성화 여부를 확인합니다.
ls /etc/apache2/mods-enabled/ | grep userdir
userdir.conf와 userdir.load가 표시되면 모듈이 활성화된 것입니다.
웹 디렉터리 설정
userdir 모듈은 사용자의 홈 디렉터리 안에서 public_html이라는 폴더를 찾습니다. 이 실습에서 사용자 이름은 labex입니다.
홈 디렉터리로 이동합니다.
cd ~
public_html 디렉터리를 만듭니다.
mkdir ~/public_html
사이트를 테스트할 수 있도록 이 디렉터리 안에 간단한 index.html 파일을 만듭니다.
echo "<h1>My Personal Page</h1><p>Welcome to the labex user directory.</p>" > ~/public_html/index.html
이제 권한을 설정해야 합니다. 기본적으로 사용자 홈 디렉터리는 비공개인 경우가 많아 Apache 사용자 (www-data) 가 해당 디렉터리 안으로 들어갈 수 없습니다. Apache 가 내부의 public_html 폴더에 접근하려면 홈 디렉터리에 대한 실행 (x) 권한이 필요합니다.
이 작업은 웹 서버가 일반적인 Linux 파일 시스템 권한에 의존한다는 점을 보여 주는 좋은 예입니다. Apache 는 탐색하고 읽을 권한이 있는 파일만 제공할 수 있습니다.
홈 디렉터리의 권한을 변경합니다.
chmod 711 /home/labex
711(rwx--x--x) 은 사용자에게 모든 권한을 부여하고, Apache 와 같은 다른 사용자가 디렉터리를 탐색할 수 있도록 허용합니다 (실행). 그러나 디렉터리의 내용을 나열할 수는 없습니다 (읽기).
디렉터리에서 읽기 권한과 실행 권한의 차이는 미묘하지만 중요합니다. 디렉터리의 실행 권한은“디렉터리 안으로 들어가거나 디렉터리를 통과할 수 있음”을 의미하고, 읽기 권한은“디렉터리의 내용을 나열할 수 있음”을 의미합니다.
권한을 확인합니다.
ls -ld /home/labex
권한 문자열이 x로 끝나면 탐색이 허용된 것입니다.
서비스 재시작
모듈을 활성화하거나 구성을 변경한 후에는 변경 사항을 적용하기 위해 Apache 를 재시작해야 합니다.
Apache 서비스를 재시작합니다.
sudo service apache2 restart
Apache 가 정상적으로 재시작되었는지 확인합니다.
sudo service apache2 status
상태가 active (running)이어야 합니다.
구성 확인
이제 모든 설정이 완료되었으므로 개인 웹 페이지를 테스트합니다.
URL 형식은 http://server_address/~username/입니다. 현재 서버 자체에서 작업하고 있으므로 localhost를 사용합니다.
curl을 사용해 페이지를 가져옵니다.
curl http://localhost/~labex/
앞에서 만든 HTML 콘텐츠가 표시되어야 합니다.
<h1>My Personal Page</h1>
<p>Welcome to the labex user directory.</p>
403 Forbidden 오류가 표시되면 홈 디렉터리 (/home/labex) 와 public_html 디렉터리의 권한을 다시 확인합니다.
요약
이 실습에서는 개인 웹 디렉터리를 성공적으로 구성했습니다. 다음 작업을 수행하는 방법을 배웠습니다.
- Apache
userdir모듈 활성화 public_html디렉터리 생성 및 콘텐츠 추가- 보안을 유지하면서 Apache 의 접근을 허용하도록 디렉터리 권한 구성
- 사용자별 URL 에 접속해 설정 확인
이 기능은 교육 환경과 공유 호스팅 환경에서 사용자가 자신의 웹 공간을 갖도록 제공하는 데 널리 사용됩니다.



