Traduction de Rails on ISS


#1

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

Merci

RoR sur IIs

Bon Il vaut faut tout d’abord

Description :
Ruby est un langage de programmation interprété entièrement orienté
objethttp://fr.wikipedia.org/wiki/Programmation_orientée_objet
.

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.


#2

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-iis-revisited.html

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


#3

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
:frowning:

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,
2006http://made-of-stone.blogspot.com/2006/01/rails-on-iis-revisited.html#c114189264069677886

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


#4

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 :


#5

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”


#6

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

  1. Installation de Fast CGI
  2. Instalation de l’interface ADO
  3. 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 :


#7

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


#8

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


#9

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


#10

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


#11

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.


#12

Merci bc philipe

Bolo

Le 09/04/06, philippe lachaise removed_email_address@domain.invalid a écrit :


#13

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)


#14

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 :wink:


#15

Je l’avais vu depuis le premier message, mais je pensais que vous le
corrigeriez :slight_smile:


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)