윈도우에서도 작동하는 간단한 웹서버 – Mongoose

Mongoose라고 아십니까?

Mongoose는 Windows나 Unix에서 작동되는 사용하기 쉬운 웹서버 입니다. Mongoose는 간단하고 깔끔한 API를 제공합니다. 웹 어플리케이션 개발자들, 임베디드 시스템 개발자들, 그리고 파일 공유를 빨리 구축하고 싶은 사람들이 사용하시면 좋습니다. 설치도 간단합니다.

Mongoose의 이전 이름은 SHTTPD였던것 같습니다. SHTTPD 의 웹사이트였던 “http://shttpd.sourceforge.net/“에 들어가면 “http://code.google.com/p/mongoose/“로 연결이 되어 있습니다.

Mongoose의 특징

  • Crossplatform – works on Windows and most flavors of UNIX
  • Optional configuration file
  • CGI, SSL, SSI, Digest (MD5) authorization, resumed download, aliases
  • IP-based ACL, Windows service, Keep-Alive, GET, POST, HEAD, PUT, DELETE methods
  • Simple and clean embedded API. Source is in single .c file to make embedding easy
  • With dynamic loading, embeddable in programs written in Visual Basic, Python, etc
  • Small footprint: 35 Kb executable on Linux 2.6 i386 system

CGI, SSL, SSI, Digest (MD5) 인증, 등의 기본적인 웹서버 기능이 있습니다. 재미난 것은 임베디드용으로 사용될 수 있다는 것입니다. 어플리케이션에 웹서버 기능을 넣을 수 있다는 이야기가 되는 것이죠.

아파치만을 사용 해 본 저로서는 httpd.conf 파일을 수정하는 것과 비슷한 Mongoose의 config 옵션들이 쉽게 다가 왔고 간단한 설명문으로도 쉽게 웹서버 인증을 걸수 있었습니다. 또, mongoose.exe 파일을 복사해 특정 디랙토리에 넣고 실행시키면 디랙토리의 파일들을 바로 공유할 수 있게 됩니다. mongoose.exe 파일을 실행하면 dos 창이 뜹니다. 그리고 http://yourpcip:8080 을 입력하면 좀전에 공유된 디랙토리의 내용이 표시됩니다. 공유가 끝나면 dos창을 닫으면 더이상 공유가 되지 않습니다. ^^ 더이상 짜증나는 윈도우의 파일 공유를 사용하지 않아도 되는것이죠.

웹서버 실행/종료

윈도우에서 설치라는 것도 단순히 파일의 복사일 뿐 레지스트리를 수정하지 않습니다. 윈도우에서는 서비스 형태로 실행이 되기 때문에 서비스 관리에서 stop/start 를 하시면 됩니다. 설치시 작성되는 시작 메뉴에도 “Start service”나 “Stop service” 메뉴가 있어 이것을 이용해도 됩니다. 서비스 관리에 restart가 없으니 아래와 같이 간단하게 restart.bat 파일을 만들어 실행시킬 수도 있습니다.

C:\WINDOWS\system32\sc.exe stop "Mongoose 2.3"
C:\WINDOWS\system32\sc.exe start "Mongoose 2.3"

ACL 옵션을 이용한 접근 제어

ACL 옵션을 이용해 접근 가능한 IP를 설정해 줄수도 있습니다. mongoose 메뉴얼에 있는 예제를 보면 “mongoose -admin_uri /ctl -protect /ctl=/tmp/passwords.txt” 라고 mongoose를 실행하면 “/ctl”이라는 어드민 URI를 설정하게 되고 “/tmp/passwords.txt” 파일에 등록된 유저들만 접근할 수 있습니다.

사용 중 문제점

단점으로는 한글 디랙토리는 사용할 수 없다는 것입니다. 그나마 다행인것은 파일 이름에 한글을 쓰는 것은 상관 없더군요. 파일 공유에 있어서 한글 디랙토리 지원이 않되는 것은 큰 단점인것 같습니다. 오픈 소스이니 어딘가에 일본어 지원이나 중국어 지원 버전이 있으지도 모르니 찾아 봐야겠네요.

PHP 연결하기

Mongoose는 CGI 방식으로 PHP를 사용 하게 됩니다. 대부분 많이 사용하는 apache + php의 경우 아파치의 모듈 형식으로 사용하는 것이라 Apache와는 작동 방식이 다릅니다. 하지만 대부분은 그냥 사용해도 무리가 없습니다.

