사이트 내 전체검색
[linux] Apache 개요
로빈아빠
https://cmd.kr/server/264 URL이 복사되었습니다.

본문

Apache 개요

아파치는 매우 강력한 웹 서버이다. 더욱 놀라운 것은 아파치가 몇 명의 실력 좋은 개발자들이 모여있는 팀에 의해 개발되었으며, 무료라는 것이다.
이것은 리눅스와 또 달라, 혹시 누군가 아파치 프로젝트에
참여하거나 기여하기를 원한다면 그것은 전적으로 아파치 개발팀원들의 생각에 달려 있고, 그런 방식이 싫다면 여러분 자신의 팀을 조직해 웹 서버를 만들 수 있다.

그러나, 아파치 개발팀원의 목표는 최고의 웹 서버를 만드는 것이며, 상용으로 웹 서버를 만들어 팔려고 하는 사람들을 포기하게 만드는 것이다. 혹시라도 여러분 중 웹 서버를 만들려고 한다면 다른 것을 만들어 보는 것이 어떨까 싶다.


최초의 웹 서버는 제네바에 위치한 CERN(European Center for Nuclear Research)에 근무하는 Tim Berners-Lee에 의해 개발되었다.
웹 서버는 미정부 산하 기관인 NCSA(Ntional Center for Supercom puting Agencies)에서 만들어졌으며,
공개소스에 자유배포가 가능하다.

그렇다면, 먼저 웹 서버에 대해서 알아보자.
URL은 Universal Resource Locator의 약어이다.
보통 URL은 세 부분으로 나누어져 있는데, www.linux.co.kr 을 예로 들자면,

:///< absolute path URL > 식으로 구성된다.

이를 웹 서버와 통신한다면, 80번 포트로 접속하여

GET / HTTP/1.1
Host: www.linux.co.kr

위와 같이 입력하여 Enter 키를 누르면, 웹 서버의 index 페이지가 나오게 된다.
기본적으로 아파치는 80번 포트를 유지한다.
물론 관리자가 원한다면 바꿀 수도 있다. 그러나 그러한 사실을 일반 사용자에게도 잘 이해시켜야만 할 것이다.
 

apache는 실행시 다음과 같은 플래그를 가질 수 있다.
-d directory : 처음 사용할 ServerRoot 디렉토리를 정의한다.
-c "지시자(directive)" : 설정 파일을 읽어들인 다음에 주어진 지시자(directive)를 읽어 들인다.
-h : 사용 가능한 설정 지시자를 보여준다.
-t : 설정 파일의 설정 상황을 테스트 한다.
-X : 하나의 프로세스만을 생성한다. 이것은 디버깅 목적으로만 사용된다.
-C "지시자(directive)" : 설정 파일을 읽기 전에 주어진 지시자(directive)를 먼저 읽는다.
-D : 지시자(directive)에서 사용할 이름을 정의한다.
-V : 컴파일 당시의 셋팅 상황을 보여준다.
-I : 컴파일된 모듈들을 보여준다.
-S : 파싱된 설정 상황을 보여준다.
-i : 아파치를 NT 서비스로 설치한다.
-u : NT 서비스로 설치된 아파치를 삭제한다.
-s : NT에서 아파치가 NT서비스로 등록되지 못하게 한다.
-k shutdown | restart : apache -k shutdown 이면 종료되고 apache -k restart면 다시 재시동 된다.

이제 실질적으로

[root@dearhappy /root]# apachectl

명령과 함께 쓸 수 있는 옵션 명령어를 살펴보면,
1) apachectl start : httpd 시작을 나타낸다.
2) apachectl stop : httpd 종료를 나타낸다.
3) apachectl restart : SIGHUP 시그널을 보내어 httpd를 다시 시작한다. 현재 상태라면 처음부터 다시 시작한다.
4) apachectl fullstatus : 현재 상태를 자세히 보여준다.
5) apachectl status : 현재 상태를 간략히 보여준다.
6) apachectl graceful : SIGUSR1 시그널을 보내어 httpd를 다시 시작한다.
7) apachectl configtest : 설정 상태를 테스트한다.
8) apachectl help : 사용법을 나열한다.

 

아파치 개발자들이 생각하는 웹 서버가 해야 하는 역할을 단락별로 나누어 보자면,

1) 빠르게 동작해야 하며,
2) 여러 요청을 처리할 수 있어야 하며,
3) 요청을 구별하여 인증작업이 가능하여야 하며,
4) 에러 메시지를 출력할 수 있어야 하며,
5) 사용자의 언어에 맞는 결과를 출력할 수 있어야 하며,
6) 다른 포맷자료를 지원해야 하며,
7) proxy 서버로 동작할 수 있어야 하며,
8) 보안상에 문제가 없어야 한다.

위의 사항을 잘 소화해 내기 위해 아파치는 몇 개의 서브 디렉토리를 가지는데, 이를 살펴보면 크게
1) conf : 설정화일이 저장되어 있으며, httpd.conf가 가장 중요하다. 모든 설정은 이곳에서 이루어진다.
2) htdocs : 사용자에게 보여지는 실제 html 소스가 저장되는 곳이다.
3) logs : 접근기록 및 에러 메세지가 기록되는 곳이다.
4) cgi-bin : CGI 스크립트를 담고 있다. 보안상 굉장히 중요한 곳이기 때문에 htdocs와 다른 디렉토리에 보관한다.

아파치는 다중작업을 지원하는 운영체제에서 잘 작동한다고 했다.
그렇다면, 외부로부터 아무런 요청이 없다면 아파치는 무엇을 하고 있는 것일까?
그냥 놀고 있을까?
그렇다. 외부로부터 요청이 없다면, 지정된 TCP 포트와 지정된 IP 주소로부터 요청을 기다리고 있는 것 이외에 아무것도 하지 않는다.

그리고, 컴퓨터들이 TCP/IP를 이용하기 위해서는 크게 두 가지로 UDP와 TCP로 나눌 수 있다.

UDP는 User Datagram Protocal 의 약자로서 하나의 컴퓨터에서 다른 컴퓨터로 한개의 패킷을 보내는 방법이다. 패킷을 받는 신호조차 없으므로 우리는 UDP를 사용하지 않는다.

TCP는 (Transmission Control Protocal) 의 약자로서 두개의
컴퓨터 사이에서 통신 연결을 확립해주는 프로토콜로서 TCP를 이용하면, 아무리 큰 메세지라도 매우 안전하게 전송할 수 있다.

지금까지 간략하게 아파치의 기본적 구조를 살펴보았다.


written by 채승훈 ( chaena@linux.co.kr )

댓글목록

등록된 댓글이 없습니다.

1,139 (13/23P)

Search

Copyright © Cmd 명령어 18.191.189.124