Forum: Rails France Traduction de Rails on ISS

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Bolo M. (Guest)
on 2006-04-06 00:42
(Received via mailing list)
Salut,

je suis en train de traduire cet article afin que mon hébergeur puisse
m'installer RoR sur mon serveur dédié. j'aimerais avoire une relecture
car
1) Je suis une bosse dans l'administration de serveur
2) Car parfois je dois traduire de travers

http://made-of-stone.blogspot.com/2006/01/rails-on...

Merci

RoR sur IIs

Bon Il vaut faut tout d'abord

   - Ruby
Installer<http://rubyforge.org/frs/download.php/4174/ruby182...,
   (1.8.4)
   - Rails
framework<http://rubyforge.org/frs/download.php/7655/rails-1...
   (1.1)
   - Ruby DBI-ADO interface <http://ruby-dbi.rubyforge.org/> (si vous
   utilisez SQL Server),
   - Ruby for IIS <http://rubyforiis.sosukodo.org/>,
   - FastCGI for IIS <http://www.caraveo.com/fastcgi/>,
   - Ionic ISAPI
Rewriter<http://cheeso.members.winisp.net/dl/IonicIsapiRewr...
   .

Description :
Ruby est un langage de programmation interprété entièrement orienté
objet<http://fr.wikipedia.org/wiki/Programmation_orient%...
.

Ruby on Rails (RoR) est un framework pour écrire des applications web.

L' interface DBI-ADO   est necessaire pour un seul fichier " ADO.rb" qui
permet au "conecteur SQL Server" de se connecter à MS-SQL.

Ruby for IIS  est de créer un processus d'installation pour faciliter
les
applications web sur les serveurs IIS

FastCGI garde un certain nombre de processus de Ruby/Rails fonctionner
dans
IIS. En gros quand une demande viens du client vous n'avez pas besoin de
commencer un nouveau Ruby processus chaque fois. Au lieu de cela
FastCGI commence
des processus N et si tous sont occupés il en recommence un autre,
jusqu'à
un maximum des processus M et conduit les demandes vers n'importe quel
processus libre.

Lonic Rewriter prends un url ' Rails-friendly' (controller/action/id) et
le
récris  dans une forme compréhensible pour IIS. IIS ensuite dispaches ce
nouvel URL à FastCGI qui  le passe dans ruby

Ok, Let' Go !

Vous avez installé Rails (dans C:\Ruby) et copié les fichiers de
l''application (dans D:\MyApp). Vous avez ajouté le framework Rails
dans le
dossier 'vendor' de l'application (D:\MyApp\vendor)
Nous faisons ceci car nous allons altérés certains fichiers du Framework
et
nous voulons garder nos changements  (dans D:\MyApp\vendor) séparé de
l'installation de RoR (dans C:\ruby\lib\ruby\gems\1.8\gems).
Ensuite vous devez alors extraire ADO.rb à partir du dossier de DBI et
le
placer dans C:\ruby\lib\ruby\site_ruby\1.8\DBD -
Vous devrais créer un dossier ADO et placer le fichier dans celui ci.


Apres, modifier le fichier de configuration de votre application et
ajouter
cette ligne

ActionController::CgiRequest::DEFAULT_SESSION_OPTIONS[:tmpdir] =
'D:\\Temp\\

Vous devrez créer un dossier Temp dans D : ou votre application
silencieusement ne fonctionnera pas. Ce point doit forcer Rubis  de
placer
ses fichiers sessions dans dossier connnu (?).

Maintenant lancer votre applications sous WEBrick. C'est essentiel. Si
elle
fonctionne pas  ici , elle ne  ne fonctionnera pas sous IIS.

Copier  vos fichiers ISAPI dans un endroit sûr  (J'ai tendance a les
mettre
dans C:\InetPub ) ils sont  associés à IIS mais non disponible au
public.
Donc copier vos fichiers  FastCGI.DLL , IsapiRewrite4.DLL  et
IsapiRewrite4.INI n'importe où. Faite attention a mettre le Ionic
Rewriter
DLL  et fichier INI dans le même dossier.

Click-Droit sur votre "Default Web S." et sélectionner "Properties".
Selectionner les filtres ISAPI. Cliquer sur 'Add' et entrer  un nom du
filter de "Rewriter" et sélectionner la DLL IsapiRewrite4.

