현재 가장 많이 사용되어지고 있는 아파치(apache)를 이용해서 웹서버를 구축방법을 설명한다. 설치방법이 비교적 간단하기 때문에 환경설정부분을 비중있게 다룰 것이다.
우선 아파치를받아야 한다. 아무데서나 다운받아도 되지만 그래도 아파치 미러링 사이트에서 받는 것이 좋다.
http://ftp.apache-kr.org/httpd/
아파치는 가장 최신버전을 다운받는다. 용량이 그리 크지 않기 때문에 금방 다운받을 수 있을 것이다. 참고로 현재 최신버전은 alpha 버전은 2.0.53 이고, stable 버전은 1.3.33 이다. 가끔가다, 이 두가지 버전에 혼동을 일으킬 때가 있다. 내가 알고 있는 것으로 설명하자면, 아래와 같다.
버전 | 설명 |
alpha | 새로운 기능을 추가한 버전, 하지만 안정성은 떨어진다 |
stable | 말 그대로 안정한 버전이다 하지만 신 기술을 추가하거나 그렇지 않다 |
목적에 맞게 다운 받았으면, 이제 본격적으로 설치에 들어가보자!!
여기서는 단순히 아파치만을 설치하는 방법을 소개한다. PHP 등과 연동해서 설치를 원한다면, 이와 관련 문서를 참조하기 바란다.
#./configure #make #make install
설치 디렉토리는 기본적으로 /usr/local/apache 이다. 실행해보자!
#cd /usr/local/apache/bin #./apachectl start #ps -ax | grep httpd
제대로 실행이 되었는지 프로세스를 확인한다. 만일 제대로 시작이 되지 못했다면, httpd.conf 파일의 문법을 체크해본다.
#/usr/local/apache/bin/httpd -t
아파치에서는 httpd.conf 파일만 알고 있으면, 끝났다고 봐도 무방하다. 그만큼 중요한 파일이다. 이제부터 각각의 설정에 대해서 설명하도록 하겠다.
inetd | 오직 유닉스 플랫폼만지원, 웹서버 설정 변경시 웹서버를 리부팅 할 필요 없으나 새로운 프로세서를 만들 때 마다 설정 파일을 참고하므로 속도가 느림 |
standalone | 웹서버 설정 변경시 반드시 웹서버를 다시 시작. 기본적으로 설정되는 방식 |
서버의 설정 파일, 에러 파일, 로그 파일이 기록되는 디렉토리의 최상위 경로명
한번의 GET요청에 대한 타임아웃 시간을 정해주는 부분으로 초단위. 클라이언트가 요청 한 정보를 받을 때까지 소용되는 대기시간의 최대값
접속한 클라이언트의 요청을 처리한 후 연결을 계속 유지하고 있으면 클라이언트의 다음 요청에 대한 시간을 절약할 수 있다. 기본 On
하나의 지속적인 연결동안에 접속을 끊지 않고 몇 번까지 요청을 받을 것인지 설정
동일한 접속 상태에서 동일한 클라이언트로부터 다음 요청 동안에 기다리는 수치를 초로 표시. 표시한 시간동안 요청을 하지 않으면 접속을 끊어 버림
초기 시작시에 시작할 서버의 개수 즉 httpd 데몬을 처음 실행 시킬 때 여분의 프로세스를 생성시킬 수치를 지정. 지금 총 프로세스는 6개가 된다
동시에 접속할 클라이언트의 최대 개수를 제한하는 값. 만약 이 값에 도달하면 클라이언트의 요청은 다른 요청이 끝날 때까지 대기 상태가 된다
각 자식 프로세스가 죽기 전까지 처리할 수 있는 요청 개수
아파치를 기본값 이외에도 특정 IP 주소 또는 포트와 결합(bind)시키려 할 때 사용
이 옵션을 사용하여 가상 호스트를 지원할 수 있다. *.IP주소, 또는 완전한 인터넷 도 메인 이름을 사용할 수 있다. 가상 호스트 서비스를 하려면 #를 삭제해 주어야 한다. *는 모든 주소에 대하여 가상 호스팅 기능
이 설정은 될 수 있으면 건들지 마세요..
“server-status” 처리기가 호출되었을 때 아파치가 “매우 자세한” 상태 정보를 생성시킬 것인지 (ExtendedStatus On) 아니면 매우 기본적인 정보만 생성시킬 것인지를 (ExtendedStatus Off)제어한다. 기본값은 Off 이다
이 섹션에 있는 지시자는 <VirtualHost> 정의에 의해 처리되지 않는 모든 요청에 응답할 '주' 서버가 사용할 값을 정한다. 이 값들은 또한 이 파일 뒷 부분에서 정의할 모든 <VirtualHost> 컨테이너의 기본값을 제공하기도 한다. 여기 나오는 모든 지시자는 <VirtualHost> 컨테이너 안에서도 사용할 수 있으며 그 안에서 사용되면 해당 가상 호스트에 대하여 전체 기본값을 무시하고 새롭게 정한 값이 채 택된다. 만약 ServerType ('Global Environment' 섹션에서 설정)이 “inetd”인 경우, inetd 설정 내용을 따르기 때문에 다시 몇 가지 지시자는 아무런 효력을 발휘하지 않는다. ServerAdmin 지시자까지 그냥 건너뛴다.
독립실행형(standalone)서버가 요청을 기다리는 포트 즉 웹 서버의 포트 번호 1023보다 낮은 포트. 기본포트는 80번.
웹을 통해 서버에 접근하는 사용자들의 권한을 부여하는 부분. root로 지정하면 안되며 기본적으로 nobody를 사용하거나 별도의 웹 서비스용 계정과 그룹을 만들어 지정.
서버에 문제가 발생했을 때 메일을 보낼 메일 주소. 서버에러시 내보내는 메시지에 함께 출력된다.
클라이언트 프로그램에게 돌려주는 서버 이름이 다른 경우 호스트 이름을 설정할 수 있게 해준다. (예를 들어, 호스트의 실제 이름이 아닌 'www'를 사용하도록 하는데 사용할 수 있다.) 주의: 호스트 이름을 아무렇게나 만들어선 안된다. 이 이름은 여러분의 여러분 서버에 주어진 DNS 이름이어야 한다. 호스트가 등록된 DNS 이름을 갖고 있지 않는 경우에는 이 곳에 IP 주소를 적는다. IP 주소를 사용하여(예를 들어 http://123.45.67.89/) 접속할 수 있다. 이런식으로 해서 리다이렉션이 작동하도록 할 수 있다. 예를 들어, 주석을 풀어주고 idplus.xwow.net 이라고 썼다.
웹서버의 홈페이지 파일(HTML 문서들) 들이 위치할 제일 상위 디렉터리를 지정 하는 부분. 심볼릭 링크나 alias를 사용하여 다른 위치를 가리킬 수도 있다.
아파치 웹 서버에 접근하는 디렉터리의 권한을 설정. 디렉터리에 대한 일반적인 접근 권한을 설정
URL을 쳤을 때 자동으로 불려지는 인덱스 파일 설정. 적은 순서에 따라 여러개의 인덱스 파일이 서비스가 가능하며 구분은 스페이스로 구분
디렉터리의 접근제어 정보 내용을 포함한 파일의 이름을 지정. 원하는 디렉터리 안에 .htaccess라는 확장자를 가진 파일을 넣어 접근제어를 가능하게 한다. .htaccess에는 인증 정보가 들어있는 경우가 빈번하므로 보안 상 이유로 이 파일에 대한 접근은 불허해야 한다. 웹 방문객들이 이 파일을 보게 하고 싶으면 다음 행들을 주석 처리하라. 만약 AccessFileName 설정을 다른 파일명으로 바꾸었다면 알맞게 .htaccess를 그 이름으로 바꾸어준다. 또한 사람들이 웹 서버 패스워드 파일을 .htpasswd라고하는 경향이 있기 때문에 .ht 로 시작하는 파일을 모두 보호한다.
기본적으로 아파치는 내용에 따라 협상된 문서에 대해서는 “Pragma: no-cache” 내용을 전송한다. 이 행은 프록시 서버로 하여금 문서를 캐쉬하지 않도록 요청한다. 다음 행의 주석을 풀면 이 기능을 해제하고 모든 프록시가 문서를 캐쉬할 수 있도록 한다.
(1.3 버전에 새롭게 등장) 이 설정을 켜두면, 아파치가 자기 참조 URL (반응이 오고 있는 서버를 다시 가리키는 URL)을 만들 필요가 있을 때마다 “공식적인” 이름을 만들기 위해 ServerName과 Port를 사용한다. 그렇지 않으면 아파치는 가능한 한 클라이언트가 제공한 호스트 이름:포트 값을 사용한다. 이 설정은 CGI 스크립트의SERVER_NAME, SERVER_PORT 에도 영향을 미친다.
mime.types 파일 또는 이에 해당하는 파일을 찾을 위치를 결정한다.
파일 확장자와 같은 것을 통해 MIME 타입을 알 수 없는 문서에 대하여 사용할 기본 MIME 타입을 말한다. 여러분의 서버에 주로 텍스트나 HTML 문서가 많다면 “text/plain” 을 쓰는 것이 좋다. 대부분이 실행 프로그램이나 이미지 등 바이너리인 경우에는 웹 브라우져가 텍스트 라고 생각해 바이너리 파일을 화면에 표시하지 않도록 하기위해 “application/octet-stream” 를 적는다.
파일의 내용을 가지고 파일의 타입에 힌트를 얻는다. MIMEMagicFile 지시자를 사용하여 모듈에게 힌트 정보가 저장되어 있는 파일을 설정한다.
클라이언트의 이름 또는 IP 주소만을 기록할 지 여부. 예를 들어 www.apache.org (on) 또는 204.62.129.132 (off) 기본값이 off 인 이유는 각 클라이언트 요청이 올 때마다 최소한 1 번 이상의 네임 서버 요청이 발생하기 때문이다. 그러나 꼭 필요한 경우에는 이 기능을 켜둔다. on을 시켜놓으면 상당한 서버의 성능저하를 보게 된다.
에러 기록 파일의 위치
error_log 에 기록될 메시지 분량을 제어한다. debug, info, notice, warn, error, crit, alert, emerg 등의 값이 가능하다.
httpd.conf 파일의 마지막 부분은 가상 호스트에 대한 설정부분이다. 이것에 대한 내용은 관련 문서와 중복되는 관계로 여기서 다루지 않았다. 문서를 참고하기 바란다.