필자는 최근 맥 서버(OSX El Capitan)로 레일스 프로젝트를 배포하는 작업을 1주일간에 걸쳐 진행했었다. 구글 검색시에도 이와 관련된 자료가 많지 않아서, 맥의 서비스 관리 툴인 launchd에 대한 공부와 함께 수차례의 시행착오 끝에 성공적으로 배포작업을 완료할 수 있었다.

이 글을 읽는 독자가 혹 필자와 같이 맥 서버로 레일스 프로젝트를 배포해야할 상황에 닥칠 때 이 글이 도움이 될 수 있기를 바란다.

카피스트라노(Capistrano)란 루비 기반의 원격서버 자동화 툴이다. 레일스에서는 대개 이 카피스트라노를 이용하여 웹애플리케이션을 배포하게 된다. 이 글에서는 카피스트라노(Capistrano 3)를 이용하여 레일스 프로젝트를 원격서버로 배포하는 방법에 대해서 설명한다. (이 글을 읽기 전에 초보자를 위한 레일스가이드북을 공부하면 많은 도움이 될 것이다.)

레일스 어플리케이션 배포에 대한 것은 Deploying Rails Application is Easy을 참조하면 됩니다.

정말 배포하기가 쉬운지는 각자가 느끼기에 달려 있는 것 같습니다. ㅎㅎㅎ

레일스 어플리케이션을 배포할 때 서버 설정하는 부분에서 두가지 옵션을 생각해 볼 수 있습니다.

하나는 메인 도메인명에 슬래시한 후에 어플리케이션명을 붙여서 사용하는 sub-URI 방식을 들 수 있고, 다른 하나는 포트를 추가하여 서비스하는 방법입니다.

Capistrano를 이용하여 레일스 어플리케이션을 배포하면서 공짜는 없다는 생각을 했습니다.

레일스 어플리케이션을 배포하는 것은 매우 까다로와 초보수준에서는 여간 어려운 일이 아닌 것 같습니다. 그러나 Passenger(aka “mod_rails”) 모듈을 아파치나 “Nginx” 서버에 붙여서 사용하면 쉽게 배포할 수 있어 수고를 덜어 주게 되었습니다. 그래서 저도 아파치+Passenger 조합으로 웹서버를 운영하고 있습니다. 그러나 레일스 공식 홈페이지에 나와 있는 레일스 배포에 관한 내용을 보면 “Capistrano” 젬을 이용한 레일스 어플리케이션의 배포가 관리적인 면에서 편리한 것 같습니다. 그리고 규모가 큰 서버군을 운영할 경우에는 더더욱 Capistrano를 이용해서 배포해야 특히 SCM과의 연계는 여러모로 도움이 될 것 같습니다.