프로덕션 모드에서 실행되도록 Rails 애플리케이션을 변경하려면 어떻게해야합니까? 예를 들어 환경 설정 파일 (environment.rb)이 있습니까?
답변
Apache 및 Phusion Passenger를 사용하여 프로덕션 모드에서 단계별로 Rails 4 앱을 설정하고 실행하는 방법 :
일반적으로 Rails 프로젝트에 들어가서 http://something.com:3000rails s
에서 앱의 개발 버전을 얻을 수 있습니다 . 생산 모드는 구성하기가 조금 까다 롭습니다.
나는 이것을 잠시 동안 엉망으로 삼았으므로 초보자 (나 같은)를 위해 이것을 쓸 것이라고 생각했다. 인터넷 전체에 퍼지는 몇 가지 작은 조정이 있으며 이것이 더 쉬울 것이라고 생각했습니다.
-
서버의 핵심 설정에 대해서는이 안내서를 참조하십시오 (CentOS 6, 거의 모든 Linux 버전에 적용해야 함). https://www.digitalocean.com/community/tutorials/how-to-setup-a-rails-4 -app-with-apache-and-passenger-on-centos-6
-
승객을 설정 한 후
/etc/httpd/conf/httpd.conf
디렉토리 구조를 반영 하도록 파일을 편집했는지 반드시 확인 하십시오. DocumentRoot를 Rails 프로젝트 / public 폴더로 지정하려고합니다.httpd.conf
이런 종류의 디렉토리가 있는 파일의/var/www/html/your_application/public
모든 위치 : 업데이트해야합니다. 그렇지 않으면 모든 것이 매우 좌절됩니다. 나는 이것을 충분히 강조 할 수 없다. -
서버를 재부팅하십시오 (또는 최소한 Apache
service httpd restart
) -
Rails 프로젝트 폴더를 입력
/var/www/html/your_application
하고로 마이그레이션을 시작하십시오rake db:migrate
. 나중에 테이블을 추가 할 계획이더라도 데이터베이스 테이블이 존재하는지 확인하십시오 (이 또한 1 단계의 일부 임). -
RAILS_ENV=production rake secret
-추가 할 수있는 secret_key가 생성됩니다config/secrets.yml
. 실행하지 않기 위해 이것을 config / secrets.yml에 복사하여 붙여 넣을 수 는 있지만 권장하지는 않습니다. 개인적으로이 단계를 수행하여 다른 모든 것이 작동하는지 확인한 다음 다시 변경하고 나중에 소스를 제공합니다. -
RAILS_ENV=production rake db:migrate
-
RAILS_ENV=production rake assets:precompile
정적 자산을 제공하는 경우 그러면 js, css, 이미지 파일이/public
폴더 로 푸시됩니다 . -
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