Locally는 Rhio님이 만드신 모듈로 로컬에서 간단하게 로컬 디렉토리를 기반으로 웹서버를 실행할 수 있는 미들웨어입니다. 서버사이드 개발자들은 대부분 서버환경을 구축하고 개발하기 때문에 이런 미들웨어가 필요하지 않지만 프론트앤드 개발자의 경우에는 작성한 HTML이나 JS를 테스트해보기 위해서는 웹서버환경을 구축해야 합니다. 서버쪽에도 지식이 풍부하다면 어려움이 없겠지만 그렇지 않다면 이러한 환경을 구축하는데 어려움이 많이 있습니다.
실제로 제 주위에도 회사의 마크업을 담당하는 사람들한테 웹서버환경을 구축하느라고 고생하는 사람들을 종종 봐왔습니다. 구축도 구축이지만 서버환경을 잘 모르는 사람들도 쉽게 원하는 소스를 바탕으로 웹서버를 실행할 수 있도록 해주어야 하기 때문에 어려움이 많이 있는데 Locally는 이러한 문제를 한방에 해결해 줄 모듈입니다. node.js가 이제 윈도우에서도 사용가능하고 Locally를 설치하면 간단하게 간단한 명령어로 사용할 수 있기 때문에 프론트앤드 개발자에게는 아주 유용합니다.
PC에 node.js와 npm이 설치되어 있으면 다음과 같은 명령어로 Locally를 설치할 수 있습니다. Locally는 node.js 0.6.9이상이어야 사용할 수 있습니다.(테스트는 안해봤지만 0.6.x에서는 다 동작할것 같은데 Rhio님이 기준 버전을 낮춰줘도 좋을 것 같네요.)
npm install -g locally
이제 웹서버로 확인할 파일이 있는 곳에서 간단하게 locally라는 명령어를 입력합니다.
위 화면처럼 웹서버가 8080포트로 실행된 것을 볼 수 있고 아무런 파라미터를 지정하지 않았기 때문에 웹서버의 루트가 현재 디렉토리로 지정된 것을 확인할 수 있습니다. 이제 http://localhost:8080으로 접속하면 다음처럼 웹서버가 동작하는 것을 볼 수 있습니다.
이 페이지는 openwebdesign에서 다운받은 html페이지입니다. 웹서버가 없다면 시스템의 상대경로로 입력해야 파일을 찾아오기 때문에 서버에서는 바꾸어주어야 하지만 웹서버로 실행했기 때문에 간단하게 실제 웹서버처럼 실행해서 테스트해 볼 수 있습니다.
Locally의 가이드에도 잘 나와있지만 다양한 명령어를 사용해서 여러가지 환경으로 사용할 수 있습니다.
- locally -p 포트번호 : 지정한 포트번호로 웹서버를 실행합니다.
- locally -s 디렉토리경로 : 정적파일이 있는 디렉토리를 지정합니다.(보통 js, css, img등을 의미합니다.)
- locally -p 디렉토리경로 : 퍼블릭파일이 있는 디렉토리를 지정합니다.(보통 html을 말합니다.)
- locally -n 가상호스트 : 가상호스트명을 지정합니다. 예를 들어 outsider라고 지정하면 http://outsider:8080의 접속을 받아들입니다.(물론 hosts는 지정해 줘야 겠지요.)
- locally -d : 디버깅모드로 실행합니다.(소스를 보면 connect 미들웨어의 로깅을 키도록 되어 있는데 어떤 내용이 출력되는지는 잘 모르겠네요.)
물론 이 명령어는 섞어서 사용가능합니다. 대부분 이러한 명령어를 매번 하기가 귀찮다면 locally -f 설정파일처럼 설정파일을 지정하면 설정파일에 써놓은 옵션을 사용해서 웹서버를 구동합니다. 설정파일은 프로젝트마다 설정파일을 하나씩 구성해두고 실행하면 편할듯 합니다. 로컬에서 웹서버를 사용해야 하는 경우에 필요한 기능은 대부분이미 포함된듯 합니다. README에 적힌 내용을 다시한번 적는 것 같아서 블로그에 올리기도 약간 머하지만 처음 봤을때 참 좋은 아이디어의 모듈이라고 생각해서요 ㅎ 더 자세한 내용은 Locally의 가이드를 참고하세요.
오~ 윈도우에서도 되요? -_-;
-d --debug 모드는 http request 로그가 찍힙니다. ^-^
-s, --static 모드는 정적 파일이 webroot 와 밖에 존재해야할 경우를 위해 옵션만 미리 정의해놓은 상태랍니다.
-n, 은 아직 미구현입니다.
(된게 없군요.)
유명 블로그에 소개되었으니 누군가가 이슈 제기하겠죠? ㅋㅋ 감사합니다.
버그나 의견은 https://github.com/rhiokim/locally/issues 요기로 부탁드립니다.
예.. 잘 되든데요.. ㅎㅎㅎ 아무래도 이 모듈은 윈도우 사용자가많이 쓸것 같아서요.. ㅋ
request도 전부찍히는게 아닌것 같던데요... 흠..(윈도우에서 그런가... favicon 요청만 잔뜩 찍히고 딴게 안찍히더라구요...
-n은 가상호스트를 받아들이기로 해서 되는게 아니고 그냥 로컬호스트로 붙어서 된거였군요.. ㅋㅋㅋ
안녕하세요 ^^ 노드 js 프로그래밍 발간일을 기다렸다 바로 광화문 교보에 가서 책을 사서 열심히 공부중인 대학생입니다 ^^
일단 책 정말 유익하고 쉽게 설명되있고 감사하다는 말씀부터드리겠습니다 ㅎ
이렇게 글을 쓴이유는 여기다가 이런글을 써도되는지 모르겠는데 ㅠㅠ 8장에 채팅 프로그램에서 세션 유지가 안되는것같아서 연락드렸습니다 ㅠ
문제가 a라는 유저가 접속해서 먼저 방에 들어가고, 그 후 b라는 유저가 방에 들어갑니다.
그 후 b라는 유저가 먼저 나오고 다시 a라는 유저가 나옵니다.
그럼 a라는 유저는 값이 b로 바뀌는데요...이문제를 해결이 잘안되네요 ㅠㅠㅠㅠ
기다려주셨다니 너무 감사합니다. ^^
설명을 위해서 예제를 작성하다보니 기능 면에서 버그들이 좀 있기는 합니다. ㅠㅠ 죄송...
말씀하신 내용은 2개의 창을 띄워놓고(두개는 다른 브라우저죠?) 접속했다가 방에서 나왔을 때 a 유저의 화면에 자신이 b인것 처럼 나온다는 말씀이신가요?
아~ 글구 이런 댓글은 언제든지 환영입니다. ㅎㅎ
이 Locally글과는 상관은 없는 내용이니 방명록이나 node.js 책관련 포스팅에 남겨주시면 다른 분들도 참고 할 수 있어서 더 좋구요
관리자만 볼 수 있는 댓글입니다.
안녕하세요.
글에도 나와있지만 Locally는 제가 만든게 아니라 Rhio님이 만드신 미들웨어입니다.
Locally에 Socket.IO를 적용한다는게 어떤 말씀이신가요?
Locally롤 띄운 웹사이트에서 Socket.IO를 사용하신다는 건가요? 아니면 Locally 소스를 수정해서 Socket.io로 어떤 기능을 추가하고 싶으신 건가요? ㅎ
관리자만 볼 수 있는 댓글입니다.
그렇다면 locally와는 전혀 관계없는 이슈입니다.
locally를 웹서버 설정하고 필요할때마다 도큐먼트 경로를 바꿔주는 것을 편하게 위한 도구로 그냥 웹서버나 was에 띄우신 것과 관련이 없습니다. socket.iO 에서 binary를 주고받는 부분을 검색해 보시면 될듯 합니다.