2009-07-06 4 views
8

IIS와 함께 작동하도록 jRuby를 설정하는 분명한 지침이있는 사람이 있습니까?IIS 및 jRuby 설정을위한 지침

편집 : 내가 무엇을 찾고 있어요 것은 윈도우 IIS와 JRuby를 사용에 대한 작업 루비 레일에 응용 프로그램을 얻기를위한 단계별 지침이

입니다. 그 이유는 내가 야생에서 질문을 할 때 "리눅스 사용"이외의 것을 찾을 수 없기 때문입니다. 대부분의 사람들은 Windows가 기본 개발 및 배포 환경이므로 Linux 기반 서버를 사용하는 것은 의문의 여지가 없습니다. 또한 IIS는 Windows에 포함되어 있으며 Active Directory와의 뛰어난 통합을 제공하므로 Apache를 사용하는 것도 문제가되지 않습니다.

마지막으로 전쟁 파일을 사용하는 것은 악몽입니다. ​​파일을 복사하거나 전쟁 파일을 사용하여 레일 앱을 배포하는 방법에 대한 지침을 포함하십시오.

+0

나는 전쟁 파일을 피하려고 노력하면서 잘못된 방향으로 가고 있다고 생각합니다. 전쟁 파일을 둘러 보려고하지 말고 시간을내어 보면 장기적으로 더 쉽게 될 것입니다. –

+0

JRuby와 IIS에 대한 단계별 연습을 NO WARS와 함께 보여주기 위해 내 답변을 대폭 업데이트했습니다 :-) –

+0

Warbler를 사용하여 전쟁 생성을 표시하고 Glassfish에서 JRuby/Rails 응용 프로그램을 실행하는 연습을 업데이트했습니다. IIS. Enjoy :-) –

답변

10

실제로 IIS에 배포하려는 Rails 앱입니까, 아니면 JRuby 여야합니까? JRuby가 아닌 Ruby on Rails라면 here is your step-by-step guide입니다. 그러나 JRuby가 IIS로 작업하고 싶다면 더 이상 보지 마십시오. 아래는 내가 따라야 할 단계들입니다. 내 환경은 Windows 7 RC, Java 1.6.0_13에서 IIS7입니다.

  1. 먼저 JRuby를 http://dist.codehaus.org/jruby/1.3.1/jruby-bin-1.3.1.tar.gz에서 다운로드했습니다.
  2. 그런 다음 압축을 풀어 C:\JRuby으로 압축을 풉니 다.
  3. 환경 변수 JRUBY_HOME을 c:\JRuby\jruby-1.3.1으로 설정했습니다.
  4. 경로에 %JRUBY_HOME%\bin을 추가했습니다.

나는 스크린 잡아들이 산재 해있는 다음 단계를 진행할 것입니다.

하자 실행 JRuby를이 성공적으로 설치되었는지 확인합니다 :

 
C:\Users\Vinay>jruby -v 
jruby 1.3.1 (ruby 1.8.6p287) (2009-06-15 2fd6c3d) (Java HotSpot(TM) Client VM 1. 
6.0_13) [x86-java] 

확인을 지금까지. 이제 레일을 설치 JRuby를를 사용하자 :

 
C:\Users\Vinay\Projects\jror>jruby script/server 
=> Booting WEBrick 
=> Rails 2.3.3 application starting on http://0.0.0.0:3000 
JRuby limited openssl loaded. gem install jruby-openssl for full support. 
http://wiki.jruby.org/wiki/JRuby_Builtin_OpenSSL 
=> Call with -d to detach 
=> Ctrl-C to shutdown server 
[2009-07-21 17:51:21] INFO WEBrick 1.3.1 
[2009-07-21 17:51:21] INFO ruby 1.8.6 (2009-06-15) [java] 
[2009-07-21 17:51:21] INFO WEBrick::HTTPServer#start: pid=2440 port=3000 