Ensuite, aller sur l'onglet "Home Directory". Assurez-vous que "a
directory
stored on this computer" est sélectioné et  mettez 'D:\MyApp\Public'
comme
chemin local. Mettez le  nom de votre application dans "Application
Name"
(Si c'est grisé ensuite cliquer sur "Create" pour installer site comme
une
application) et assurez-vous que des "Scripts and Executables" est
sélectionné pour "execute permissions".

 Après, cliquer sur  "configuration". Sous "Mapping" cliquer sur "Add"
et
séléctionné FastCGI.DLL en tant qu'exécutable, .fcgi est une extension
(si
vous allez avoir plusieurs applications Rails sur un seul serveur  que
vous
devez changer cette extension sur une base Rail-application-spécifique -
par
exemple le myapp1, le myapp2 etc..),avec "All Verbs", "Script Engine" et
"Check that file exists" tous sélectionés

Si vous êtes sur le win 2003, il y a une étape suplémentaire Vous devez
permettre l'accès d'IIS aux executables que vous allé utillisés. Créez
une
nouvelle extension  Web  Server dans le panneau de configuration de IIS,
appelez le "MyApp". Ajoutez FastCGI.DLL, IsapiRewriter4.DLL et RubyW.exe
à
cette extention et assurez-vous qu'elle est autorisés.

Bon On a fait quoi jusqu'ici

   1. On a installé Rails et notre application et nous sommes assurés
que
   tout fonctionne sous WEBrick
   2.  Nous avons dit  à IIS que le site Web par  défaut pour ce serveur
   est le dossier 'public' de notre application.
   3. Nous avons à dit IIS que n'importe quelle demande au site Web par
   défaut devrait être alimentée par le Rewriter ionique
   4. Nous avons dit à IIS que n'importe quelle demande d'un fichier
   .fcgi devrait être alimentée par FastCGI

Nous n'avons pas encoredis à Ionic ou FastCGI comment se comporter
En premier Ironic. Ã?ditez IsapiRewrite4.INI - supprimer le contenu du
fichier et remplacer par

# Ruby on Rails
IterationLimit 0
RewriteRule ^(/[^.]+)$ /dispatch.fcgi?$1

L'étape suivante est de configurer FastCGI. Lancer RegEdit et ouvrez
la clef locale Machine/Software.
Créez une clef (dossier) appelé "FastCGI".
En dessous  d'ici vous crée une nouvel clef "dossier" appellée ".fcgi".
Quand FastCGI est appelé par un fichier d'extension .fcgi il
emploiera les propriétées de cette clef.
C'est pourquoi, quand nous avons plusieurs applications
multiples sur un serveur, nous devons changer les extensions des
fichiers
(.myapp1, .myapp2 comme détaillé ci-dessus - de même nous
devons renommer dispatch.fcgi en  dispatch.myapp1/dispatch.myapp2 pour
chaque application respective).
Les propriétés basiques de FastCGI dont nous avons besoins :


   - AppPath - placez ceci dans C:\ruby\bin\rubyw.exe
   - Args - placez ceci dans D:\MyApp\public\dispatch.fcgi
   - BindPath - placez ceci dans MyAppRailsCGI


.AppPath dis  à FastCGI que nous voulons que Ruby exécute notre script,
passant the Args comme un point d'entrée de l'application,
utilisant le  Named Pipe "MyAppRailsCGI" pour communiquer.

