Pow
Pow는 이러한 문제를 해결해 줍니다. pow는 37 signals에서 만들었으면 홈페이지에 나오는 "Pow is a zero-config Rack server for Mac OS X."라는 설명대로 설정없이 Rack서버를 뛰우기 위해서 만들어진 것입니다. 37 signals가 Ruby on Rails를 주로 쓰기 때문에 RoR의 Rack 서버를 위해서 만들었지만 지금은 다른 곳에서도 쓸 수 있습니다. (제가 RoR 개발자가 아니라 설명이 어렵지만 Rack은 웹서버와 프레임워크들간의 표준 인터페이스로 파이썬의 WSGI를 루비로 포팅한 걸로 알고 있으며 자바의 Servlet과 비슷하다고 할 수 있습니다.) 리눅스에서는 안해봤는데 설명에 나와있는 걸 보면 Mac에서만 되는것 같습니다. 얼마나 간단한지와 어떻게 사용하는 지를 보려면 홈페이지의 스크린캐스트를 보면 됩니다.
설치와 사용밥법
설치는 아주 간단합니다.
$ curl get.pow.cx | sh
터미널에서 위 명령어만 입력하면 다음과 같이 설치할 수 있습니다.
zero-config라고 말할 만큼 설정도 간단합니다. 위처럼 Pow를 설치하면 홈디렉토리아래 .pow라는 디렉토리가 생성됩니다.
$ cd ~/.pow
$ ln -s /path/to/myapp
그냥 .pow 디렉토리안에서 Rack 어플리케이션이 있는 경로에 대한 심볼릭 링크를 생성해 주면 됩니다. 이제 터미널에서 open http://myapp.dev를 입력하면 기본 웹브라우저가 실행되면서 http://myapp.dev를 통해서 Rack서버에 접속할 수 있습니다.(Rack쪽은 잘 모르겠는데 자동실행까지 해주지 않나 싶네요.) 웹브라우저에서 바로 http://myapp.dev에 접속해도 되는데 웹브라우저가 호스트를 캐싱해서 인지 한번 브라우저를 다시 실행해야 인식하더군요. 자동으로 심볼릭링크의 파일명에 .dev 도메인으로 연결이 됩니다.
프록싱하기
Rack 서버면 위처럼 사용하면 되지만 저도 그렇고 모든 개발자가 Rack을 사용하는 것이 아니므로 Pow를 다른 Was에 연결하려는 방법들이 많이 공유되었었습니다. 하지만 Pow 0.4.0부터는 자체적으로 프록시기능이 추가되어서 어떤 Was로도 프록시할 수 있습니다.
$ echo 8080 > ~/.pow/proxiedapp
위 명령어로 간단히 프록시 설정을 할 수 있습니다. 즉 proxiedapp라는 파일을 만들고 파일내용에 포트를 적어주면 http://proxiedapp.dev로 접속을 시도하면 http://localhost:8080으로 프록시가 됩니다.(물론 Was를 별도로 띄어놔야 합니다.) 당연히 필요한대로 여ㄹ 파일을 만들어두면 각각 다른 서버로 연결이 됩니다. 로컬에서 개발할 때 항상 /etc/hosts를 수정하고 포트를 지정해 주어야 하고 여러 웹애플리케이션을 띄우는 경우 포트를 따로 해주고 기억해야 하므로 귀찮았는데 pow를 쓰면 어플리케이션명만 기억하면 되므로 무척 편합니다.
추가 최상위 도메인 설정
기본적으로 .dev 도메인을 사용하는데 다른 도메인을 사용하고 싶은 경우 /etc/resolver/ 아래에 가면 Pow가 생성한 dev 파일이 있습니다. 이 파일을 하나 복사해서 원하는 도메인 파일명으로 만들어 주면 됩니다. 예를 들어 test란 파일을 만들면 proxiedapp.dev외에도 proxiedapp.test로도 사용할 수 있습니다. 당연한 얘기지만 실제로 사용하는 .com같은걸 설정하면 안됩니다.) 가이드를 보면 환경변수를 설정하라고 되어 있는데 버그인지 저는 이 방법이 잘 안되서 그냥 /etc/resolver/아래에 파일을 직접 수정했습니다. 더 자세한 설정이나 사용방법은 Pow User's Manual에 나와있습니다.
이전에 트위터에 포스팅하셨던 xip.io를 통해서도 잘 쓰고있었는데... ㅎㅎ
예 xip.io도 37 signals에서 베공하는거죠... xip.io도 활용을 해봐야되는데 아직 못하고 있네요 ㅎㅎㅎ
와.. 이거 엄청 편리하네요! hosts 파일 그만 괴롭혀도 되겠어요 ㅋ
리얼도메인 붙혀서 하는 경우만 아니라면 아주 쓸만합니다. ㅎㅎ