이동합니다 http://localhost:3000/에 :

 
C:\Users\Vinay\Projects>rails new jror 
     create 
     create app/controllers 
     create app/helpers 
     create app/models 
     create app/views/layouts 
     create config/environments 
     create config/initializers 
     create config/locales 
     create db 
     create doc 
     create lib 
     create lib/tasks 
     create log 
     create public/images 
     create public/javascripts 
     create public/stylesheets 
     create script/performance 
     create test/fixtures 
     create test/functional 
     create test/integration 
     create test/performance 
     create test/unit 
     create vendor 
     create vendor/plugins 
     create tmp/sessions 
     create tmp/sockets 
     create tmp/cache 
     create tmp/pids 
     create Rakefile 
     create README 
     create app/controllers/application_controller.rb 
     create app/helpers/application_helper.rb 
     create config/database.yml 
     create config/routes.rb 
     create config/locales/en.yml 
     create config/initializers/backtrace_silencers.rb 
     create config/initializers/inflections.rb 
     create config/initializers/mime_types.rb 
     create config/initializers/new_rails_defaults.rb 
     create config/initializers/session_store.rb 
     create config/environment.rb 
     create config/boot.rb 
     create config/environments/production.rb 
     create config/environments/development.rb 
     create config/environments/test.rb 
     create script/about 
     create script/console 
     create script/dbconsole 
     create script/destroy 
     create script/generate 
     create script/runner 
     create script/server 
     create script/plugin 
     create script/performance/benchmarker 
     create script/performance/profiler 
     create test/test_helper.rb 
     create test/performance/browsing_test.rb 
     create public/404.html 
     create public/422.html 
     create public/500.html 
     create public/index.html 
     create public/favicon.ico 
     create public/robots.txt 
     create public/images/rails.png 
     create public/javascripts/prototype.js 
     create public/javascripts/effects.js 
     create public/javascripts/dragdrop.js 
     create public/javascripts/controls.js 
     create public/javascripts/application.js 
     create doc/README_FOR_APP 
     create log/server.log 
     create log/production.log 
     create log/development.log 
     create log/test.log 

예상대로의 확신 모두의 작업을 할 WEBrick를 실행하자

 
C:\Users\Vinay>gem install json-jruby 
C:\Users\Vinay>gem install rails --no-rdoc 
JRuby limited openssl loaded. gem install jruby-openssl for full support. 
http://wiki.jruby.org/wiki/JRuby_Builtin_OpenSSL 
Successfully installed activerecord-2.3.3 
Successfully installed rack-1.0.0 
Successfully installed actionpack-2.3.3 
Successfully installed actionmailer-2.3.3 
Successfully installed activeresource-2.3.3 
Successfully installed rails-2.3.3 
6 gems installed 
Installing ri documentation for activerecord-2.3.3... 
Installing ri documentation for rack-1.0.0... 
Installing ri documentation for actionpack-2.3.3... 
Installing ri documentation for actionmailer-2.3.3... 
Installing ri documentation for activeresource-2.3.3... 
Installing ri documentation for rails-2.3.3... 

의이 레일 응용 프로그램은 jror라고 만들어 보자 Rails 애플리케이션이 나타나는지 확인하십시오. 충분히

Rails app on WEBrick

물론, 거기이다.

다음으로 IIS에 선택된 요청이 JRuby로 프록시 처리되는 메커니즘을 설정해야합니다. 이렇게하려면 URL 다시 작성기/역방향 프록시가 필요합니다. 나는 이것에 ISAPI Rewrite 3을 사용했다. 다른 도구 (예 : Microsoft ISA)를 사용하도록 선택할 수 있습니다. ISAPI Rewrite 3은 서버 당 99 달러의 가치가 있으며 45 일 시험 사용 기간이 제공됩니다.

http://localhost/jror/abc123 

http://localhost:3000/abc123 

폼의

 
RewriteEngine on 
RewriteBase/
RewriteLog "C:\temp\rewrite.log" 
RewriteLogLevel 9 
RewriteProxy jror/(.*) http://localhost:3000/$1 

이 프록시 URL을 이제, 다음과 같이

는 ISAPI 재 작성 3의, 나는 httpd.conf 구성 파일을 설정 http://localhost/jror/으로 이동하여 JRuby에서 제공하는 요청을 볼 수 있지만 IIS :

Rails app on WEBrick through IIS

그리고 무엇을 추측 : 없는 전쟁! Rails 앱에 대한 모든 변경 사항은 직접 처리해야합니다. 여기

해당 페이지에 대한 응답 헤더를 보여주는 내 파이어 버그 콘솔의 스크린 샷입니다 : 물론

alt text

이 프로덕션보다 개발 설정의 많은 -하지만 생산 사용을 위해 당신은 아마 필요합니다 Glassfish와 같은 생산 준비가 끝난 응용 서버를 사용하면 성가신 전쟁을 사용하게됩니다.

