배포는 Ubuntu 서버 준비, LAMP 스택 설치 및 MySQL 보안 강화, Git, rbenv, Ruby 설치로 시작됩니다. Rails 앱 구동을 위해 Passenger를 설치하고 rbenv Ruby 버전을 지정하며 Apache 가상 호스트를 구성합니다. Rails 8의 데이터베이스 구조에 맞춰 primary, cache, queue, cable 등 네 가지 프로덕션 데이터베이스를 생성합니다.
배포 자동화를 위해 Capistrano를 통합합니다. GitHub 저장소 포크, Capistrano Gem 추가 및 초기화 후, config/deploy.rb
와 config/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 활성화에 대한 간략한 안내로 마무리됩니다.