카피스트라노(capistrano)를 이용한 자동 배포

작성일시 : 2024년 09월 21일 (토)


웹프로그래머를 괴롭히는 또 하나의 과정은 배포(deploy) 입니다.
배포 역시 처음엔 처음이라 어려워서 힘들지만 익숙해진 후에도 반복적일이 프로그래머의 정신을 황폐하게 만드는 작업이였지요.
배포의 과정은 보통 이런 식이였지요
로칼에서 작업한것을 FTP나 버전관리시스템에 올리고 서버에 접속하여 서버에서 필요한 수 많은 여러 작업을 해주고 재시작을 해야겠지요
레일즈의 경우는 보통 배치시 서버에서 bundle update, rake db:migrate, rake assets:precompile등의 작업을 해주어야 되지요
이런 반복적인일은 자동화의 필요성이 절실해집니다.
그래서 만들어진 프로그램 카피스트라노(capistrano)를 소개합니다.
이제 카피스트라노를 이용하면 저런 과정 필요없이 단 한줄의 명령어
cap productioin deploy

만 치면 배치는 완료됩니다.

카피스트라노 역시 Gem으로 설치하면 됩니다.
최상위 Gemfile 아래 내용을 입력하고

group :development, :test do
gem 'capistrano', '~> 3.0'
gem 'capistrano-bundler'
gem 'capistrano-rails', '~> 1.0.0'
end

bundle update를 쳐주면 카피스트라노가 설치됩니다.
잘 설치되었다면 cap 명령어가 생겼을겁니다.
cap install 을 쳐주면 내 레일즈 어플에 설정 파일이 생성됩니다.

우선 최상위에 Capfile은 사용할 기능 모듈 로드에 관한 내용인데

require 'capistrano/bundler'
require 'capistrano/rails/assets'
require 'capistrano/rails/migrations'

보통은 이 세가지만 있으면 될 듯합니다.
주석을 제거해주세요~
다음은 config/deploy.rb의 내용을 봐야하는데
여기가 거의 모든 설정을 처리하는 파일입니다.
참 많은 내용이 있습니다만 역시 보통 사용시 필요한 부분만 보겠습니다.

set :application, '어플리케이션 이름'
set :repo_url, '레포지터리 경로'
set :branch, '브랜치명'
set :deploy_to, '서버에 배치될 경로'
# set :scm, :git
# set :format, :pretty
# set :log_level, :debug
set :pty, true
set :linked_files, %w{config/database.yml .env}
set :linked_dirs, %w{bin log tmp/pids tmp/cache tmp/sockets public/assets}


처음은 어플리케이션이름, 레포지터리 경로, 브랜치명, 서버에 배치될 경로를 적고
밑에 linked_files, linked_dirs에는 공유될 파일, 디렉토리를 적습니다.
보통 버젼이 바뀌어도 안 바뀔 파일, 디렉토리, 임시파일등을 적어주면 됩니다.

config/deploy 디렉토리에는
production.rb staging.rb 두 파일이 있는데
그 안에는 접속에 필요한 사용자명, 서버명등을 넣으면 됩니다.

이렇게 준비를 마치면 이제 카피스트라노를 이용한 배치 설정을 마친것입니다.
이제 단순한 반복작업은 카피스트라노에게 맡기십시오

cap production deploy
단 한줄만 치면 배치가 끝납니다.

혹시나 한번에 안되거나 더 많은 내용을 알고 싶다면
카피스트라노 홈페이지(https://www.capistranorb.com)를 방문해보세요

이제 배포시 반복작업을 없애주는 카피스트라노로 한번에 자동배포 하세요

댓글 (0)