오랜만에 윈도우 웹 서버를 구축할 계획이다. (블로그는 티스토리를 통해 계속 할 생각이지만)
본래 주 개발 분야가 C++ 로 게임 개발하는 것이지만, 웹 개발은 오래 전 부터 취미, 학습 차원에서 계속 해왔다.
주로 PHP 를 이용해서 개발했었지만, PHP 라는 언어가 워낙 마음에 들지 않았고, 쓰다보니
나쁜 성능 & 부족한 문법 & 보안 허점 등 나쁜 인식이 박히게 되었다.
그러다가 파이썬으로 웹 개발을 해보는 것이 어떨까 하는 생각이 들었다.
내가 굳이 웹개발을 다시 시작하게된 이유는 웹 개발 처럼 간편하면서도 GUI API 프레임워크를
내 맛깔대로 구축하는게 용이한 분야가 없다고 생각하기 때문이다. 한 마디로 취미차원으로 넘어서 공부차원으로도 유용하다.
비록 HTML, XHTML 등 웹포맷이 표준화 과정중이라지만, 다른 개발 분야 GUI 포맷보다 표준화가 잘 되었고, 포맷의 유연성이
뛰어난 면이 있다. 그리고 웹개발에 다시 관심을 가진 계기는 얼마전 유행하기 시작 OpenAPI 때문이다.
솔직히 C/C++ 부류의 언어로 개발한 프로그램은 웹 프로그램에 비해 유포하거나 공유하기가 힘들다.
(최소한 우리나라에서는 한정된 범주 때문에 그러한 문화가 정착되기 힘든 것 같다)
여러 가지 이유가 있지만, 대충 이런 저런 이유로 파이썬을 이용한 웹 개발을 시작하고자 한다.
(루비라는 언어도 좋다고 생각하지만, 이왕이면 더 알려지고 발전 지속 가능성이 높은 파이썬을 선택했다.)
여하튼, 나는 C/C++ 윈도우 게임 개발자라서 리눅스 개발 환경을 마음에 들어하면서도 쉽사리 윈도우에서 리눅스 환경으로
넘어가기가 쉽지가 않다. 이러한 점은 웹개발에 있어서 다소간 아쉬운 점인데 여하튼 그럴지라도 환경만 구축된다면
큰 문제는 없어 보인다.
Apache 웹서버, PHP, MySQL 을 동시에 깔아주고 어느 정도 모니터링을 해주는 APM 설치 프로그램들이 많이 존재한다.
그 중에서 그나마 좀 써봤던
WampServer 2.0h 버전을 깔아보기로 했다.
APM_Setup, AutoSet, xampp 도 써봤지만, 사실상 비슷하다고 본다.
내게 중요한 것은 에러 대응 능력 및 좋은 초기 셋팅 환경이라고 본다.
역시 큰 차이는 없다고 생각이 드나, 가장 익숙하고 개인적으로 마음에 들었다.
그리고 python 을 사용하기 위해서
python 2.5.4 와
mod_python 3.3.1 을 다운로드 받았다.
하지만 나는 python 3.x 를 사용하고 싶다.
그냥 CGI 쓰면 3.x 도 가능하겠지만, psp 를 쓸 수 없고 FastCGI 는 될 것도 같은데 잘 모르겠다.
1. 중간에 다음 한 줄을 추가했다.
LoadModule python_module modules/mod_python.so
2. 마지막에 다음을 추가했다.
# WARNING:
# 보안상 IfModule 없는게 나을지도 모르겠다.
# python 모듈이 로딩되지 않는다면
# 소스 파일이 화면상에 그냥 유출될 수 있기 때문이다.
<IfModule python_module>
# <Directory "C:/wamp/www/">
# Options Indexes FollowSymLinks ExecCGI
# SetHandler python-program
# PythonHandler mod_python.publisher
# PythonDebug On
# </Directory>
<Directory "C:/wamp/www/">
Options Indexes FollowSymLinks ExecCGI
AddHandler python-program .psp .psp_ .py
PythonHandler mod_python.psp | .psp .psp_
PythonHandler mod_python.cgihandler | .py
PythonDebug On
</Directory>
</IfModule>
3.1. 다음은 mod_python.cgihandler 테스트이다. CGI 와 같은 방법을 mod_python 에서 handler 차원으로 제공해준다.
#-*-coding:utf-8-*-
import cgi
print("Content-Type: text/html\n\n")
print("<b>hello, world</b>")
3.2. 다음은 mod_python.psp 테스트이다.
<%
import time
%>
<html>
<body>
<%
for i in range(3):
%>
<span>world</span>
<%
%>
korea
</body>
</html>