User directories
sudo cp /opt/local/etc/apache2/extra/httpd-userdir.conf.orig /opt/local/etc/apache2/extra/httpd-userdir.conf
명령으로 extra/httpd-userdir.conf 의 원본 파일을 사용하고, 주석 처리되어 있는 httpd.conf 의 다음 설정들을
LoadModule userdir_module lib/apache2/modules/mod_userdir.so
Include etc/apache2/extra/httpd-userdir.conf
활성화 시켜 준다.
이로서 HTTP 엔드포인트 /~<username> 의 루트 디렉토리는 /User/<username>/Sites 가 된다. 만일 계정은 존재하는데 해당 계정의 홈 디렉토리에 Sites 디렉토리가 없다면, 해당 엔드포인트는 403 forbidden 을 반환하고, 계정이 없다면 404 Not found 를 반환하게 되므로, 계정의 존재도 숨기고 싶으면 모두 404 를 반환하도록 설정해야 한다.
해당 기능을 활성화 시킨 이유는 /Users/git/Sites 를 /~git 에서 호스팅하게 해 http 로 내 git 리포지토리에 접속할 수 있도록 만들기 위해서다.
httpd-vhosts.conf
VirtualHost 는 하나의 서버에서 여러 도메인 및 서브도메인을 호스팅할 수 있도록 해주는 기능이다.
Name-Based Virtual Host 는 아래와 같이 클라이언트가 요청한 호스트의 이름 (ServerName) 을 기준으로 요청을 구분하고,
<VirtualHost *:80>
ServerName example.com
DocumentRoot /var/www/example
</VirtualHost>
<VirtualHost *:80>
ServerName example.org
DocumentRoot /var/www/example_org
</VirtualHost>
IP-Based Virtual Host 는 클라이언트의 IP 를 기준으로 요청을 구분한다.
<VirtualHost 192.168.1.1:80>
DocumentRoot /var/www/site1
</VirtualHost>
<VirtualHost 192.168.1.2:80>
DocumentRoot /var/www/site2
</VirtualHost>
위와 같이
cp extras/httpd-vhosts.conf.orig extras/httpd-vhosts.conf
를 통해 템플릿 설정을 설치하고, httpd.conf 에서
LoadModule vhost_alias_module lib/apache2/modules/mod_vhost_alias.so
Include etc/apache2/extra/httpd-vhosts.conf
라인의 주석처리를 해제해 주자.
설치한 템플릿 설정을 적절하게 바꾸는 것도 잊지 말자.
<VirtualHost *:80>
ServerName <your server domain>
ServerAlias www.<your server domain>
DocumentRoot <your server root directory path>
ErrorLog <error log path>
CustomLog <non error log path> common
<Directory <your server root directory path>>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
ServerAdmin <your email>
</VirtualHost>
https 설정
다음 포스트에서 다루도록 하겠다.