왕초보를 위한 Python 2.7 12. 인터넷 12.6. 웹 서버

12.6. 웹 서버

 

12.5 웹 서버 설치

(고친 날 : 2001-10-30)

 

여러분 방가~~ *^^*

 

드디어 대망의 웹 프로그래밍 코스에 도착하셨습니다~

 

홈페이지를 만들어보신 분이라면 알고 계시겠지만, 원래 HTML 형식의 웹 문서는 일반 텍스트 문서와 마찬가지로 사용자에게 그냥 보여지기만 할 뿐, 사용자의 입력을 받아서 계산을 한다거나 자료를 검색하는 것 같이 지능적인 일은 못하지요.

 

그래서 방문자 수를 세는 카운터나 게시판, 방명록 같은 것은 C나 Perl, Java와 같은 프로그래밍 언어로 만들어서 쓴답니다.

 

다른 언어로 할 수 있는 일이라면 파이썬으로도 못할 리가 없겠죠?

 

 

 

웹 서비스의 원리

 

 

모든 일에는 기초가 중요한 법.

 

웹 프로그래밍을 하려면 웹 사이트가 어떻게 돌아가는지는 알고 있어야겠죠?

 

웹 사이트도 알고 보면 앞에서 배운 서버/클라이언트와 같은 원리로 움직인답니다.

 

홈페이지를 제공해주는 쪽이 웹 서버, 그곳을 방문하는 사용자는 클라이언트 쪽이구요, 웹 서버와 클라이언트도 소켓으로 연결되지요.

 

사실, 우리가 늘 사용하는 인터넷 익스플로러나 네비게이터 같은 웹 브라우저가 바로 웹 클라이언트 프로그램이랍니다.

 

 

 

서버에 있는 문서는 어떻게 우리에게 전송될까요?

 

우리가 웹 브라우저에서 http://www.apache.org/LICENSE.txt라고 입력했다고 합시다.

 

그러면 웹 브라우저와 www.apache.org라는 주소를 갖는 웹 서버가 소켓으로 접속됩니다.

 

또, 사용자의 웹 브라우저에서는 LICENSE.txt라는 파일을 보고 싶다고 웹 서버에게 요청을 하지요.

 

그러면 웹 서버에서는 그 파일의 내용을 소켓을 통해 웹 브라우저에게 보내줍니다.

 

이것을 두 단어로 요약해서, ‘요청(Request)’과 ‘응답(Response)’이라고 하지요.

 

 

 

 

 

 

서버측 프로그램

 

 

HTML이나 텍스트 문서, 그림 파일 같은 것들은 이런 방법으로 전송하면 되는데, 게시판이나 검색 사이트, 쇼핑몰에서처럼 내용이 수시로 바뀌는 자료는 어떻게 보여주는 걸까요?

 

우리가 검색 사이트에서 ‘파이썬’이라는 검색어로 검색을 하면, 검색 사이트에서는 파이썬에 관련된 사이트들을 정리해서 하나의 웹 페이지처럼 보여주는데요…

 

과연, 검색 사이트에서는 수없이 많은 검색어에 대한 결과를 미리 정리해서 각각 파일로 만들어뒀다가 보여주는 걸까요?

 

아마 그렇게 하지는 않겠죠?

 

사용자가 검색을 요청할 때마다 웹 서버에서 검색 프로그램을 실행시켜 결과를 얻은 다음에, 그것을 사용자에게 돌려주는 것이 나을 것 같네요.

 

(사람들이 아주 많이 사용하는 검색어에 대해서는 결과를 파일로 만들어두는 것도 나쁘지 않겠지만요.)

 

 

 

카운터나 게시판 같은 것도 그와 마찬가지로 서버측에서 프로그램을 실행시켜서, 그 결과로 얻은 웹 페이지를 클라이언트에게 보여준답니다.

 

우리가 동사무소에 주민등록등본을 떼러 가면, 그때마다 등본을 새로 만들어주는 것과도 비슷하군요.

 

 

 

 

 

 

