4. 아파치를 이용한 웹 어플리케이션 개발

아파치에 콘텐츠를 제공하는 몇몇의 방법이 있다.

관련된 이야기

4.1. 정적인 컨텐트

아파치는 HTML 파일이라던가 이미지와 같은 고정 컨텐츠를 보낼 수 있다. 만일 당신이 원하는 것이 이것이 전부라면, 아파치는 당신이 원하는대로 옳게 작동할 것이다. 저사양의 펜티엄에서 작동하는 리눅스와 아파치는 고정 컨텐츠에 있어 10Mbps의 전송 속도를 낼 수 있다. 만일 당신이 아파치를 사용하는 데 있어 초보라면, 5절 의 섹션을 참고하도록 한다.

4.2. 다이나믹 콘텐츠(Dynamic content)

대개의 웹 사이트에서, 정보는 항상 바뀌며, 페이지는 계속하여 새로운 것을 보여 주어야만 한다. 서버사이드 프로그래밍의 모든 것 - 프로그래밍 언어, 도구, 프레임워크등-은 개발자들이 서로 다른 소스들-데이터 베이스, 디렉토리 서비스, 고객의 레코드, 여타의 웹 사이트-에서 정보를 요구하고 수정할 수 있게 하며, 콘텐츠를 사용자에게 쉽게 전달하게 한다.

4.3. CGI 스크립트

CGI는 Common Gateway Interface라는 말이다. CGI 스크립트는 사용자가 특정 웹페이지를 호출했을 때 실행되는 외부 프로그램이다. CGI는 웹 서버에서 정보(폼에서 받은 변수, 브라우저의 타입, 클라이언트의 IP 주소 등)를 받고,이 정보들을 이용하여 클라이언트에 웹 페이지를 보낸다.

Pros: 이것이 외부적인 프로그램일 동안에는, 이것은 어떤 언어로도 코딩될 수 있다. 이 스크립트는 다른 웹 서버들에서도 사용할 수 있다. CGI 프로토콜은 단순하며, 표준 출력으로서 결과값을 돌려준다. 이와 같은 것의 기술적인 세부 사항에 관해서는 많은 양의 온라인 문서들이나 책을 참고할 수 있다.

Cons: 프로세스의 생성과 초기화에는 시간이 필요하다. CGI는 서버에 외부적이며 어떤 상황에서의 모든 요청에 대해 생성, 혹은 파괴를 계속한다. 프로세스가 외부의 라이브러리를 불러 오거나 외부 데이터베이스와 연결한 상태에서 지연은 중요한 부분이다. 많은 히트 수를 기록할 때도 마찬가지이다. CGI는 외부적인 이유에 의해 낭비 혹은 세션 관리를 달성한다.

CGI는 종종 과부하를 불러 왔으므로, 스크립트 언어는 자연스러운 선택이 되었다. 펄(Perl)은 CGI 프로그래밍 언어의 선택으로 일반적인 것이 되었다. 이것은 텍스트 처리나 문자열 핸들링에 대한 효과적인 지원을 위해 대가를 지불한다. CGI 스크립트와 라이브러리 들은 많은 양을 자유롭게 사용 할 수 있었다. 좋은 출발점은 the Open Directory CGI section이 될 것이다.

4.4. 사이트 생성기

당신의 사이트가 많은 내용을 담고 있다면, 당신은 컨텐츠 내용을 동적으로 상황에 맞게 보이고 싶어할 것이다. 오프라인 컨텐츠 생산자는 둘 중 하나를 선택해야 한다. 그 해결책은 형식적인 외관에서 내용을 분리해 내는 것이다. HTML 생성기는 웹사이트를 생성하기 위해 컨텐트와 표현할 자료들을 읽고 웹사이트에 만들어진 정적인 파일로 내보낸다. 생성자는 정기적으로 혹은 컨텐트의 변경에 의해 동작한다.

16.5절의 다음 버전은 배치 모드를 지원할 것이다. 그 밖의 옵션에 관해서는 웹 사이트 메타 언어를 참고하자.

4.5. 서버 외부의 처리

웹 서버는 다른 프로그램으로 동적인 요청을 보낼 수 있다. 이런 프로그램은 요청이 들어올 때 까지 조용히 있는다. 요청은 처리되고 다시 웹서버로 돌아가 클라이언트로 되돌려 보내진다. 이와 같은 일들은 CGI 스크립트를 통해 이루어진다. 이런 접근의 예는 4.6절, 4.7절 등등을 확인해 보자.

4.6. Fast CGI

이 표준은 CGI 프로토콜의 빠른 접근을 위해 만들어졌다. 핵심적인 해결책은 하나 이상의 요청에 대해 단일하게 생성된 프로세스들이 처리하는 것이다. 아파치 모듈에는 Tcl, Perl, 기타 등등을 위해 FastCGI 프로토콜과 라이브러리를 포함하고 있다. 자세한 정보는 이곳을 참고할 것!

관련된 이야기

4.7. 자바 서블릿

자바 서블릿을 제공하기 위해 자바 가상머신(웹서버와 분리된)이 요청을 처리한다. 외부적인 자바 가상 머신 프로세스들은 요청한다. JVM은 같은 컴퓨터 혹은 서로 다른 컴퓨터에서 동작될 수 있다. 이것은 얼마나 많은 어플리케이션 서버들이 작동하느냐의 문제이다. 일반적인 표준 라이브러리들은 서버사이드 프로세싱을 위해 포함된다. 15.9절15.6절은 이 기능을 제공하기위한 아파치 프로젝트이다. 자바 어플리케이션 서버 프로젝트의 관계는 25.2절 에서 찾을수 있다.

관련된 이야기

4.8. 임베디드 인터프리터

서버 외부의 처리 문제는 서버 스스로 인터프리터를 내장하는 것으로 귀결된다. 이것은 모듈의 종류를 대략 2가지로 나눈다. 모듈은 요청에 대해 응답하거나 요청을 수정하고 클라이언트에게 결과값을 HTML 페이지로 만들어 보여준다. 가장 일반적인 접근은 17.3절18절을 통한 것이다.