Maintenant on redémarre le serveur IIS. Lancer votre navigateur et aller
ici
(http://myserver/controller/action/id ). Vous devez surement optenir
"recognition failed for dispatch.fcgi".
Donc aller sur
D:\MyApp\vendor\actionpack-version\lib\action_controller\request.rb (
C'est
le fichier Ruby que  ActionPack utilises pour suivre une demande URL)

Sous Apache et WEBrick, il renvoie la variable d'environnement
"REQUEST_URI", et s'il ne peut pas atteindre, il manipule 'PATH_INFO' et
'SCRIPT_NAME' pour obtenir le même résultat.
 Sous IIS cela ne fonctionne pas (la méthode attend est un "SCRIPT_NAME"
du
"/dispatch.fcgi" (est qui ce que nous avons) mais un "PATH_INFO" du
"/dispatch.fcgi/controller/action".
En d'autres termes, au lieu d'extraire le URL original et de le
transformer
en une "query string", il s'attend à ce que le URL original soit cloué
sur
la fin du script d'expéditeur. Le problème avec ceci est que si le URL
ressemble à ca, alors le URL ne finit plus avec le .fcgi ainsi IIS ne
sait
pas demander  à FastCGI pour traiter la demande. Notre PATH_INFO
ressemble
plus a ca "/dispatch.fcgi?/controller/action" - notez tous les points
d'interrogation dansl' URL. Cependant, si nous modifions la méthode de
request_uri dans request.rb pour ressembler ca :

 # Returns the request URI correctly, taking into account the
idiosyncracies
    # of the various servers.
    def request_uri
      if uri = env['REQUEST_URI']
        (%r{^\w+\://[^/]+(/.*|$)$} =~ uri) ? $1 : uri # Remove domain,
which webrick puts into the request_uri.
      else  # REQUEST_URI is blank under IIS - get this from PATH_INFO
and SCRIPT_NAME
        script_filename = env['SCRIPT_NAME'].to_s#.match(%r{[^/]+$})
        uri = env['PATH_INFO']
        uri = uri.sub("#{script_filename}", "") unless
script_filename.nil?
        uri << env['QUERY_STRING'] unless env['QUERY_STRING'].nil?
        uri
      end
    end

Je suis 99% sûr que ceci éditent est ce qui fait la chute des
web_services.
Cependant, pour les sites traditionnels (n'utilisant pas de query
string)
sont conduits correctement.

Relancer IIS et essayer de vous connectez une nouvel fois. Apres un long
moment (le temps que FastCGI appelle Ruby pour la première fois). Vous
devriez voir votre application. Bravo !! Allez faire une pause

Ooups - J'ai failli oublié. Creer un fichier batch
(D:\MyApp\Scripts\cleanup.cmd) qui contient cette ligne
D:\Temp\Ruby_Sess*.*.
Ensuite ajouter un processus de tache qui lance fichier batch chaque
nuit .
Ceci nettoye les fichiers de sessions de Ruby et previens la création
d'un
trop grand nombre.
Idéalement, vous  devriez examiné le dernier-changer-temps et
supprimeriez
seulement ceux qui n'avaient pas été touchés dans 20 minutes, quel que
soit,
mais, pour mon application au moins, se débaraisser de toutes les
sessions
d'hier est assez bon. Votre kilomètrage peut changer.
Mathieu C. (Guest)
on 2006-04-06 18:35
(Received via mailing list)
> je suis en train de traduire cet article afin que mon hébergeur puisse
> m'installer RoR sur mon serveur dédié. j'aimerais avoire une relecture car


> http://made-of-stone.blogspot.com/2006/01/rails-on...

C'est une bonne initiative de ta part.

Si tu veux fournir une traduction ok, mais pour avoir pratiqué un peu
IIS il manque quelques informations fondamentales pour que ça marche
complètement. Un post récent de Adam Carheden en parle sur la ML
Rails.

Il faut modifier la fonction request_uri en partant du commentaire de
Chris Lang (en bas de ton lien) sinon les paramètres additionnels de
l'url ne marchent pas (par exemple app/controller/action?page=4)

Il y a quelques droits ou autorisations à placer en s'inspirant de :

http://www.beamartyr.net/articles/iisperl.html

Et lire aussi

http://phplens.com/phpeverywhere/fastcgi-php
Bolo M. (Guest)
on 2006-04-07 00:38
(Received via mailing list)
Si tu veux fournir une traduction ok, mais pour avoir pratiqué un peu

> IIS il manque quelques informations fondamentales pour que ça marche
> complètement.


C'est pas évident de traduire  ce tuto quand on teste pas la manip en
live
:(

Un post récent de Adam Carheden en parle sur la ML
> Rails


C'est ca ?

Hi -
Here is a solution I hacked together quickly to restore query string
functionality:

Replace request_uri with:
def request_uri
if uri = env['REQUEST_URI']
(%r{^\w+\://[^/]+(/.*|$)$} =~ uri) ? $1 : uri # Remove domain, which
webrick
puts into the request_uri.
else # REQUEST_URI is blank under IIS - get this from PATH_INFO and
SCRIPT_NAME
script_filename = env['SCRIPT_NAME'].to_s#.match(%r{[^/]+$})
uri = env['PATH_INFO']

uri = uri.sub("#{script_filename}", "") unless script_filename.nil?

parts = env['QUERY_STRING'].split("*")
if parts.length > 1
env['QUERY_STRING'] = parts[1]
uri = parts[0]
else
uri << env['QUERY_STRING'] unless env['QUERY_STRING'].nil?
end
uri
end
end

THEN modify your rewrite rule too look like this:
# Ruby on Rails
IterationLimit 0
RewriteRule ^(/[^.]*)\?([^.]*)$ /dispatch.fcgi?$1*$2
RewriteRule ^(/[^.]+)$ /dispatch.fcgi?$1

This will cause any urls with query strings to have the '?' replaced
with an
'*'. It's very hackish, but it seems to work well.
8:24 AM, March 09,
2006<http://made-of-stone.blogspot.com/2006/01/rails-on...


Il y a quelques droits ou autorisations à placer en s'inspirant de :
>
> http://www.beamartyr.net/articles/iisperl.html


Ici le problème est spécifique a IIS 6 ?
Comme franchement je suis pas une lumière dans la configuration d'un
serveur. Il faudrais arriver a condenser toutes les ressources et faire
un
tuto et le tester.
Je vais essayer de tt lire et de comprendre

Bolo
Bolo M. (Guest)
on 2006-04-07 12:19
(Received via mailing list)
Alors j'ai regardé ca
http://www.beamartyr.net/articles/iisperl.html

J'ai essayé de traduire ces idées. Donc en gros il faudrais rajouter
cette
partie ou ? dans le tuto ?

Le 06/04/06, Bolo M. <removed_email_address@domain.invalid> a écrit :
Mathieu C. (Guest)
on 2006-04-07 16:55
(Received via mailing list)
On 4/6/06, Bolo M. <removed_email_address@domain.invalid> wrote:
> Alors j'ai regardé ca
>
> http://www.beamartyr.net/articles/iisperl.html
>
> J'ai essayé de traduire ces idées. Donc en gros il faudrais rajouter cette
> partie ou ? dans le tuto ?
>

Oui, juste ça après, ça pourra éviter bien des déconvenues à ceux qui
tentent une install sous IIS.


"To solve it, go to the local security policy. Under "User Rights
Assignment", find "Replace a process-level token" and "Adjust memory
Quotas for a Process" and add your user to both. On the file system,
make sure that your user has read permissions (and execute on [ruby])
which it should by default unless you did weird permissions"
Bolo M. (Guest)
on 2006-04-07 18:51
(Received via mailing list)
Je vais récrire le tuto donc j'aimerais que tu me confirme la trame.


1.Installer RoR et Ruby. Peut ont utiliser ceci ?
http://rubyforge.org/frs/download.php/4174/ruby182-15.exe

2. Installation de Fast CGI
3. Instalation de l'interface ADO
4. Installer Ionic ISAPI Rewriter.

A quoi sert ca ?
http://rubyforiis.sosukodo.org/

Bolo
Le 07/04/06, Mathieu C.<removed_email_address@domain.invalid> a écrit :
Bolo M. (Guest)
on 2006-04-08 18:18
(Received via mailing list)
Donc je suis en train de récrire le tuto:
mais j'avous que cette partie m'interpelle

So, you've installed Rails (into C:\Ruby) and copied your application
files over (into D:\MyApp). You've added the Rails framework into your
application's vendor folder (D:\MyApp\vendor) - this is because we
will be altering some of the framework files so we want to keep our
changes (in D:\MyApp\vendor) separate from the main Rails installation
(in C:\ruby\lib\ruby\gems\1.8\gems). You then need to extract ADO.rb
from the DBI file and place it in C:\ruby\lib\ruby\site_ruby\1.8\DBD -
you will need to create an ADO folder and place the file into there.

Donc pour chaque nouvelle application, je devrais copier le framewor
RoR dans le dossier Vendor ?

Bolo
guillaume garcera (Guest)
on 2006-04-08 18:48
(Received via mailing list)
Le 8 avr. 06 à 16:16, Bolo M. a écrit :

> you will need to create an ADO folder and place the file into there.
>
> Donc pour chaque nouvelle application, je devrais copier le framewor
> RoR dans le dossier Vendor ?

C'est conseillé pour plusieurs raisons :
	* dans le cas expliqué par l'auteur, il va modifer certaine partie
du framework(Rails) et il veut que ces modifications soit local a
l'appli.
	* en cas de déploiement sur un serveur partagé , ton appli marche
toujours pour la version de rails avec laquelle tu l'a developé et
testé meme en cas de monté de version chez ton héberger. C'est la
principal raison. Les récent problème de compatibilité de Typo avec
la 1.1 en sont un bon exemple.

Pour copier le framework dans vendor utilise la commande:
rake rails:freeze:gems
Bolo M. (Guest)
on 2006-04-08 21:28
(Received via mailing list)
D'accord.

Le 08/04/06, guillaume garcera <removed_email_address@domain.invalid> a écrit :
>
>
> Le 8 avr. 06 à 16:16, Bolo M. a écrit :
> D'accord je comprends mieux,
>
> You then need to extract ADO.rb
> from the DBI file and place it in C:\ruby\lib\ruby\site_ruby\1.8\DBD -
> you will need to create an ADO folder and place the file into there.
>
>
Je dois extraire ado.rb . Il se trouve dans le dossier DBI ? et le place
dansuby\lib\ruby\site_ruby\1.8\DBD. Mais je dois également créer un
dossier
ADO et placer le fichier dedans ? Ce fichier Ado il doit être créer ou ?

Bolo
Bolo M. (Guest)
on 2006-04-09 14:27
(Received via mailing list)
voila j'ai essayé de regrouper toutes les informations sur l'installion
de
RoR sur IIS. Si qqn a le temps de tout relire et de le tester la
procédure
ca serait cool.
si qqn peut m'envoyer des appercu d'écran (panneau de configuration par
exemple) je les rajouterai dans le doc


Bolo
philippe lachaise (Guest)
on 2006-04-10 03:57
(Received via mailing list)
Une petite passe pour le Français (faute de temps pous valider
techniquement).
Quelques coquilles corrigées + harmonisation 2eme personne impératif
(e.g.
executer/executez)

Philippe.
Bolo M. (Guest)
on 2006-04-10 05:49
(Received via mailing list)
Merci bc philipe

Bolo

Le 09/04/06, philippe lachaise <removed_email_address@domain.invalid> a écrit :
Guillaume "Zifro" DESRAT (Guest)
on 2006-04-10 09:37
(Received via mailing list)
<humour du Lundi matin>

  Je regarde la conversation depuis le début, mais pourquoi voulez-vous
traduire
Rails sur ISS ? Avez-vous l'accord des agences spatiales des pays
participants ?
Quel module de la station va utiliser Rails ?

</humour du Lundi matin>


--
Guillaume "Zifro" DESRAT
http://.../
-- Aah Jeez...I Wish You Could See This....Lights Coming Up.....I've
Never Seen A Painting That Captures The Beauty Of The Ocean.....I'm
Gonna Make You Rich, Bud Fox....Rich Enough You Can Afford A Girl Like
Darien....This Is Your Wake-Up Call, Pall....Go To Work.....DROP IT!!!
(3 Steps Ahead - Drop It)
Bolo M. (Guest)
on 2006-04-10 15:55
(Received via mailing list)
> <humour du Lundi matin>
>
>   Je regarde la conversation depuis le début, mais pourquoi voulez-vous traduire
> Rails sur ISS ? Avez-vous l'accord des agences spatiales des pays participants ?
> Quel module de la station va utiliser Rails ?
>
> </humour du Lundi matin>
oups :D, j'avais même pas vu. tu as des yeux de lynx le lundi ;)
Guillaume "Zifro" DESRAT (Guest)
on 2006-04-10 16:27
(Received via mailing list)
Je l'avais vu depuis le premier message, mais je pensais que vous le
corrigeriez :)



--
Guillaume "Zifro" DESRAT
http://.../
-- Aah Jeez...I Wish You Could See This....Lights Coming Up.....I've
Never Seen A Painting That Captures The Beauty Of The Ocean.....I'm
Gonna Make You Rich, Bud Fox....Rich Enough You Can Afford A Girl Like
Darien....This Is Your Wake-Up Call, Pall....Go To Work.....DROP IT!!!
(3 Steps Ahead - Drop It)
This topic is locked and can not be replied to.