웹 서버 고르기

 

 

HTML 또는 텍스트 문서를 보거나 작성할 때는 웹 서버가 없어도 아무 문제가 없지만, 서버측 프로그램에서 그때그때 만들어지는 결과물을 테스트해보려면 웹 서버가 필요하니까 적당한 것을 설치해보도록 하죠.

 

웹 서버는 아주 많이 나와있고, 각각 장단점이 있으므로 필요에 따라 적당한 것을 골라서 사용하시면 됩니다.

 

콜라 먹는 재미가 있다~!?

 

요즘 Windows NT/2000 환경에서는 IIS(Internet Information Server)라는 것을 많이 사용하구요, Linux에서는 보통 Apache(아파치) 웹 서버를 많이 씁니다. 또, Windows 98 같은 환경에서는 테스트나 간단한 서비스를 위해 Personal Web Server라는 것도 사용하지요.

 

 

 

그럼 우리는 어떤 것을 골라볼까요?

 

우리는 Windows 환경에서 웹서버를 사용하면서, 파이썬으로 간단한 서버측 프로그램을 짜서 테스트해보려는 목적을 갖고 있죠?

 

제가 조사해본 결과로는 아파치가 Windows용으로도 설치프로그램이 나와있구요, 별다른 설정을 해주지 않아도 바로 파이썬으로 작성한 프로그램을 사용할 수 있어서 적당한 것 같더군요.

 

아파치도 Windows NT/2000 환경에서 사용하는 것이 안정적이라고도 하지만, 우리는 테스트 목적이니까 크게 신경 쓰지 않아도될 것 같구요, 널리 쓰이는 프로그램이니까 익숙해지면 앞으로도 도움이 되겠지요?

 

 

 

참고로 파이썬에서 웹서버를 만들 수 있는 모듈을 자체적으로 제공하기도 하는데, 아쉽게도 Windows에서는 사용할 수 없는 부분이 있네요.

 

실제 업무에서 웹 서버를 만들어 쓸 일은 거의 없을 테니까 한번 해보는 것도 나쁘지 않았을텐데요…

 

 

 

아파치 웹 서버 설치

 

 

아파치 웹 서버는 아파치 소프트웨어 재단(www.apache.org)에서 오픈 소스 프로젝트로 개발되고 있는 웹 서버랍니다.

 

http://httpd.apache.org/dist/httpd/binaries/win32/로 가시면 Windows용 아파치 설치 프로그램을 구할 수 있지요.

 

현재 아파치의 최신 버전은 1.3.22입니다.

 

Windows ME 또는 2000을 사용하시거나, 그 이하 버전의 Windows에 Microsoft System Installer라는 것을 설치하신 분은 apache_1.3.22-win32-x86.msi 파일을 다운 받으시구요, 그렇지 않은 분은 apache_1.3.22-win32-x86.exe 파일을 다운 받으시기 바랍니다.

 

또, Windows 95를 쓰시는 분은 Windows Socket 2라는 것도 설치하셔야 한다니까, 번거로우시더라도 설치하시구요.

 

http://www.microsoft.com/windows/downloads/bin/W95ws2setup.exe에서 구할 수 있습니다.

 

웹 서버를 돌린다는데, 이 정도 수고는 감수하셔야겠죠?

 

 

 

그럼 아파치를 설치해봅시다.

 

설치 프로그램을 시작시켜서 Next>를 몇 번 눌러주면 아래와 같이 서버의 정보를 입력하는 부분이 나오는데, 우리는 localhost로 혼자서만 사용할 것이라고 해주고 나머지는 계속 넘어가면 됩니다. 간단하죠?

 

 

 

 

 

 

실행 및 테스트

 

 

설치가 끝났으면 Windows 시작메뉴의 <프로그램>에 <Apache httpd Server>라는 항목이 생겼을 거예요.

 

여기서 <Start Apache in Console>을 선택하시면 아래와 같은 도스 창이 뜰 거예요.

 

