답변:
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+ 프로젝트에서 작동합니다.
rails s -e production
server -e production
합니까?
production
기본적으로 기본값입니다.
echo "export RAILS_ENV=production" >> ~/.bash_profile
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'
ENV['RAILS_ENV'] ||= 'production'
도 그들에 적용?
환경 변수 RAILS_ENV
를로 변경하십시오 production
.
~/.bashrc
또는 ~/.bash_profile
단순히export RAILS_ENV=production"
에서 레일 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"에 의해 프로덕션 환경에서 레일 서버를 실행하는 좋은 방법은 아닙니다. 레일은 단일 스레드 응용 프로그램으로 실행되며 한 번에 하나의 HTTP 요청에만 응답 할 수 있기 때문입니다.
레일 프로덕션 환경에 대한 최고의 기사는 프로덕션 환경-레일스 3입니다.
기본 서버의 경우 : rails s -e production
costum 서버 포트의 경우 : 레일 s -p [port] -e 생산, 예. 레일 s -p 3002 -e 생산