Kruse-Net.dk

Det man blogger er man selv...

Ruby on Rails / Apache 2.2 / Windows

Hvis du har prøvet at få disse til at spille pænt sammen, så ved du enten at der langt fra er tale om Den Hellige Treenighed, eller også er du bare heldigere end jeg har været.

For mig er tværsummen af ovenstående = 666.

Hvis man læser om hvordan man får Ruby on Rails op at køre på diverse web servere ser det meget let ud. Der er ingen ende på antallet af fine opskrifter der i udførlige detaljer beskriver hvert eneste skridt på vejen, og tilmed lovpriser resultatet. Efterhånden som man prøver opskrifterne ryger de dog alle i en af disse bunker:

  • Mangler en eller flere stumper, som ikke længere er til at opdrive
  • Virker ikke på Apache 2.2
  • Virker ikke på Windows
  • Er uhyggeligt kompliceret

Frustrationen har forståeligt nok været stor hos undertegnede den seneste tid. Men når jeg nu tog mig sammen til at skrive om emnet var det ikke for at bidrage med endnu en “det virker ikke!” beretning (dem er der nemlig også rigtigt mange af), men derimod for at sige HA! Nu virker det!

Nøglen viste sig at være en rigtigt fin pakke på sourceforge fra Gael Pourriel. Han kalder den “ Rails Prod Machine for Win32“. Pakken installerer Apache 2.2, Ruby og Rails, og alle de stumper der binder dem sammen, og hvis du ikke allerede har en Apache 2.2 oppe at køre som du gerne vil bruge, så kan du sikkert bare installere pakken, starte serveren og være kørende!

Hvis du allerede har en Apache 2.2, så kommer opskriften her!

Ruby

Hent og kør den anbefalede Windows installer fra http://rubyonrails.org/down. I skrivende stund er det 1.8.5-24.

Rails

Start “RubyGems Package Manager” fra ikonet i start menuen og kør kommandoen:

::HLIGHTBLOCK1::

SCGI for Rails

Download scgi_rails-0.4.3.gem fra www.zedshaw.com, og gem den i din ruby installations-mappe (typisk C:\ruby).

Stadigvæk i RubyGems prompten kører du følgende kommandoer, én ad gangen:

::HLIGHTBLOCK2::

Din applikation

  1. Placér en kopi af din applikation i en mappe på serveren, f.eks. C:\myrailsapp.

  2. Slet filen C:\myrailsapp\public.htaccess (den er kun til CGI eller FastCGI brug, ikke SimpleCGI).

  3. Åbn en kommando-prompt i mappen C:\myrailsapp og skriv kommandoen

    C:\myrailsapp> scgi_ctrl config -S

    Du bliver bedt om et kodeord. Vælg et der er rimeligt sikkert. Det styrer adgangen til applikationens SCGI opsætning.

  4. Start SCGI serveren på port 9999 med kommandoen

    C:\myrailsapp> scgi_service

    Kontroller evt. i C:\myrailsapp\log\scgi.log at applikationen starter korrekt. scgi_service kan også installeres som service med f.eks. FireDaemon.

Apache

  1. Download mod_scgi.so herfra. Denne udgave er kompileret til Apache 2.2.x og kommer fra Rails Prod Machine (thank you, Gael Pourriel).

  2. Placér mod_scgi.so i Apache’s modules mappe.

  3. Tilføj linien

    LoadModule scgi_module modules/mod_scgi.so

    til httpd.conf, umiddelbart efter LoadModule rewrite_module ... (sidstnævnte skal også være aktiv, dvs. uden en # foran).

  4. Tilføj linien

    SCGIMount / 127.0.0.1:9999

    det sted hvor du ønsker at installere din Rails app, eller se her for en mere detaljeret Apache opsætning.

  5. Genstart Apache!

Et voila. Ruby on Rails oppe at køre på en Windows Apache 2.2.

2 Responses på “Ruby on Rails / Apache 2.2 / Windows”

  1. gravatar 1 Hans
    26. september 2007 kl. 09:52

    Hi. I have also tried to use the Rails-prod-win to setup a production server on Windows. But, I get the same problem with all of the alternatives (FastCGI, SimpleCGI and Webrick). I get the application up and running om 127.0.0.1 but pictures and links doesn’t work. Did you get this problem as well? Do you have any solution for it? I guess it has something to do with reverse proxy and URLs that the Rails-prod-win doesn’t fix automatic…? Any help would be appreciated. Thanks in advance.

  2. gravatar 2 Jakob Kruse
    26. september 2007 kl. 20:25

    Hans,

    I’m afraid I haven’t tried actually installing and running rails-prod-win (which the article shows, but I don’t know if you can read it, since it’s in Danish). But basically, if the Apache .conf file contains something like “SCGIMount / 127.0.0.1:9999″ (assuming SimpleCGI) then proxy’ing should not be an issue. What are the href’s in your generated HTML that don’t work?

Skriv en kommentar