지금 여러분의 컴퓨터에서 아파치 웹 서버가 돌고 있습니다~

 

 

 

 

 

 

웹 브라우저를 띄워서 주소 창에 http://localhost/를 입력해보세요.

 

다음과 같은 페이지가 보이면 정상입니다.

 

영어가 아닌 다른 외국어로 표시되거나 Not Acceptable이라는 페이지가 보인다면 http://localhost/index.html.kr.iso-kr로 이동하면 한글로 된 페이지를 보실 수 있을 거예요.

 

 

 

 

 

 

만약 아파치 웹 서버를 종료시키고 이 주소로 이동하려고 하면 어떻게 될까요?

 

한 번 해보세요. ‘페이지를 찾을 수 없다’는 메시지가 보이죠?

 

알려준 주소대로 찾아갔더니 서버가 죽어있으니까 웹 브라우저가 그런 메시지를 보여줄 수 밖에 없겠죠?

 

 

 

그리고, 아파치 웹 서버는 여러분의 컴퓨터의 C:\Program Files\Apache Group\Apache에 설치되어 있구요, 방금 보셨던 페이지는 그 아래의 htdocs에 들어있습니다.

 

앞으로 HTML 문서를 만들어서 여기에 저장해두면, 웹 서버를 실행시킨 상태에서 localhost나 127.0.0.1과 같은 루프백 주소로 찾아볼 수가 있는 거죠.

 

 

 

다시 말씀드려서, C:\Program Files\Apache Group\Apache\htdocs에 hello.htm이라는 웹페이지를 넣어두었다고 하면, 이 파일을 바로 더블클릭해도 볼 수 있고, 브라우저에서 http://127.0.0.1/hello.htm라는 주소로 이동해도 볼 수 있다는 겁니다.

 

앞의 방법은 그냥 내 컴퓨터에 있는 파일을 보는 것이고, 뒤의 방법은 인터넷을 통해 웹서버에게 파일을 요청하는 것과 같습니다.

 

이 두 가지 방법의 차이점을 아시겠죠?

 

 

 

hello.htm 파일을 만들어볼까요?

 

 

 

Hello~

 

 

 

 

끝이에요~ ^^

 

맘에 안 드시면 아래와 같이 HTML의 형식을 제대로 갖춰주셔도 좋구요.

 

 

 

<html>

 

<body>

 

hello~

 

</body>

 

</html>

 

 

 

 

이것을 htdocs에 저장하셔서 테스트해보시기 바랍니다.

 

경로명이 너무 복잡해서 불편하시다면 시작메뉴에서 <프로그램>-<Apache httpd Server>-<Configure Apache Server>-<Edit the Apache httpd.conf Configuration File>를 선택해서 환경설정을 바꿀 수도 있습니다.

 

 

 

환경설정 파일도 엄청 복잡하지요? 그래도 정녕 바꾸길 원하신다면 말리지 않습니다…

 

DocumentRoot라는 부분을 찾아서 원하는 경로명으로 수정하시면 됩니다.

 

C:\www라는 폴더에 HTML을 넣어두고 서비스하고 싶으시다면 DocumentRoot "C:/www"라고 써주시면 되죠. 물론 C:\www 폴더는 직접 만들어 두시구요.

 

기존의 설정은 지워버리지 마시고 #을 붙여서 주석문으로 만들어 두시면 나중에 쉽게 되돌릴 수 있겠죠?

 

 

 

한 가지 더 알려드릴까요?

 

작성하신 hello.htm은 주소를 http://localhost:80/hello.htm라고 쓰셔도 볼 수 있습니다.

 

웹 서버와 클라이언트도 소켓으로 접속된다고 했으니 사용하는 포트가 있지 않겠어요?

 

HTTP에 80번 포트를 사용한다는 것도 기억나시죠?

 

 

 

랄랄라 랄랄라 랄라랄랄라~

 

 

마지막 수정일 : 2011년 2월 20일 2:22:15 오후
이 름 :
홈페이지 :
비밀번호 :
검색구분 :
최근변경이력