[Ubuntu] 우분투 Apache VirtualHost 예제 - 가상호스트
컨텐츠 정보
- 19,709 조회
- 0 추천
- 목록
본문
우분투 Apache의 VirtualHost 의 일례를 소개한다.
이 글은 DigitalOcean 에 소개된 내용을 토대로 몇가지 살을 붙여 작성하고 있다.
※ VirtualHost(가상호스트)를 사용하는 방법에는 세가지 방법이 있으나 그 중에서 NameVirtualHost(이름기반 가상호스트)를 많이 사용한다. 우분투에서도 기본값으로 이름기반 가상호스트에 대한 설정이 되어 있다.
이 름기반 가상호스트를 사용하게 됨으로써, 주호스트가 사라지게 되는데 우분투의 아파치 설정파일인 /etc/apache2/apache2.conf 에 ServerName 이나 DocumentRoot 가 지정되어 있지 않은 이유가 이때문이다.
이름기반 호스트를 사용하게 되면 가장 첫번째로 등장하는 가상호스트설정을 주호스트로 인식하게되고 우분투에서는 이 가상호스트가 /etc/apache2/sites-available/default 파일이다.
그러므로 이 파일에 지정되어 있는 ServerName 과 DocumentRoot 지시자가 주호스트를 가리키게 되므로 기존에 사용하던 주호스트가 있다면 이 파일에 그 내용을 작성하면 된다.
이 파일은 또한 요청된 적절한 가상호스트를 찾지 못하게 되면 대신 보여주게될 페이지 작성의 용도로도 사용된다.
1.VirtualHost용
디렉토리
생성
아파치의 가상호스트로 사용할 디렉토리를 생성한다.
example.com 이라는 도메인의 이름으로 디렉토리를 생성하고 있다.
게다가 log들이 저장될 디렉토리를 생성한다.
$ sudo mkdir -p /var/www/example.com/public_html
$ sudo mkdir /var/www/example.com/logs
2.디렉토리
권한
변경
가상호스트의 파일들이 들어갈 public_html 의 소유권한을 사용자ID와 사용자그룹으로 변경한다.
$USER에 가상호스트를 사용할 사용자ID와 사용자그룹으로 변경하면 된다.
$ sudo chown -R $USER.$USER /var/www/example.com/public_html
누구나 접근해서 읽을수 있게 접근권한을 변경한다.
$ sudo chmod -R 755 /var/www
3.인덱스
파일
생성
사이트 확인을 위해서 index.html 파일을 생성합니다.
$ sudo vi /var/www/example.com/public_html/index.html
<html>
<body>
<h1>Hellow, World!</h1>
<h2>Here is example.com</h2>
</body>
</html>
4.VirtualHost
파일
생성
우분투에서 기본값으로 제공하는 가상호스트 파일을 복사합니다.
$ sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/example.com
5.VirtualHost
설정
가상호스트 파일을 수정하기 위해 파일을 연다.
$ sudo vi /etc/apache2/sites-available/example.com
ServerAdmin 에 에러발생시 이메일 연락처 등록
ServerName 이 누락되어 있는데 이 곳에 가상호스트에서 사용할 도메인명 입력
ServerAlias 는 별칭, www.example.com 으로 접속해도 example.com 으로 접속된다.
( 네임서버에 관련사항이 등록되어 있어야 한다. )
DocumentRoot 는 가상호스트로 사용될 주소입력
찾는 문서가 없을경우 보여지게 될 에러문서를 직접 정할 수도 있다.
ErrorDocument 에러 발생시 참조
ServerAdmin webmaster@example.com
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/example.com/public_html
ErrorDocument 404 /404.html
디렉토리 지시자중에 /var/www 에 대한 내용을 사용할 가상호스트 디렉토리 주소로 변경
Options 값중에 Indexes 제거
( 이 값이 존재하면 가상호스트로 사용될 주소의 파일이 리스팅되어 보안상 위험하다 )
AllowOverride 는 워드프레스처럼 .htaccess 파일을 사용하는 경우 값을 All로 변경
<Directory /var/www/example.com/public_html>
Options FollowSymLinks
AllowOverride All
Order allow,deny
allow from all
</Directory>
로그가 작성될 위치를 지정한다.
( 이를 따로 분리하지 않으면 /var/log/apache2 디렉토리 이하에 모든 가상호스트의 로그가 기록되니 분리하도록 한다 )
ErrorLog /var/www/example.com/logs/error.log
CustomLog /var/www/example.com/logs/access.log combined
VirtualHost
활성화
생성하고 수정한 파일을 등록한다.
$ sudo a2ensite example.com
$ sudo service apache2 restart
가상호스트
default
DNS에 등록되지 않은 주소의 사이트는 각각의 브라우저에서 제공하는 '찾을 수 없는 페이지'를 보여주게 된다. DNS에 등록되어 있으나 이 페이지를 찾을 수 없는 경우 default 설정에 따른다.
( 나의 경우 아파치에서 기본적으로 제공해 주고 있는 default 설정파일을 복사해두고, default 파일을 수정해서 사용한다.)
$ sudo vi /etc/apache2/sites-available/default
<VirtualHost _default_:80>
...
<Directory /var/www/>
Options에서 Indexes제거
</Directory>
ErrorLog /dev/null // 에러로그를 남기지 않음
# CustomLog ... // 주석처리하여 access 로그를 남기지 않음
...
</VirtualHost>
TroubleShooting
우분투의 Apache2 에 대한 기본설정이 이름기반 가상호스트를 염두에 두고 작성되어 있다.
그런 연유로 아파치를 재시작하다보면 아래와 같은 에러메세지를 볼 수 있다.
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
... waiting apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
이 에러메시지가 거슬린다면 /etc/apache2/httpd.conf 에 적당한 NameServer 값을 입력하면 된다.
/etc/apache2/sites-available/default 파일을 사용할 것이라면 ServerName을 같은 값으로 지정하는것도 좋다.
관련자료
-
링크