전쟁을 사용하여 Java 응용 프로그램 서버에 배포하려는 경우 Warbler을 사용하면 전쟁에 응용 프로그램.

Glassfish V3에서 실행하려면 몇 가지 추가 단계가 필요합니다. Rails 응용 프로그램을 배포하고 실행하는 가장 빠른 방법은 GlassFish v3 커널 (Grizzly) 및 일부 유틸리티로만 구성된 GlassFish gem을 사용하는 것입니다.의이 보석을 설치하자

 
C:\Users\Vinay\Projects\jror>gem install glassfish 
JRuby limited openssl loaded. gem install jruby-openssl for full support. 
http://wiki.jruby.org/wiki/JRuby_Builtin_OpenSSL 
Successfully installed glassfish-0.9.5-universal-java 
1 gem installed 
Installing ri documentation for glassfish-0.9.5-universal-java... 
Installing RDoc documentation for glassfish-0.9.5-universal-java... 

은 글래스 피시에 레일 응용 프로그램을 실행

 
C:\Users\Vinay\Projects>glassfish jror 
Starting GlassFish server at: 192.168.0.17:3000 in development environment... 
Writing log messages to: jror/log/development.log. 
Press Ctrl+C to stop. 

당신이 볼 수 있듯이, 당신은 글래스 피시에서 실행하고 있지만 여전히 전쟁이 필요하지 않습니다! Glassfish 서버에서 사용하는 IP 주소와 포트를 가리 키도록 프록시를 변경하는 것 이외에는 IIS 측에서 변경하지 않아도됩니다 (내 설정에서는 httpd.conf). 혹시 전체 돼지 고기를 먹고 Glassfish 전체 서버를 설치하고 Rails 앱을 실행하려면 Glassfish 팀의 these instructions을 따르십시오. Glassfish, 서버의 설치 ​​및 실행, Rails 애플리케이션의 배치 및 배치 해제, 프로덕션 모드에서의 애플리케이션 실행에 대해 다룹니다.

다음은 Glassfish 전체 서버용 war 파일을 만드는 데 필요한 것입니다.

지저귀를 설치

 
C:\Users\Vinay\Projects>gem install warbler 
JRuby limited openssl loaded. gem install jruby-openssl for full support. 
http://wiki.jruby.org/wiki/JRuby_Builtin_OpenSSL 
Successfully installed warbler-0.9.13 
1 gem installed 
Installing ri documentation for warbler-0.9.13... 
Installing RDoc documentation for warbler-0.9.13... 

