[ruby-on-rails] Rails 애플리케이션을 프로덕션으로 변경

프로덕션 모드에서 실행되도록 Rails 애플리케이션을 변경하려면 어떻게해야합니까? 예를 들어 환경 설정 파일 (environment.rb)이 있습니까?



답변

Apache 및 Phusion Passenger를 사용하여 프로덕션 모드에서 단계별로 Rails 4 앱을 설정하고 실행하는 방법 :

일반적으로 Rails 프로젝트에 들어가서 http://something.com:3000rails s 에서 앱의 개발 버전을 얻을 수 있습니다 . 생산 모드는 구성하기가 조금 까다 롭습니다.

나는 이것을 잠시 동안 엉망으로 삼았으므로 초보자 (나 같은)를 위해 이것을 쓸 것이라고 생각했다. 인터넷 전체에 퍼지는 몇 가지 작은 조정이 있으며 이것이 더 쉬울 것이라고 생각했습니다.

  1. 서버의 핵심 설정에 대해서는이 안내서를 참조하십시오 (CentOS 6, 거의 모든 Linux 버전에 적용해야 함). https://www.digitalocean.com/community/tutorials/how-to-setup-a-rails-4 -app-with-apache-and-passenger-on-centos-6

  2. 승객을 설정 한 후 /etc/httpd/conf/httpd.conf디렉토리 구조를 반영 하도록 파일을 편집했는지 반드시 확인 하십시오. DocumentRoot를 Rails 프로젝트 / public 폴더로 지정하려고합니다.httpd.conf 이런 종류의 디렉토리가 있는 파일의 /var/www/html/your_application/public모든 위치 : 업데이트해야합니다. 그렇지 않으면 모든 것이 매우 좌절됩니다. 나는 이것을 충분히 강조 할 수 없다.

  3. 서버를 재부팅하십시오 (또는 최소한 Apache service httpd restart)

  4. Rails 프로젝트 폴더를 입력 /var/www/html/your_application하고로 마이그레이션을 시작하십시오 rake db:migrate. 나중에 테이블을 추가 할 계획이더라도 데이터베이스 테이블이 존재하는지 확인하십시오 (이 또한 1 단계의 일부 임).

  5. RAILS_ENV=production rake secret-추가 할 수있는 secret_key가 생성됩니다 config/secrets.yml. 실행하지 않기 위해 이것을 config / secrets.yml에 복사하여 붙여 넣을 수 있지만 권장하지는 않습니다. 개인적으로이 단계를 수행하여 다른 모든 것이 작동하는지 확인한 다음 다시 변경하고 나중에 소스를 제공합니다.

  6. RAILS_ENV=production rake db:migrate

  7. RAILS_ENV=production rake assets:precompile정적 자산을 제공하는 경우 그러면 js, css, 이미지 파일이 /public폴더 로 푸시됩니다 .

  8. RAILS_ENV=production rails s

이 시점에서 http://something.com/whatever대신 앱을 사용할 수 있어야합니다 :3000. 그렇지 않은 passenger-memory-stats경우 다음과 같은 항목이 있는지 확인하십시오.908 469.7 MB 90.9 MB Passenger RackApp: /var/www/html/projectname

나는 아마도 유쾌한 것을 놓쳤지만 과거에는 나에게 효과적이었다.


답변

이것은 이제

rails server -e production

또는 더 컴팩트

rails s -e production

레일 3+ 프로젝트에서 작동합니다.


답변

Passenger 에서 실행하는 경우 기본값은 아파치 conf에서 프로덕션에서 실행하는 것입니다.

<VirtualHost *:80>
  ServerName application_name.rails.local
  DocumentRoot "/Users/rails/application_name/public"
  RailsEnv production ## This is the default
</VirtualHost>

mongrel 또는 webrick을 사용하여 로컬 서버를 실행하는 경우 다음을 수행 할 수 있습니다.

./script/server -e production

또는 bash에서 :

RAILS_ENV=production ./script/server

실제로 enviornment.rb에서 RAILS_ENV 상수를 재정의하면 아마도 최후의 수단이 될 것입니다. 아마도 설정되지 않을 것입니다 ( 다른 대답을 보았습니다 )


답변

경우 mipadi의 제안은 하지 작업을 수행,이에 대한 설정 / environment.rb에 추가

# force Rails into production mode when                          
# you don't control web/app server and can't set it the proper way                  
ENV['RAILS_ENV'] ||= 'production'


답변

환경 변수 RAILS_ENV를로 변경하십시오 production.


답변

$> export RAILS_ENV=production


답변

환경을 스크립트 / 서버로 전달할 수도 있습니다.

$ script/server -e production