Capistrano로 자동 배포 파이프라인 만들기

2025. 8. 5. 09:00·Ruby On Rails
728x90
반응형

Heroku로 간편하게 배포해봤다면 이제는 직접 관리하는 서버에 자동 배포 파이프라인을 구축해볼 차례입니다.
그 중심에는 바로 Capistrano가 있어요. 이 도구는 로컬에서 명령 한 번으로 원격 서버에 코드 배포, 마이그레이션, 서비스 재시작 등을 자동으로 수행합니다.

이번 글에서는 Rails 앱을 Ubuntu 서버에 Capistrano로 자동 배포하는 기본 설정을 단계별로 정리해봅니다.


🚀 1. Capistrano 설치

# Gemfile
group :development do
  gem 'capistrano', require: false
  gem 'capistrano-rails', require: false
  gem 'capistrano-rbenv', require: false
  gem 'capistrano-bundler', require: false
  gem 'capistrano3-puma', require: false
end
$ bundle install
$ bundle exec cap install

위 명령어를 실행하면 다음 파일들이 생성됩니다:

  • Capfile
  • config/deploy.rb
  • config/deploy/production.rb
  • config/deploy/staging.rb

🛠 2. Capfile 설정


require 'capistrano/setup'
require 'capistrano/deploy'
require 'capistrano/rbenv'
require 'capistrano/bundler'
require 'capistrano/rails/assets'
require 'capistrano/rails/migrations'
require 'capistrano/puma'
install_plugin Capistrano::Puma::Daemon

📄 3. config/deploy.rb 설정


lock "~> 3.18.0"

set :application, "my_app_name"
set :repo_url, "git@github.com:username/my_app.git"
set :deploy_to, "/var/www/my_app_name"

set :rbenv_type, :user
set :rbenv_ruby, '3.2.2'

append :linked_files, "config/master.key"
append :linked_dirs, "log", "tmp/pids", "tmp/cache", "tmp/sockets", "public/system"

🌐 4. 서버 정보 입력 (production.rb)


# config/deploy/production.rb
server 'your.server.ip', user: 'deploy', roles: %w{app db web}

배포 대상 서버의 IP와 사용자 계정을 설정합니다.


🔐 5. SSH 키 인증 & Git 접근

서버에서 GitHub에 접근할 수 있도록 ssh-keygen으로 키를 생성하고 GitHub에 public key를 등록합니다.
또한, 로컬에서도 서버로 SSH 접속이 가능한지 반드시 확인하세요.


⚙️ 6. 서버 준비

서버에는 다음이 사전 설치되어 있어야 합니다:

  • rbenv + ruby + bundler
  • nginx
  • puma
  • PostgreSQL or MySQL

배포 디렉토리 /var/www/my_app와 deploy 사용자의 권한도 설정되어야 해요.


🚀 7. 배포 실행


$ bundle exec cap production deploy

이 한 줄로 다음 작업이 자동으로 실행됩니다:

  • Git에서 최신 코드 pull
  • Gem 설치 (bundler)
  • DB 마이그레이션
  • Assets precompile
  • Puma 서버 재시작

📦 8. 이후 작업 및 확장

  • 배포 전 테스트 자동 실행: before :deploy, :run_tests
  • Slack/Discord 배포 알림
  • Staging 환경 추가
  • Github Actions + Capistrano CI 파이프라인

🎯 마치며

Capistrano를 도입하면 “배포는 그냥 한 줄이면 돼요.”라고 말할 수 있습니다.
사람의 실수를 줄이고, 항상 같은 방식으로 배포되기 때문에 서비스 품질도 높아집니다.
이제 여러분도 직접 만든 서비스를 자동으로 서버에 배포할 수 있어요! 🤖

728x90
반응형

'Ruby On Rails' 카테고리의 다른 글

Heroku로 Rails 앱 배포하기 — 빠르고 간단한 클라우드 배포  (2) 2025.07.31
Rails 앱 보안 점검 — CSRF, SQL Injection 막기  (2) 2025.07.29
메일 발송 기능 구현 — ActionMailer와 Gmail SMTP 연동하기  (3) 2025.07.24
댓글 기능 추가하기 — 모델 연관관계 완전 정복  (4) 2025.07.22
관리자 페이지 만들기 — RailsAdmin vs ActiveAdmin  (0) 2025.07.17
'Ruby On Rails' 카테고리의 다른 글
  • Heroku로 Rails 앱 배포하기 — 빠르고 간단한 클라우드 배포
  • Rails 앱 보안 점검 — CSRF, SQL Injection 막기
  • 메일 발송 기능 구현 — ActionMailer와 Gmail SMTP 연동하기
  • 댓글 기능 추가하기 — 모델 연관관계 완전 정복
코드를 걷는 사람
코드를 걷는 사람
devwanderer 님의 블로그 입니다.
  • 코드를 걷는 사람
    터미널 밖으로 나온 개발자
    코드를 걷는 사람
  • 전체
    오늘
    어제
    • 분류 전체보기 N
      • Flutter
        • Flutter 게시판 앱 만들기
        • Flutter 뉴스 앱 만들기
        • Flutter 메모 앱 만들기
        • Flutter 캘린더 앱 만들기
        • Flutter 날씨 앱 만들기
      • Next.js
      • Ruby On Rails N
  • 블로그 메뉴

    • 홈
    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    백엔드개발
    RubyOnRails
    flutterui
    개발블로그
    Firebase
    뉴스앱
    flutter디자인
    정적사이트
    flutter상태관리
    감성앱
    UI디자인
    flutter게시판
    flutter기초
    ActiveRecord
    UIUX
    table_calendar
    Flutter
    메모앱
    북마크기능
    flutter앱개발
    모바일앱개발
    rails보안
    날씨앱
    Nextjs
    flutter개발
    캘린더앱
    openweather
    다크모드
    코드를걷는사람
    fluttertips
  • 최근 댓글

  • 최근 글

  • 반응형
    250x250
  • hELLO· Designed By정상우.v4.10.3
코드를 걷는 사람
Capistrano로 자동 배포 파이프라인 만들기
상단으로

티스토리툴바