Rails 응용 프로그램을 생산으로 변경하십시오
-
21-09-2019 - |
문제
Rails 응용 프로그램을 생산 모드에서 실행하도록 어떻게 변경하려면 어떻게해야합니까? 예를 들어, 구성 파일, 환경 .rb가 있습니까?
해결책
Apache 및 Phusion 승객을 사용하여 생산 모드 (단계별)에서 Rails 4 앱을 설정하고 실행하는 방법 :
일반적으로 Rails 프로젝트에 들어갈 수 있습니다. rails s
, 앱의 개발 버전을 얻으십시오. http://something.com:3000. 생산 모드는 구성하기가 약간 까다 롭습니다.
나는 이것을 잠시 동안 엉망으로 만들었습니다. 인터넷 전체에 퍼져 있으며 이것이 더 쉬울 것이라고 생각하는 약간의 조정이 있습니다.
서버의 핵심 설정에 대해서는이 안내서를 참조하십시오 (CentOS 6, 거의 모든 Linux 풍미에 적용해야합니다). https://www.digitalocean.com/community/tutorials/how-to-setup--rails-4-appache-pache--on-centos-6
승객을 설정 한 후에는
/etc/httpd/conf/httpd.conf
파일 디렉토리 구조를 반영합니다. DocumentRoot를 Rails 프로젝트 /공개 폴더에 가리키고 싶습니다. 어디서나httpd.conf
이런 종류의 dir가있는 파일 :/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
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 (내부 공용 폴더) 및 설정 모드를 제작으로 변경해야 할 수도 있습니다.