실행 지저귀 :

 
C:\Users\Vinay\Projects\jror>warble 
mkdir -p tmp/war/WEB-INF/gems/specifications 
cp C:/JRuby/jruby-1.3.1/lib/ruby/gems/1.8/specifications/rails-2.3.3.gemspec tm 
/war/WEB-INF/gems/specifications/rails-2.3.3.gemspec 
mkdir -p tmp/war/WEB-INF/gems/gems 
cp C:/JRuby/jruby-1.3.1/lib/ruby/gems/1.8/specifications/rake-0.8.7.gemspec tmp 
war/WEB-INF/gems/specifications/rake-0.8.7.gemspec 
cp C:/JRuby/jruby-1.3.1/lib/ruby/gems/1.8/specifications/activesupport-2.3.3.ge 
spec tmp/war/WEB-INF/gems/specifications/activesupport-2.3.3.gemspec 
cp C:/JRuby/jruby-1.3.1/lib/ruby/gems/1.8/specifications/activerecord-2.3.3.gem 
pec tmp/war/WEB-INF/gems/specifications/activerecord-2.3.3.gemspec 
cp C:/JRuby/jruby-1.3.1/lib/ruby/gems/1.8/specifications/actionpack-2.3.3.gemsp 
c tmp/war/WEB-INF/gems/specifications/actionpack-2.3.3.gemspec 
cp C:/JRuby/jruby-1.3.1/lib/ruby/gems/1.8/specifications/rack-1.0.0.gemspec tmp 
war/WEB-INF/gems/specifications/rack-1.0.0.gemspec 
cp C:/JRuby/jruby-1.3.1/lib/ruby/gems/1.8/specifications/actionmailer-2.3.3.gem 
pec tmp/war/WEB-INF/gems/specifications/actionmailer-2.3.3.gemspec 
cp C:/JRuby/jruby-1.3.1/lib/ruby/gems/1.8/specifications/activeresource-2.3.3.g 
mspec tmp/war/WEB-INF/gems/specifications/activeresource-2.3.3.gemspec 
mkdir -p tmp/war/WEB-INF/app 
mkdir -p tmp/war/WEB-INF/config 
mkdir -p tmp/war/WEB-INF/lib 
mkdir -p tmp/war/WEB-INF/log 
mkdir -p tmp/war/WEB-INF/vendor 
mkdir -p tmp/war/WEB-INF/tmp 
mkdir -p tmp/war/WEB-INF/app/controllers 
mkdir -p tmp/war/WEB-INF/app/helpers 
mkdir -p tmp/war/WEB-INF/app/models 
mkdir -p tmp/war/WEB-INF/app/views 
cp app/controllers/application_controller.rb tmp/war/WEB-INF/app/controllers/ap 
lication_controller.rb 
cp app/helpers/application_helper.rb tmp/war/WEB-INF/app/helpers/application_he 
per.rb 
mkdir -p tmp/war/WEB-INF/app/views/layouts 
cp config/boot.rb tmp/war/WEB-INF/config/boot.rb 
cp config/database.yml tmp/war/WEB-INF/config/database.yml 
cp config/environment.rb tmp/war/WEB-INF/config/environment.rb 
mkdir -p tmp/war/WEB-INF/config/environments 
mkdir -p tmp/war/WEB-INF/config/initializers 
mkdir -p tmp/war/WEB-INF/config/locales 
cp config/routes.rb tmp/war/WEB-INF/config/routes.rb 
cp config/environments/development.rb tmp/war/WEB-INF/config/environments/devel 
pment.rb 
cp config/environments/production.rb tmp/war/WEB-INF/config/environments/produc 
ion.rb 
cp config/environments/test.rb tmp/war/WEB-INF/config/environments/test.rb 
cp config/initializers/backtrace_silencers.rb tmp/war/WEB-INF/config/initialize 
s/backtrace_silencers.rb 
cp config/initializers/inflections.rb tmp/war/WEB-INF/config/initializers/infle 
tions.rb 
cp config/initializers/mime_types.rb tmp/war/WEB-INF/config/initializers/mime_t 
pes.rb 
cp config/initializers/new_rails_defaults.rb tmp/war/WEB-INF/config/initializer 
/new_rails_defaults.rb 
cp config/initializers/session_store.rb tmp/war/WEB-INF/config/initializers/ses 
ion_store.rb 
cp config/locales/en.yml tmp/war/WEB-INF/config/locales/en.yml 
mkdir -p tmp/war/WEB-INF/lib/tasks 
mkdir -p tmp/war/WEB-INF/vendor/plugins 
mkdir -p tmp/war/WEB-INF/tmp/cache 
mkdir -p tmp/war/WEB-INF/tmp/pids 
mkdir -p tmp/war/WEB-INF/tmp/sessions 
mkdir -p tmp/war/WEB-INF/tmp/sockets 
cp C:/JRuby/jruby-1.3.1/lib/ruby/gems/1.8/gems/warbler-0.9.13/lib/jruby-complet 
-1.3.0RC1.jar tmp/war/WEB-INF/lib/jruby-complete-1.3.0RC1.jar 
cp C:/JRuby/jruby-1.3.1/lib/ruby/gems/1.8/gems/warbler-0.9.13/lib/jruby-complet 
-1.3.0RC1.jar tmp/war/WEB-INF/lib/jruby-complete-1.3.0RC1.jar 
cp C:/JRuby/jruby-1.3.1/lib/ruby/gems/1.8/gems/warbler-0.9.13/lib/jruby-rack-0. 
.4.jar tmp/war/WEB-INF/lib/jruby-rack-0.9.4.jar 
cp C:/JRuby/jruby-1.3.1/lib/ruby/gems/1.8/gems/warbler-0.9.13/lib/jruby-rack-0. 
.4.jar tmp/war/WEB-INF/lib/jruby-rack-0.9.4.jar 
cp public/404.html tmp/war/404.html 
cp public/422.html tmp/war/422.html 
cp public/500.html tmp/war/500.html 
cp public/favicon.ico tmp/war/favicon.ico 
mkdir -p tmp/war/images 
cp public/index.html tmp/war/index.html 
mkdir -p tmp/war/javascripts 
cp public/robots.txt tmp/war/robots.txt 
mkdir -p tmp/war/stylesheets 
cp public/images/rails.png tmp/war/images/rails.png 
cp public/javascripts/application.js tmp/war/javascripts/application.js 
cp public/javascripts/controls.js tmp/war/javascripts/controls.js 
cp public/javascripts/dragdrop.js tmp/war/javascripts/dragdrop.js 
cp public/javascripts/effects.js tmp/war/javascripts/effects.js 
cp public/javascripts/prototype.js tmp/war/javascripts/prototype.js 
mkdir -p tmp/war/WEB-INF 
jar cf jror.war -C tmp/war . 

