아파치 디렉토리 설정

아파치 서버 한대를 이용해 여러 프로젝트나 서로다른 사이트를 구성하고자 할때, 가령 나처럼 개인블로그와 공식블로그 기타 웹사이트등등.. 자질구레하게 여러 사이트를 운영하게 될때, 아파치 디렉토리 설정이 중요하다. 특히, 상위 폴더에 디렉토리 설정을 지정하면 자동으로 하위에도 영향을 받기 때문에 주의가 필요하다. 생각없이 지정했다가 살짝 멍때린 기억이 있다. 정리해보자!

최상위 루트 폴더의 접근 제어 설정의 예

<Directory />
   Options FollowSymLinks
   AllowOverride None
   Order allow,deny
   Allow from all
</Directory>

특정 하위 폴더를 설정하고 싶은 경우

<Directory /www/test>
   Options FollowSymLinks
   AllowOverride FileInfo
   Order allow,deny
   Allow from all
</Directory>

Options 항목에 지정 가능한 설정

  • None 어떤 옵션도 이용할 수 없다.
  • All 지정한 directory에서 모든 명령을 이용할 수 있다.
  • Indexes URL에 지정된 디렉토리에 (index.html 같은) 지정된 파일이 없을 경우 디렉토리의 파일 목록을 보여주는 옵션.
  • Includes 서버측의 추가적인 정보를 제공할 수 있게 한다.
  • IncludesNoExec 서버측의 추가적인 정보를 제공할 수 있게 하지만, 어떠한 실행 파일을 실행하는 것을 방지한다.
  • FollowSymLinks 디렉토리상의 심볼릭 링크를 사용가능하게 한다.
  • ExecCGI CGI 스크립트를 실행할 수 있게 한다.
  • MultiViews All 옵션이 설정되었을 때만 지정된 목록의 multiviews를 허용한다.

AllowOverride 항목 설정

.htaccess파일을 디렉토리마다 따로 만들어 접근을 제어 할수 있다. 참고로 해당 디렉토리에 .htaccess 파일이 있으면 서버 전체에 작용하는 access.conf 보다 우선권을 가진다.

  • None .htaccess파일을 읽을 수 없게 한다.
  • All 모든 지정에 대해 가능하게 한다.
  • Options 규정된 디렉토리 형식을 콘트롤하는 지정의 사용을 허락한다.
  • FileInfo 문서형식을 콘트롤하는 지정의 사용을 허용한다.
  • AuthConfig 사용자 인증 지정의 사용을 허용한다. 사용자 인증 변수를 사용한다.
  • Limit 호스트 접근을 콘트롤하는 지정을 허용한다.

Order 와 Allow 그리고 Deny 항목 설정

order 항목은 접근을 통제하는 순서를 나타낸다. allow와 deny 순으로 지정하면 allow 기능을 먼저 수행하고, deny기능을 나중에 수행하라는 의미다.

  • deny, allow – deny 지시자 부터 검사하고 allow 지시자를 검사
  • allow, deny – allow 지시자 부터 검사하고 deny 지시자를 검사
  • mutual-failure – allow목록에 없는 모든 host에게 접속을 거부

allow from 항목 다음에 쓸수 있는 항목은 아래와 같다.

  • 사용 가능한 주소는 도메인 네임
  • 호스트 이름 주소
  • 호스트 ip 주소
  • ip 주소의 앞부분 3바이트
  • 모든 주소일 경우 all을 사용한다.

deny from 항목은 allow from과 반대다.

 

자료 출처: http://toy0box.tistory.com

Mac에 기본으로 설치된 아파치를 이용해 가상 호스트 설정 하기

그동안 삽질의 삽질을 거듭한 끝에 가상호스트 설정에 성공했다. 유후~ 😀
일단 기본으로 설치된 아파치를 활용하는 팁은 아래 링크를 참고한다.
맥에 기본으로 설치되어 있는 아파치 활용하기

이제부터 본격 vhost 설정을 시작해보자.
맥에는 기본으로 설정된 사이트 경로가 두개 있다.

먼저 ‘localhost’ 로 설정되어 있는 루트 경로는 아래와 같고,

/Library/WebServer/Documents

‘localhost/~사용자이름’ 으로 설정된 경로는 아래와 같다.

/Users/사용자이름/Sites

그런데, 문제는 저 두 기본 경로말고 내가 원하는 경로에 가상 호스트를 설정하고 싶은 경우다.
가령, 이클립스 작업 경로 전체를 웹서버로 돌리고 싶은경우..
경로는 아래와 같다고 가정해보자.

/Users/사용자이름/Documents/workspace

그래서 가장 쉬운 방법은 아래 가상 호스트 설정 파일을 열어서,

/etc/apache2/extra/httpd-vhosts.conf

다음과 같이 작성하고 서버를 재시작한다.

서로 다른 이름으로 호스트를 설정하고 싶은 경우 설정한다.

NameVirtualHost *:80

기본 아파치 호스트 경로


   DocumentRoot “/Library/WebServer/Documents”
   ServerName localhost

가상 호스트 경로


     DocumentRoot “/Users/사용자이름/Documents/workspace”
     ServerName workspace


Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
Allow from all

위 설정을 가만히 보면, 2개의 가상호스트를 설정하고 각각 이름은, localhost와 workspace다.
물론 localhost는 /etc/hosts 파일에 기본으로 설정되어 있지만, workspace는 설정되어 있지 않기 때문에 호스트(/etc/hosts)파일을 열어서 “127.0.0.1  workspace”를 추가해준다.

자, 그럼 http://workspace 를 브라우저 주소에 넣고 실행해보자!!
뚜둥~!! 이런 포비든이다.. ㅇㅎㅎ

> Forbidden >

> You don’t have permission to access / on this server. >

아마도 대부분이 여기서 막혔을 것이다. ㅇㅎ

이 문제의 원인은 파일 보안 시스템에 의해 접근이 제한된 것이다.  
따라서 해당 경로의 접근 권한을 풀어줘야한다.
터미널을 열고, 다음과 같이 권한을 수정한다.

/Users/사용자이름$> chmod 755 ./Documents

/Users/사용자이름$> cd Documents

/Users/사용자이름/Documents $> chmod 755 ./workspace

ls -al 을 이용해 설정된 권한을 살펴보자. 아래와 같이 설정이 됐다면,
이제 더이상 포비든이 뜨지 않을것이다!!

drwxr-xr-x+ 18 사용자이름  staff   612  8 18 16:14 Documents
drwxr-xr-x@ 18 사용자이름  staff   612  7 19 16:37 workspace 이상 끝~!!