티스토리 뷰
레일즈의 서버 환경은 기본적으로 3가지가 존재합니다 : Development, Test, Product
사실 기본적으로 3가지가 주어졌을 뿐이지, 사용자가 원하면 추가적으로 이름을 가진 환경을 만들어낼 수 있습니다.
사실 저희는 Environment라는 개념에 대해선 이미 간접적으로 경험을 하고 있습니다.
서버를 킬 때 보면 Environment 정보가 보여지는데, 대부분 development로 맞춰져 있을겁니다.
이제 각 환경에 대해 설명해보겠습니다.
-
환경
1) Development
- 기본적으로 연습할 때 많이 쓰는 환경
- 서버 내 캐싱이 꺼져있다보니, 퍼포먼스가 다소 떨어지는 편
- 코드 수정이 이루어지면 바로 본 서버에 적용이 됩니다.
- 오류를 접할 시, 오류페이지가 활성화 됩니다.
2) test
- 자동화 테스트를 할 때 쓰이는 환경입니다.
- 테스트에 최적화 되어있다 보니 서버 최적화에 있어 성능을 초점을 뒀습니다.
- 명령어 한번의 입력으로 모든 과정을 자동으로 거치면서 오류 및 버그를 찾아내고 보고합니다.
3) Production
- 실제 서비스 운영 때 쓰이는 Environment 입니다.
- 보안과 성능 퍼포먼스에 초점이 맞춰져 있습니다.
- 코드 수정이 이루어져도 바로 본서버에 적용이 안됩니다. (서버를 껏다 켜야 합니다.)
- 기본적으로 서버 오류 로그 미출력 및 public 폴더 저장소를 미지원 합니다.
- 오류를 접할 시, public 폴더 내에 있는 404 혹은 500 에러 페이지로 이동됩니다.
-
각 환경 설정(Each Environment Configuration)
각 환경(Environment)에 대해선 config/environments 에서 개별적으로 설정할 수 있습니다.
-
DB 설정
각 환경(Environment)별로 기본적으로 DB는 분리되어있습니다.
환경에 따른 DB 설정은 config/database.yml 파일을 참고해주세요.
-
환경에 따른 서버 실행
1) Development
① DB를 Migrate합니다.
rake db:migrate
② 서버를 킵니다.
rails s -b 0.0.0.0 -p 80
2) Test
① Test 환경 DB를 생성 및 Migrate합니다.
rake db:create RAILS_ENV=test
rake db:migrate RAILS_ENV=test
② Test 환경의 서버를 킵니다.
rails s -b 0.0.0.0 -p 80 -e test
3) Production
① Production 환경 DB를 생성 및 Migrate합니다.
rake db:create RAILS_ENV=production
rake db:migrate RAILS_ENV=production
② Production 환경은 반드시 Assets을 컴파일 합니다.
rake assets:precompile RAILS_ENV=production
③ Production 환경의 서버를 킵니다.
rails s -b 0.0.0.0 -p 80 -e production
-
Production 환경 내 발생되는 문제 해결법
1) 서버 로그에 에러메세지 미출력
config/environments/production.rb 파일을 열람 후,
## config/environments/production.rb
if ENV["RAILS_LOG_TO_STDOUT"].present?
logger = ActiveSupport::Logger.new(STDOUT)
logger.formatter = config.log_formatter
config.logger = ActiveSupport::TaggedLogging.new(logger)
end
위 코드를
아래와 같이 수정해주세요.
## config/environments/production.rb
require 'syslog/logger'
config.logger = Logger.new(STDOUT)
2) public 폴더 저장소 지원 허용
config/environments/production.rb 파일을 열람 후,
config.public_file_server.enabled = ENV['RAILS_SERVE_STATIC_FILES'].present?
위 코드를
아래와 같이 수정해주세요.
config.public_file_server.enabled = true
-
자료 참고
1. What are the differences between development, test and production? [클릭]
2. Ruby on Rails Guid [클릭]
루비온 레일즈 Ruby on Rails ROR
'프로그래밍 공부 > Ruby on Rails : 이론' 카테고리의 다른 글
Ruby on Rails : 최소한의 bundle update (conservative 옵션) (0) | 2019.11.01 |
---|---|
Ruby on Rails : Gem 개념 (0) | 2019.11.01 |
Ruby on Rails : assets, public 폴더 개념 (0) | 2019.11.01 |
Ruby on Rails : Restful API (2) | 2019.11.01 |
Ruby on Rails : 폼 헬퍼 (Form Helper) (0) | 2019.11.01 |