C:\Users\Vinay\Projects\jror>dir jror.war 
Volume in drive C has no label. 
Volume Serial Number is 0C8D-1418 

Directory of C:\Users\Vinay\Projects\jror 

22/07/2009 15:55  13,180,634 jror.war 
       1 File(s)  13,180,634 bytes 
       0 Dir(s) 7,730,462,720 bytes free 

휴!

+0

을 권장합니다. 전쟁 파일 건 잊어 버릴거야. 글래스 피쉬를 사용하여 jruby를 iis에 연결하는 방법을 게시하면 답변을 수락하고 현상금을드립니다. 죄송합니다. 저는 이것에 대해 너무나 고통 스럽습니다.하지만 저는 사람들이이 지시 사항을 한 곳에서 찾을 수있는 장소를 원합니다. – rip747

+0

이 대답은 그 SO의 현상금 시스템이 실제로 효과가 있다는 것을 보여준다고 생각 하나? 이 정도의 정보를 얻기 위해 누군가에게 돈을 내야 할 것이라고 상상해보십시오. – DanSingerman

+0

사실, Dan, 다른 프로젝트를 위해 비슷한 설정 (글래스 피와 함께하지는 않았지만)을해야만했습니다. 사실, 나는이 대답에 약간의 노력을 기울였습니다. 그러나 그것은 나 자신의 미래의 참고 자료이기도합니다. 저는 현상금이 관여하지 않는 사람들의 블로그에이 정도의 정보를 쉽게 발견했습니다. 그리고 그 현상금이 갖는 것이 좋음은 의심의 여지가 없습니다. 그러나 현상금을 위해 시간을 소비하는 것은 가치가 없습니다. –

5

먼저 Tomcat을 설치해야합니다. IIS와 함께 Tomcat을 설정하는 방법은 how-to을 참조하십시오.

JRuby를 사용하면 WAR 파일을 빌드 할 수 있습니다. 이 파일들을 Tomcat의 webapps 폴더에 놓기 만하면됩니다.

업데이트 : 좋아, IIS와 JRuby를 함께 사용하지 않는 두 가지 기술을 통합해야합니다. 좋은 점은 JRuby가 Java와 Ruby 둘 다이며 두 세계에서 최고를 사용할 수 있다는 것입니다. Ruby는 더 생산적이고 재미있게 코딩 할 수 있지만 Java는 배포에 더 좋습니다 (특히 IIS를 사용해야하는 경우). 그래서 내 조언은 여전히 ​​유지됩니다. war 파일을 만들고 Tomcat을 설치 한 다음 war 파일을 배포하십시오. war 파일을 deploy하는 것은 webapps 폴더에 복사하는 것만 큼 쉽습니다.

  • IIS는 ISAPI 플러그인 (이에 대한 추가 정보가 필요하면 내가 도울 수)
  • 는 WAR 파일을 생성을 사용하여 Tomcat을 통합 (Tomcat을 설치 : 이들은 당신이 따라야 할 단계입니다 당신은 여전히 ​​WAR 파일이 blog spot에서보기를 사용하지 않으려면 넷빈즈 IDE는 톰캣

의 웹 어플리케이션 폴더에) 당신을 위해

  • 복사 WAR 파일을 그렇게 할 수 있습니다. IIS에서 RoR을 실행하는 방법을 설명합니다. 나는 JRuby의 경우 절차가 동일 할 것이라고 생각한다. 어쨌든 WAR 파일을 피하려면 CGI 방식이 유일한 방법입니다.

  • +0

    그래, 중요한 점은 jRuby가 자바 바이트 코드로 컴파일된다는 점이다. 그래서 내가 잘못하지 않는 한, 적절한 jRuby war 파일을 가진 자바 서블릿 컨테이너가 필요하다. –

    +0

    JRuby 배포 용 WAR 파일은 http://rubyonrails.org/deploy가 – kgiannakakis