티스토리 뷰

프로그래밍 공부/Ruby on Rails : 이론

Ruby on Rails : 환경(Environment)

마음 따뜻한 개발자, 나른한 하루 2019. 11. 1. 06:05

레일즈의 서버 환경은 기본적으로 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

댓글
  • 프로필사진 영아재 public 폴더 저장소 지원 허용부분은 어떤 경우에 가능한건가요?
    heroku를 예로 쓴다한다면 위의 방법을 따른다면 따로 amazon s3같은 스토리지를 사용하지 않아도 될까요??
    2020.12.07 00:44
  • 프로필사진 마음 따뜻한 개발자, 나른한 하루 그렇긴 한데, 먼 미래에 있어 안정적인 서비스 운영을 위해선 API 서버와 Storage 서버와는 분리를 시키는게 좋습니다. 2020.12.08 22:46 신고
댓글쓰기 폼
공지사항
Total
156,759
Today
59
Yesterday
130
링크
«   2021/11   »
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30        
글 보관함