php를 연결 하는 방법에서 가장 쉬운 방법은 mongoose.conf 파일에 아래와 같이 php-cgi.exe 파일을 등록시켜 주는 겁니다.

cgi_interp     C:\php-5.2.8-Win32\php-cgi.exe -c C:\php-5.2.8-Win32\php.ini-recommended

-c 옵션은 php 환경 설정 파일의 위치를 지정해 주는 것입니다. Mongoose는 CGI Script로 perl과 php를 기본으로 사용할 수 있도록 되어 있습니다. 정확히 이야기 하면 cgi_ext 옵션으로 CGI Script 확장자를 지정할 수 있는데 기본값이 cgi, pl, php 입니다. 따라서 PHP 의 경우 cgi_interp 옵션만 등록하면 모든 php 파일이 정상 작동하게 됩니다.

mongoose.conf 파일을 수정했으면 항상 서비스를 재시작 해줘야 합니다. 이건 아파치 restart와 같은 의미입니다.

간단하게 “phpinfo();”를 실행하는 파일을 만들어 저장하고 브라우저로 확인하면 php 정보가 표시되는 것을 보실 수 있을겁니다. 이제 CGI 방식으로 작동하는 PHP 연결이 완성되었습니다.

CGI Script에 대해 재미있는 설정 방법중에서 파일의 첫번째 라인에 #!c:\full\path\to\cgi_interpreter 와 같이 cgi_interpreter 를 지정해 주는 방식이 있습니다. 이렇게 하면 다른 CGI Interpreter로 CGI Script를 실행하게도 할 수 있게 됩니다.

Dokuwiki 설치 후 실행

dokuwiki를 설치해 사용해 본 결과 CGI 방식이라 초기 실행시 약간 느린것 같은 느낌을 받았습니다. 하지만 설치한 PC가 좀 꼬진것을 감안한다면 성능이 좋은 PC에서는 괸찮을것 같습니다. 그리고 사용 목적이 강력한 웹서버에서 돌리는 웹서비스가 아니라 인트라넷으로나 사용할 목적으로 선택하는 것이기 때문에 충분히 만족할만 합니다. 가장 맘에 드는 것은 윈도우 작업 관리자에 표시되는 mongoose.exe의 “4,312 KB” 메모리 사용량입니다. 웹서버 하나에 4MB 정도면 아주 매력적입니다. 실행 속도도 상당히 빠른것 같습니다..

결론

간단하게 웹서버를 사용하길 원한다면 아파치 보다는 Mongoose를 사용하는 것이 좋을 것 같다. 무겁고 복잡하고 기능도 많고 파일도 많은 Apache 보다는 간단한 Mongoose를 사용하여 웹서버를 돌리는 것이 훨씬더 경제적입니다.

Advertisements

Published by: benant

WEB PROGRAMMER. PHP, ASP, XML, Javascript, VBScript, PL/SQL, MySQL, Oracle. scrollads.co.kr 새로운 모바일 광고 서비스. trenue.com 시스탬 트래이딩 서비스. blogman.co.kr 블로그 운영 관리 서비스. creget.co.kr 해외 상품 구매대행. 핫딜 정보 제공 서비스. fgshop.co.kr - 독립형 쇼핑몰 솔루션.

Categories 컴퓨터, Web태그, 댓글 4개

4 thoughts on “윈도우에서도 작동하는 간단한 웹서버 – Mongoose”

  1. 제가 우분투 64비트 환경에서 빌드해 보니 실행 파일 크기가 60KB 정도밖에 안되네요! strip 전에는 72KB…
    “61240 5월 25 18:49 mongoose”

  2. 최소한의 기능만 갖고 있는 초경량 포터블 웹서버를 찾다가 들어오게 되었습니다.
    무엇보다 파일 하나로 돼 있는 게 마음에 드네요. 데모용 PC 꾸미는 데 도움이 되었습니다.
    그런데 어째서 디폴트로 80포트를 열지 않고 8080포트를 여는 걸까요? ^^; 개발자 스스로 자기는 세컨이라고 생각한 걸까요?

    1. 8080포트를 사용한 이유는 기본으로 설치 운영될 수 있는 IIS 혹은 Apache 등의 웹서버와 충돌을 피하기 위함이 아닐까?라고 생각합니다. 기본값을 80이면 문제가 발생할 수 있을거니까요 ^^

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

%s에 연결하는 중