아파치 홈 디렉토리 설정 및 가상호스트설정
해당글은 여기에 이전에 작성된 APM설치글을 기준으로 경로가 작성되어있습니다.
이 글은 ip관련 가상호스트설정은 다루지 않습니다.
아파치는 소스설치시 기본 디렉토리위치는
'아파치지정설치위치(prefix)/htdocs/'로 정의됩니다. (저는 prefix를 /usr/local/apache로 설정)
yum설치일경우 '/var/www/html' 로 정의됩니다.
단일사이트를 계획중이라면 여기를 계속해서 이용해도되지만
주로 /home을 기준으로 유저를 만들어 유저별 페이지를 나눠 관리하는 편입니다.
여기 예시도 /home을 주축으로 하여 유저별로 관리하는식으로 만듭니다.
저는 goat라는 유저를 생성했으며 웹호스팅을 위해 미리 public_html이라는 디렉토리를 생성했습니다.
[goat@ns1 ~]$ mkdir -p ~/public_html
Apache 셋팅을 변경합니다.
# vi /usr/local/apache/conf/httpd.conf
적절한 위치에 /home/*/public_html 의 Directory 관련 문구를 추가하고
추가로 httpd-vhost구문을 찾아 #으로 이루어진 주석을 제거합니다.
.
.
# Controls who can get stuff from this server.
#
Require all granted
</Directory>
########이 부분을 추가할것##########
<Directory "/home/*/public_html">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
###################################
#
# DirectoryIndex: sets the file that Apache will serve if a directory
.
.
# Virtual hosts
Include conf/extra/httpd-vhosts.conf # 기존에앞에있던 #(주석)을 제거한다!
.
.
# vi /usr/local/apache/conf/extra/httpd-vhosts.conf
제일 아래에 아래문구를 삽입합니다. (그 외 기본으로있는 VirtualHost 구문은 삭제 혹은 주석처리를 꼭 하십시오.)
.
.
<VirtualHost *:80>
DocumentRoot "/usr/local/apache/htdocs"
ServerName localhost
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "/home/goat/public_html"
ServerName goatasriel.com
ServerAlias www.goatasriel.com
</VirtualHost>
이전글인 DNS서버만들기에서 goatasriel.com이라는 사설도메인을 만들었으니 그대로 이용할것입니다.
ServerAlias는 필수는 아닙니다.
아파치서비스를 (재)시작합니다.
# systemctl (re)start httpd
유저폴더 접속권한을 변경합니다.
# chmod 711 /home/goat
유저로 다시 접속한뒤 간단한 사이트를 하나 만듭니다.
# su goat
$ vi ~/public_html/index.html
wow |
접속을 확인합니다.
*goatasriel.com는 httpd-vhost를 통해 /home/goat/public_htm l로 접근했습니다.
*172.30.1.34는 httpd-vhost를 통해 /usr/local/apache/htdocs 로 접근했습니다.
끝
추가글
userdir로 홈디렉토리 설정하기
userdir기능을 사용하면 /home/유저명/public_html 을 ip/~유저명/ 으로 접속이 가능해진다.
기존글처럼 진행하되
# vi /usr/local/apache/conf/httpd.conf 아래 두 구문 추가로 주석해제
Include conf/extra/httpd-userdir.conf |
기존글에 /home/*/public_html Directory구문은 삭제
#<Directory "/home/*/public_html">
# Options Indexes FollowSymLinks
# AllowOverride None
# Require all granted
#</Directory>
*172.30.1.34/~goat/ 는 172.30.1.34/goat/public_html 과 같은 의미입니다.
*보안상 ~유저명 기능을 사용하고 싶지않다면 userdir기능을 안쓰는게 좋습니다.
※
userdir기능은 기본적으로 /home 을 루트디렉토리로 설정하려는 경향이있습니다.
userdir이 설정되어있고 httpd-vhost.conf 에 따로 localhost구문이 없고, httpd-vhost.conf 에서 warning이 발생한다면
localhost가 /home 을 가르키게됩니다.
vhost에서 warning이 발생하지않으면 가장위에있는 vhost로 프록시 시키며, vhost기능을 애초에 사용하지 않으면 document root가 접속이 되는걸로보아
위 사진처럼 /home으로 설정되는 현상은 버그인것 같습니다. 저 버그는 보안에 취약할 수 있으니 참고하시길 바랍니다.
주로 vhost가 warning이 뜨기 제일 좋은 조건이 기존에 있는 예제 virutalhost문구(dummy host~ 어쩌구어쩌구) 를 지우지 않을때 발생합니다.