Notice
Recent Posts
Recent Comments
Dharma
[Clojure] Compojure 와 Nginx 를 연결해서 클로져로 만든 웹서비스 배포해보기 본문
클로져를 이용해서 웹 어플리케이션 간단한 것을 만들어 보고 싶은 욕망이 있을 것입니다. 만들어 보고 싶은 욕망은 의외로 간단하게 해결이 됩니다. 바로 컴포져(Compojure) 를 이용하면 쉽게 만들 수가 있습니다.
예전 포스트 를 보고 클로져 개발환경이 세팅되어 있다고 가정합니다.
compojure 로 만들어진 예제를 다운 받습니다.
이렇게 하고 좀 오랜 시간을 기다리면 Port 3000 번에 Jetty 를 이용한 어플리케이션 서버가 떠 있는 것을 확인 하실수 있습니다. ( http://localhost:3000 에 브라우져로 접속하면 바로 확인 가능)
쉽게 만들었으면 배포하고 서비스하고 싶은 것이 개발자의 마음 아니겠습니까?
요즘 화두가 되고 있는 nginx 를 설치하고 그 웹서버와 위에서 만든 (실은 다운 받은) 예제를 연결시켜 보겠습니다.
먼저 nginx 를 설치해줍니다.
또 한번 외쳐줄 필요가 있습니다. 우분투 만세!!!
이제 nginx 의 설정파일은 손 봐줍니다. 정확히는 site 설정 정보가 되겠습니다.
위에 진하게 표시한 부분을 바꾸어 주시거나 추가해 주시면 됩니다. 간단하게 설명드리자면 기본적으로 정적인 파일들은 nginx 을 통해서 서비스가 되고 동적으로 만들어지는 파일들은 proxy_pass 를 이용해서 Jetty 가 떠 있는 3000 번 포트로 포워딩 하라는 뜻 입니다.
이제 접속을 유지하지 않더라도 항상 Jetty 가 떠 있게 만드는 방법을 알아볼 차례입니다. 이거 저거 설정해주기 귀찮더군요.
$ lein ring server
이 부분을 screen 을 이용해서 계속 떠 있게 유지해줄 생각입니다. 일단 기존에 떠 있던 프로세스를 죽여줍니다. (간단하게 Ctrl-c 눌러줍니다)
그리고 스크린을 설치해줍니다.
다시한번 외쳐줄까요? 우분투 만세!!
이러면 가상 터미널이 한개 만들어 집니다. clj 라는 이름으로 말이죠
Ctrl-a d (컨트롤 a 를 동시에 누른 다음에 d 누름) 이러면 화면에서 떨어져 나갑니다. 이상태에서 접속을 끊는다 하더라도 clj 라고 만들어진 가상 터미널 (스크린) 은 유지 됩니다.
다시 clj 로 돌아가고 싶으면
-list 옵션은 어떤 스크린이 있는지 리스트를 확인하라는 명령입니다.
이상입니다.
예전 포스트 를 보고 클로져 개발환경이 세팅되어 있다고 가정합니다.
compojure 로 만들어진 예제를 다운 받습니다.
$ cd ~/work (없으면 만들어 줍니다)
$ git clone git://github.com/weavejester/compojure-example.git
$ git clone git://github.com/weavejester/compojure-example.git
$ cd compojure-example
$ lein deps
$ lein ring server
$ lein deps
$ lein ring server
이렇게 하고 좀 오랜 시간을 기다리면 Port 3000 번에 Jetty 를 이용한 어플리케이션 서버가 떠 있는 것을 확인 하실수 있습니다. ( http://localhost:3000 에 브라우져로 접속하면 바로 확인 가능)
쉽게 만들었으면 배포하고 서비스하고 싶은 것이 개발자의 마음 아니겠습니까?
요즘 화두가 되고 있는 nginx 를 설치하고 그 웹서버와 위에서 만든 (실은 다운 받은) 예제를 연결시켜 보겠습니다.
먼저 nginx 를 설치해줍니다.
$ sudo apt-get install nginx
또 한번 외쳐줄 필요가 있습니다. 우분투 만세!!!
이제 nginx 의 설정파일은 손 봐줍니다. 정확히는 site 설정 정보가 되겠습니다.
$ sudo emacs /etc/nginx/sites-available/default
server {
# root /usr/share/nginx/www;
root /home/crazia/work/compojure-example/resources/public;
index index.html index.htm;
# Make site accessible from http://localhost/
server_name localhost;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to index.html
try_files $uri $uri/ /index.html;
# Uncomment to enable naxsi on this location
# include /etc/nginx/naxsi.rules
proxy_pass http://127.0.0.1:3000;
}
location ~* ^.+.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js|mov|avi|wmv|mp3)$
{
break;
}
....
# root /usr/share/nginx/www;
root /home/crazia/work/compojure-example/resources/public;
index index.html index.htm;
# Make site accessible from http://localhost/
server_name localhost;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to index.html
try_files $uri $uri/ /index.html;
# Uncomment to enable naxsi on this location
# include /etc/nginx/naxsi.rules
proxy_pass http://127.0.0.1:3000;
}
location ~* ^.+.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js|mov|avi|wmv|mp3)$
{
break;
}
....
$ sudo /etc/init.d/nginx restart
위에 진하게 표시한 부분을 바꾸어 주시거나 추가해 주시면 됩니다. 간단하게 설명드리자면 기본적으로 정적인 파일들은 nginx 을 통해서 서비스가 되고 동적으로 만들어지는 파일들은 proxy_pass 를 이용해서 Jetty 가 떠 있는 3000 번 포트로 포워딩 하라는 뜻 입니다.
이제 접속을 유지하지 않더라도 항상 Jetty 가 떠 있게 만드는 방법을 알아볼 차례입니다. 이거 저거 설정해주기 귀찮더군요.
$ lein ring server
이 부분을 screen 을 이용해서 계속 떠 있게 유지해줄 생각입니다. 일단 기존에 떠 있던 프로세스를 죽여줍니다. (간단하게 Ctrl-c 눌러줍니다)
그리고 스크린을 설치해줍니다.
$ sudo apt-get install screen
다시한번 외쳐줄까요? 우분투 만세!!
$ screen -S clj
이러면 가상 터미널이 한개 만들어 집니다. clj 라는 이름으로 말이죠
$ cd ~/work/compojure-example
$ lein ring server
$ lein ring server
Ctrl-a d (컨트롤 a 를 동시에 누른 다음에 d 누름) 이러면 화면에서 떨어져 나갑니다. 이상태에서 접속을 끊는다 하더라도 clj 라고 만들어진 가상 터미널 (스크린) 은 유지 됩니다.
다시 clj 로 돌아가고 싶으면
$ screen -list
$ screen -r clj
$ screen -r clj
-list 옵션은 어떤 스크린이 있는지 리스트를 확인하라는 명령입니다.
이상입니다.