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 |