Ubuntu에서 Capistrano, Apache, MySQL을 사용하여 Rails 앱 배포하기

Deploying a Rails App with Apache & MySQL on Ubuntu Server · James Hibbard

작성자
발행일
2025년 04월 03일

핵심 요약

  • 1 이 가이드는 Ubuntu 서버에 Ruby on Rails 애플리케이션을 배포하는 과정을 다룹니다.
  • 2 LAMP 스택, rbenv, Passenger, Apache 가상 호스트 설정 및 Capistrano를 활용한 배포 자동화 방법을 상세히 설명합니다.
  • 3 Rails 8의 데이터베이스 요구사항, 보안 설정 및 일반적인 배포 문제 해결 팁도 포함됩니다.

도입

이 가이드는 Ubuntu 서버에 Ruby on Rails 애플리케이션을 배포하는 포괄적인 방법을 제시합니다. Apache, MySQL, Ruby, Rails를 설치 및 구성하고, Capistrano를 활용하여 배포 프로세스를 자동화하는 데 중점을 둡니다. 소규모 자가 호스팅 앱에 적합한 전통적인 배포 방식을 선호하는 사용자를 대상으로 합니다.

배포는 Ubuntu 서버 준비, LAMP 스택 설치 및 MySQL 보안 강화, Git, rbenv, Ruby 설치로 시작됩니다. Rails 앱 구동을 위해 Passenger를 설치하고 rbenv Ruby 버전을 지정하며 Apache 가상 호스트를 구성합니다. Rails 8의 데이터베이스 구조에 맞춰 primary, cache, queue, cable 등 네 가지 프로덕션 데이터베이스를 생성합니다.

배포 자동화를 위해 Capistrano를 통합합니다. GitHub 저장소 포크, Capistrano Gem 추가 및 초기화 후, config/deploy.rbconfig/deploy/production.rb에서 앱 이름, Git 저장소, 배포 경로, 공유 파일 및 디렉터리, Ruby 버전, 서버 역할 등을 설정하고 유효성을 검증합니다.

서버 측에서는 Capistrano 공유 디렉터리 구조를 생성하고 database.yml을 배치합니다. Rails 민감 데이터를 위해 config/master.key와 암호화된 config/credentials.yml.enc를 로컬에서 생성하여 데이터베이스 자격 증명을 추가하고, credentials.yml.enc를 서버로 업로드합니다. RAILS_MASTER_KEY 환경 변수 설정을 통해 Rails가 자격 증명을 해독할 수 있도록 합니다.

모든 설정 후 로컬 변경사항을 커밋하고 푸시한 뒤, cap production deploy 명령어로 첫 배포를 실행합니다. 배포 중 발생할 수 있는 일반적인 문제에 대한 디버깅 팁이 제공됩니다. 이는 Apache 에러 로그 확인, PassengerPreloadBundler 설정, 로컬 테스트를 위한 SSL 강제 비활성화, 그리고 Rails 7.1+의 로깅 동작 변경에 대한 해결책을 포함합니다. 마지막으로, rake db:seed로 샘플 데이터를 추가하고, Rails 콘솔 접근 방법, 그리고 Let’s Encrypt를 통한 SSL 활성화에 대한 간략한 안내로 마무리됩니다.

결론

이 긴 가이드를 통해 빈 서버에서 시작하여 Ruby on Rails 애플리케이션을 성공적으로 배포하는 전 과정을 상세히 살펴보았습니다. 의존성 설치, Capistrano 설정, 비밀 관리, Apache와 Passenger 연동에 이르기까지 모든 단계를 거쳐 앱을 브라우저에서 실행하고 프로덕션 환경에 적합하도록 만들었습니다.

댓글 0

댓글 작성

0/1000
정중하고 건설적인 댓글을 작성해 주세요.

아직 댓글이 없습니다

첫 번째 댓글을 작성해보세요!