문제

Rails 응용 프로그램을 생산 모드에서 실행하도록 어떻게 변경하려면 어떻게해야합니까? 예를 들어, 구성 파일, 환경 .rb가 있습니까?

도움이 되었습니까?

해결책

Apache 및 Phusion 승객을 사용하여 생산 모드 (단계별)에서 Rails 4 앱을 설정하고 실행하는 방법 :

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

나는 이것을 잠시 동안 엉망으로 만들었습니다. 인터넷 전체에 퍼져 있으며 이것이 더 쉬울 것이라고 생각하는 약간의 조정이 있습니다.

  1. 서버의 핵심 설정에 대해서는이 안내서를 참조하십시오 (CentOS 6, 거의 모든 Linux 풍미에 적용해야합니다). https://www.digitalocean.com/community/tutorials/how-to-setup--rails-4-appache-pache--on-centos-6

  2. 승객을 설정 한 후에는 /etc/httpd/conf/httpd.conf 파일 디렉토리 구조를 반영합니다. DocumentRoot를 Rails 프로젝트 /공개 폴더에 가리키고 싶습니다. 어디서나 httpd.conf 이런 종류의 dir가있는 파일 : /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

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

실행중인 경우 승객, 그러면 기본값은 Apache 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 상수를 상환하는 것은 아마도 최후의 수단이 될 것입니다. 또 다른 대답 나는 그것을 주었다)

만약에 미파 디의 제안 작동하지 않으므로 Config/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
rails s -e production

이것은 서버를 함께 실행합니다 RAILS_ENV = 'production'.

이 외에도 자산 경로를 설정해야합니다. production.rb

config.serve_static_assets = true

이것 없이는 자산이로드되지 않습니다.

RAILS_ENV=production rails s

또는

rails s -e production

기본적으로 환경이 발전하고 있습니다.

다른 사람들이 게시 한 것처럼 : rails server -e production

또는 내 개인적인 fave : RAILS_ENV=production rails s

~ 안에 레일 3

첨가 Rails.env = ActiveSupport::StringInquirer.new('production') application.rb 및 rails s 동일하게 작동합니다 rails server -e production

module BlacklistAdmin
  class Application < Rails::Application

    config.encoding = "utf-8"
    Rails.env = ActiveSupport::StringInquirer.new('production')

    config.filter_parameters += [:password]
  end
end

"Rails Server -E Production"을 통해 프로덕션 환경에서 Rails 서버를 실행하는 좋은 방법은 아닙니다. Rails는 단일 스레드 애플리케이션으로 실행되며 한 번에 하나의 HTTP 요청에만 응답 할 수 있기 때문입니다.

철도 생산 환경에 대한 가장 좋은 기사는입니다 생산 환경 - 레일 3

기본 서버 : Rails S -E 프로덕션

의상 서버 포트의 경우 : Rails S -P [Port] -e Production, Eg. Rails S -P 3002 -E 생산

기본적으로 서버는 개발 환경에서 실행됩니다. $ rails s

생산 환경에서 실행중인 경우 : $ rails s -e production 또는 $ RAILS_ENV=production rails s

환경에서 아래에서 수행했는지 확인하십시오 .RB 파일.

env [ 'rails_env'] || = '생산'

공유 호스팅 환경 또는 Phushion 승객에서 응용 프로그램이 실행되는 경우 .httaccess (내부 공용 폴더) 및 설정 모드를 제작으로 변경해야 할 수도 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top