2014-04-14 2 views
0

PHP에서 웹 응용 프로그램을 작성할 때 아파치 모듈 (mod_php)과 같은 FCGI (php-fpm)와 같은 여러 모드에서 작동 할 수 있습니다. 이 모든 경우에 PHP 스크립트 애플리케이션을 편집 할 때 서버를 다시 시작할 필요없이 immediatelly로 업데이트됩니다. Ruby 웹 앱도 다른 모드 (예 : Unicorn + Nginx를 사용하는 FCGI)에서 작동 할 수 있음을 알고 있습니다. 그러나 Ruby 웹 앱을 시작하는 가장 일반적인 방법과이 모든 수단 (즉, 스크립트를 업데이트하기 위해 서버를 다시 시작해야하는 경우)에 대한 기술적 인 세부 사항, 해당 프로 시저 및 단점에 대해 알고 싶습니다.Ruby 웹 응용 프로그램 작업 모드

답변

1

루비 응용 프로그램을 작성하는 방법에는 여러 가지 고전적인 1990 년대 스타일의 CGI, FastCGI를, Mongrel 또는 Thin보다 직접 프로세스를 관리 할 수 ​​Passenger 같은 실행 프로그램을 사용하는 현대, 권장되는 방법과 독립적 인 HTTP를 지원하는 프로세스가 있습니다.

Ruby on Rails에는 여러 가지 작동 모드가 있습니다. 기본값 인 두 개는 developmentproduction입니다.

  • 아무것도 app/ 또는 config/routes.rb 각 요청에 대해 다시로드 :

    개발 에서 : 다음은 몇 가지 중요한 차이점이있다.

  • log/development.log은 가능한 한 자세한 정보로 실행되는 각 쿼리를 기록합니다.
  • 애셋은 원시 형식으로 제공되며 언제든지 변경할 수 있습니다.

생산 에서 :

  • 응용 한 번로드 및 캐시, 변경 사항은 다시 시작해야합니다.
  • log/production.log 파일에는 오류 및 중요한 알림 만 포함되어 있습니다.
  • 자산은 축소되고 압축되며 번들로 제공됩니다. 사소한 변경조차도 모든 것을 다시 포장해야합니다.

일반적으로 프로덕션 서버에서 스크립트를 편집하는 것은 좋지 않으므로 레일스 방식이 일반적으로 좋은 방법입니다. 신속하게 무언가를 반복해야하는 경우 로컬 복사본에서 수행하고 변경 사항을 서버에 적용하면 자신이 작동 할 것이라고 확신 할 수 있습니다.

서버에서 비상 사태를 실제로 해결해야하는 경우 코드를 편집하고 touch tmp/restart.txt을 강제로 다시로드하면됩니다. 애셋을 변경하면 rake assets:precompile을 실행하여 리 패키징해야합니다.

많은 것들과 마찬가지로 Rails는 권장되는 접근 방법을 쉽고 위험한 것은 어렵게 만듭니다.

+0

대단원! RoR이 dev 모드에서 이러한 동작을 어떻게 달성하는지 설명 할 수 있습니까? 그것은 사용되는 서버에 따라 다르며 구현이 다르거 나 서버 독립적 인 기능입니까? 그리고 Sinatra와 같은 다른 프레임 워크는 어떻게됩니까? –

+0

레일즈의 특징입니다. Sinatra는 훨씬 가볍고 기본적으로이 기능이 없기 때문에 서버를 다시 시작해야하지만 언제든지 [추가 할 수 있습니다] (http://www.sinatrarb.com/faq.html#reloading) 네가 정말로 원한다면. – tadman

+0

고마워요! 그것은 매우 도움이됩니다. –

관련 문제