![]() |
|
|||||||
![]() |
|
|
|
Outils de la discussion |
|
#1
|
||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||
|
/!\ Version pour la Debian Lenny 5.0 ici : http://www.admincafe.re/forums/showthread.php?t=250 /!\
Suite de l'article http://www.admincafe.re/redmine-apac...ch/2008/08/20/ Voici un petit tuto sur la mise en place du gestionnaire de projets Redmine écrit en Rails et servi à travers Apache, le tout sur une Debian 4.0 Etch (stable). Je suppose que vous connaissez un minimum le fonctionnement de la Debian, de Apache et de Bind. Présentation Redmine est un gestionnaire de projets très "web 2.0" (design courbes épurées, ajax, interactions). Il permet donc, comme sa description l'indique, de faire du suivi de projets (roadmap, gantt, assistance) mais pas seulement. On peut le faire interagir avec un contrôleur de versions (sont supportés actuellement subversion, darcs, mercurial, cvs, bazaar, git et filesystem) et, par exemple, lier automatiquement un ticket d'assistance avec un commit. Il inclut aussi un système de forums et de wiki, spécifiques à chaque projets. Redmine est écrit en Ruby et utilise le framework Ruby On Rails (RoR ou Rails pour les intimes). Seulement, pour faire tourner ce genre d'application, il faut utiliser un serveur spécifique capable d'interpreter le Rails (webrick ou mongrel pour les plus connus). Le problème c'est que bien souvent on a un Apache qui tourne derrière avec généralement du PHP et tout le toutim. L'objectif est donc de faire marcher Redmine avec Apache, histoire d'avoir une plate-forme homogène, et que l'on ait pas besoin de jongler avec les ports (par défaut, un serveur Rails écoute le port 3000 ou 8000). Ce tutorial est très spécifique à la Debian 4.0 Etch, mais le principe reste le même pour les autres distro. Note : je n'aborde pas ici la sécurisation du serveur, il est bien évident qu'il ne faudra pas laisser par exemple phpmyadmin libre d'accès comme ça. I. Installation du serveur LAMP Si vous avez déjà un LAMP qui tourne, vous pouvez passer directement à l'étape suivante. Pour installer un LAMP, debian-way : Voilà, finit. On effectue une première sécurisation du serveur MySQL avec notamment la création du mot de passe root : laissez les réponses par défaut, sauf peut-être pour "Allow root connect remotly?" si vous voulez tout gérer depuis phpmyadmin au lieu de la ligne de commande. Un petit tweak au passage pour MySQL : marre d'avoir le charset par défaut "latin1_swedish_ci" ? Simple : Puis ajoutez dans la section [mysqld] les lignes suivantes : (changez avec le charset voulu si vous n'utilisez pas l'utf-8) N'oubliez pas de redémarrer MySQL : On teste Apache : http://www.votredomaine.tld devrait vous renvoyer vers la page par défaut de Apache ("It works!"). On teste PHP et MySQL : Citation:
Vous devriez avoir une page de login. Testez avec le compte root (ou un autre si vous en avez créé un). Si tout marche que c'est que PHP et MySQL sont bien installés. On va maintenant créé un utilisateur de base qui accueillera Redmine plus tard : -d /home/cequevousvoulez indique la home du user (elle peut avoir un nom différent du login) -g 33 force le user à appartenir au groupe qui a la GID 33, c'est à dire Apache (indispensable pour les permissions sur le serveur web) -m dit qu'il faut créer la home -s /bin/bash indique le shell du user, en l'occurrence la ça sera bash login_voulu c'est le login (ou le nom) de l'utilisateur Ensuite il faut lui créer un mot de passe : Vérifiez si tout est ok : La home est bien créée avec les bons droits, impeccable. II. Installation de Rails Cette fois on ne pourra pas tout faire à la manière Debian. En effet du-fait de sa version (4.0) qui est donc une version stable, certains paquets seront trop vieux. On va donc faire un petit mix de backports et de compilations à la main. Tout d'abord on ajoute les backports au gestionnaire de paquets : Rajoutez la ligne : Puis faites une première update de la liste des paquets : Vous aurez une erreur comme quoi certains paquets ont une origine non certifiés, on rajoute donc la clef d'authentification gpg des backports : puis on relance l'update : Tout est ok maintenant. On va pouvoir installer ruby : Il va falloir maintenant installer rubygems, le gestionnaire de paquets interne à ruby. Le problème c'est que la version de Etch est trop vieille et que la version des backports est buggy (1.1.1) ! En effet, les branches 1.0.x et 1.1.x de rubygems ont un gros problème de memory leak (l'appli prend 100% du temps cpu, sature la ram et le swap..le serveur finit par planter). Le bug semble aléatoire mais il arrive à 90%. Je l'ai eu sur 3 serveurs différents. On va donc prendre la dernière version (1.3.1) directement sur le dépôt officiel : On va aussi créer un lien symbolique pour éviter les erreurs de certains PATH codés en dur : Et puis on va mettre gem à jour, au cas où : Résumé : on a actuellement ruby 1.8.7 grâce aux backports et rubygems 1.3.1 grâce aux sources. On va maintenant pouvoir installer Rails mais il y a plusieurs versions. Le choix va être vite-fait car il dépend de Redmine : j'ai décidé d'utiliser la version trunk de Redmine (qui est aussi stable que la version stable, ça tombe bien) qui n'est compatible qu'avec Rails 2.1.2 : Et voilà ! Il nous reste deux petites choses à installer. D'abord le link ruby->mysql : Ensuite il nous faut le link ruby->RMagick pour que Redmine puisse générer les graphiques de Gantt, mais pour l'installer nous allons devoir encore jongler un peu. Tout d'abord nous avons besoin de la librairie rmagick, seulement la version de Etch est trop vielle donc on pioche dans les backports : Pour fonctionner, RMagick a besoin de imagemagick >= 6.3.x, cette version n'existe ni dans Etch ni dans les backports donc compilation à la main : (c'est assez long cette fois) S'il n'y a aucune erreur (pas de raison qu'il y en ai :p), nous pouvons maintenant installer le link : Voilà ! Rails est bien installé et correctement configurer, on va passer à l'étape suivante. III. Installation de Redmine Comme je l'ai dis plus haut, nous allons utiliser la version trunk de Redmine. Pour cela nous avons besoin de Subversion : Choisissez l'endroit où vous voulez installer Redmine, par exemple dans la home de l'utilisateur créé tout à l'heure ! On change d'utilisateur pour éviter de foutre la merde dans les permissions : Vous voilà identifié en tant que login_voulu, on peut maintenant récupérer Redmine : On va configurer la connexion à la base de données (n'oubliez donc pas de créer un utilisateur et une base pour Redmine) : Renseignez les champs de la section PRODUCTION. Ensuite nous allons initialiser la base : Il se peut que vous ayez une erreur du type "no such file to load — openssl", installez le paquet suivant (depuis les backports) : Tout est ok normalement. On va maintenant remplir la base avec les données par défaut : Voilà, Redmine est installé. Dernière petite chose, il faut créer le répertoire qui va accueillir les process du serveur ruby : Premier test pour voir si tout marche bien. Assurez-vous d'être dans le répertoire racine de redmine (ici c'est donc "redmine") puis : Ceci lance le serveur intégré Webrick sur le port 3000. Direction votre site pour tester : http://www.votredomaine.tld:3000 Vous devriez normalement arriver sur la page d'accueil de Redmine. Si ce n'est pas le cas vérifiez que vous avez bien suivi toutes les étapes. Si vous avez une erreur du type "500 internal error" il y a 95% de chance que ça vienne des permissions qui ont sautées. Vérifiez que toute l'arborescence appartienne bien à login_voulu:www-data. Si ce n'est pas le cas un petit : devrait tout remettre en ordre. Redmine marche c'est bien. Par contre il marche indépendamment de Apache pour l'instant. Étape suivante donc :p IV. Servir du rails via Apache Nous allons maintenant installer le vrai serveur pour Rails (Webrick sert surtout au debug, à ne surtout pas mettre en prod). Pour cela nous allons installer Mongrel : Ensuite nous allons créer le fichier de configuration qui dira à Mongrel quel site il faut faire tourner : -e production indique que le serveur doit tourner en mode production -p 8000 lance Mongrel sur le port 8000 -N 3 indique qu'il y aura 3 instances du serveur -c /home/... le chemin vers la racine de redmine -C /home/... le chemin vers où le fichier de configuration va être créé -a dit à Mongrel d'écouter le localhost Vérifiez que le fichier de config a bien été créé et est bien rempli : devrait afficher un truc du genre : Bien. Maintenant il faut indiquer à Mongrel où trouver ce fichier de config. Par défaut il va chercher dans /etc/mongrel_cluster. Ce répertoire n'existe pas nous allons donc le créer : Ensuite, plutôt que de copier le fichier de conf créé juste avant, on va y faire un lien symbolique (pratique si on lance plusieurs Redmine): On installe le script qui va permet de gérer Mongrel (et de le démarrer automatiquement au boot notamment) : On le modifie par rapport à nos besoins (voir les commentaires ajoutés) : Citation:
Une fois le fichier modifié, on le rend exécutable : Et on l'injecte dans le système : Voilà vous pouvez désormais controler le serveur directement avec les commandes : D'ailleurs, lancez le serveur : Maintenant on s'occupe de Apache. On active les modules nécessaires : Puis on modifie le fichier : Pour qu'il ressemble à ceci : (on modifie en-fait les directives Order et Allow from). On créé ensuite un VHOST (par exemple) : Citation:
La section Proxy balancer indique à Apache de balancer toutes les requêtes venant de redmine.votredomaine.tld:80 sur localhost:8000 qui est justement l'endroit où Mongrel écoute. Les directives Deflate disent qu'il faut utiliser (et compresser) Apache pour servir les fichiers de type html/css au lieu de Mongrel (le traitement est ainsi beaucoup plus rapide). On active ce vhost : Et on relance Apache pour qu'il prenne tout en compte : Et on test l'url http://redmine.votredomaine.tld Vous devriez voir la page d'accueil de Redmine, bravo ! Mises à jour 30/01/2009 - modification du tuto pour la compatibilité avec la version 0.8 trunk de Redmine :
__________________
Administrateur
|
| Liens Sponsorisés |
|
#2
|
||||
|
||||
|
tuto super complet, bravo !
|
|
#3
|
||||
|
||||
|
nice tuto :O
par contre tu devrais découper en plusieurs posts, un pour chaque partie, pour pouvoir faire des liens séparés dans le premier post, pour accéder plus vite à certaines parties :) |
|
#4
|
||||
|
||||
|
Ouai c'est vrai j'aurais du reserver 2 ou 3 posts à la suite ^^
Ca sera pour la prochaine fois :p
__________________
Administrateur
|
|
#5
|
|||
|
|||
|
Bonjour,
Merci pour ce tuto très détaillé. Tout marche comme sur des roulettes jusqu'à la ligne: $ rake db:migrate RAILS_ENV="production" Là, je reçois: Aucun fichier ou répertoire de ce type - /tmp/mysql.sock J'avais regardé rapidement comment marchait RoR mais n'ai jamais fait plus que des petits tests. Savez-vous d'où peux venir l'erreur? Merci d'avance. Farf |
|
#6
|
|||
|
|||
|
ok, il faut rajouter
Code:
socket: /var/run/mysql/mysql.sock Code:
production: adapter: mysql Code:
mysql_config --socket Dernière modification par farf ; 22/08/2008 à 22h35 |
|
#7
|
||||
|
||||
|
wow désolé je n'avais pas vu les nouveaux messages ici !
Alors tu as trouvé tout seul c'est bien :-) Comme je le disais ce tutorial est basé pil poil sur la debian etch, donc il se peut que sur une version différente (ou une autre distrib), il y ait des problèmes de paths/symlink :) D'ailleurs j'avais rencontré ce même problème sur une Ubuntu/Ubuntu-server. Si tu as d'autres questions n'hésites pas !
__________________
Administrateur
|
|
#8
|
|||
|
|||
|
Rebonjour,
Hum, j'ai un problème sur SVN, je ne sais pas si c'est le bon endroit mais comme c'est pour utiliser Redmine et mettre en place ce tut :) En gros, j'ai installé svn, mis en place un dépot, mis les droits pour www-data, créer un fichier de passwd, créer le fichier dav_svn.conf et je tombe sur une erreur "You don't have permission to access /svn on this server." à l'adresse ip/svn. Autre problème plus important: svn co /var/svn/MonDepot ne fonctionne pas sur le serveur, cela renvoit: "svn: Erreur du client lors de l'analyse des arguments" Avez-vous une idée d'où peut venir le problème? (ou de quoi avez-vous besoin comme log pour savoir d'ou cela vient?) P.S.: Il n'y a rien sur le serveur, je peux donc donner un accès si vous le souhaitez. |
|
#9
|
||||
|
||||
|
Tu vas donc utiliser un SVN multi-dépôts,
Dans la configuration de l'host dav_svn de Apache, as-tu bien utilisé la directive SVNParentPath au lieu de SVNPath ? Sinon concernant l'accès, il est normal qu'il soit interdit pour la racine des dépôts. Par-contre tu devrais avoir accès à ton premier dépôt créé, même s'il est vide. Pour acceder à ton dépôt en ligne de commande, il faudrait plutôt utiliser l'url complète : svn co http://www.tonserveur.tld/svn/MonDepot ou avec le protocole svn:// ou file:/// J'avais écris un article il y a plusieurs mois dont une partie traite de Subversion et d'Apache : http://blog.piegweb.net/2007/11/21/a...ts-sous-gutsy/ peut-être y trouveras-tu quelques informations ;-)
__________________
Administrateur
|
|
#10
|
|||
|
|||
|
Merci, je regarde ça.
J'ai en effet réussi à avoir ce qu'il faut à l'adresse que tu m'as donnée. Maintenant, je me bats avec tortoise SVN pour réussir à faire un commit. Cela marche si je ne mets pas la ligne avec AuthzSVNAccessFile dans le fichier de conf. Si je la mets (et j'ai bien sur besoin de cela pour configurer correctement SVN), cela me donne cette erreur: Server sent unexpected return value (403 Forbidden) in response to OPTIONS Il ne me redemande pas de login / passwd dans Tortoise! Je regarde le lien que tu m'as donné et je continue à vous tenir au courant. Merci pour ton aide. |
![]() |
|
| Liens sociaux |
| Tags |
| apache, debian, etch, mongrel, proxy balancer, rails, redmine, ror, ruby |
| Utilisateurs regardant la discussion actuelle : 1 (0 membre(s) et 1 invité(s)) | |
| Outils de la discussion | |
|
|
Discussions similaires
|
||||
| Discussion | Auteur | Forum | Réponses | Dernier message |
| [RESOLU] Debian - Exim | RoY | Administration des distributions *nix et *nux | 4 | 11/08/2008 21h04 |
| [Vidéo] Apache Web Server Internals | Pilo | Administration de serveurs web | 2 | 25/06/2008 14h50 |