HowTo run Redmine with a Mongrel cluster

Version 5 (Jerome Warnier, 2010-03-02 12:04)

1 1 Craig Truzzi
h1. HowTo run Redmine with a Mongrel cluster
2 2 XDjuj Apsulis
3 2 XDjuj Apsulis
(Debian & French Version, Translation as soon as possible :) )
4 2 XDjuj Apsulis
5 2 XDjuj Apsulis
<pre>
6 2 XDjuj Apsulis
###
7 2 XDjuj Apsulis
# UTILISER MONGREL ET AUTOMATISER LE LANCEMENT DE REDMINE
8 2 XDjuj Apsulis
###
9 2 XDjuj Apsulis
10 2 XDjuj Apsulis
*# Nous supposons que notre dossier Redmine est présent à l'adresse /home/svn/redmine/ et qu'il appartient à l'utilisateur USER*
11 5 Jerome Warnier
# Il est important de comprendre que Mongrel est un serveur web applicatif (Web Application Server, un peu comme Tomcat pour Java)
12 1 Craig Truzzi
# On installe Mongrel et son gestionnaire de cluster
13 5 Jerome Warnier
# Je pense que gem n'est pas nécessaire mais au cas où, pour info : gem install gem_plugin mongrel mongrel_cluster
14 2 XDjuj Apsulis
apt-get install mongrel mongrel-cluster
15 2 XDjuj Apsulis
16 2 XDjuj Apsulis
# Créons le fichier de configuration pour Redmine
17 2 XDjuj Apsulis
# -e production indique que le serveur doit tourner en mode production
18 1 Craig Truzzi
# -p 8000 lance Mongrel sur le port 8000
19 1 Craig Truzzi
# -N 3 indique qu'il y aura 3 instances du serveur
20 5 Jerome Warnier
# -c /home/... le chemin vers la racine de Redmine
21 2 XDjuj Apsulis
# -C /home/... le chemin vers où le fichier de configuration va être créé
22 5 Jerome Warnier
# -a dit à Mongrel d'écouter seulement sur localhost     
23 2 XDjuj Apsulis
mongrel_rails cluster::configure -e production -p 8000 -N 3 -c /home/svn/redmine -C /home/svn/redmine/config/mongrel_cluster.yml -a 127.0.0.1 --user USER --group www-data
24 2 XDjuj Apsulis
25 2 XDjuj Apsulis
# On fait un lien de ce fichier de conf pour mongrel
26 2 XDjuj Apsulis
ln -s /home/svn/redmine/config/mongrel_cluster.yml /etc/mongrel-cluster/sites-enabled/redmine.yml
27 2 XDjuj Apsulis
28 2 XDjuj Apsulis
# On configure maintenant le script de lancement mongrel-cluster qui doit se trouver dans /etc/init.d/
29 2 XDjuj Apsulis
CONF_DIR=/etc/mongrel-cluster/sites-enabled
30 1 Craig Truzzi
PID_DIR=/home/svn/redmine/tmp/pids
31 2 XDjuj Apsulis
USER=UTILISATEUR_DE_VOTRE_CHOIX
32 2 XDjuj Apsulis
GROUP=www-data
33 1 Craig Truzzi
34 5 Jerome Warnier
# On ajoute les droits en exécution sur le fichier
35 2 XDjuj Apsulis
chmod +x /etc/init.d/mongrel-cluster
36 2 XDjuj Apsulis
37 2 XDjuj Apsulis
# On vérifie que le script est bien lancé au démarrage, c'est normalement le cas :
38 5 Jerome Warnier
ls /etc/rc2.d/ | grep mongrel
39 5 Jerome Warnier
S20mongrel-cluster
40 2 XDjuj Apsulis
41 2 XDjuj Apsulis
# Sinon on l'ajoute à l'aide de updaterc.d => http://pwet.fr/man/linux/administration_systeme/update_rc_d
42 2 XDjuj Apsulis
update-rc.d -f mongrel-cluster defaults
43 2 XDjuj Apsulis
44 2 XDjuj Apsulis
# On peut maintenant contrôler le serveur :
45 2 XDjuj Apsulis
/etc/init.d/mongrel-cluster start
46 2 XDjuj Apsulis
/etc/init.d/mongrel-cluster restart
47 2 XDjuj Apsulis
/etc/init.d/mongrel-cluster stop
48 2 XDjuj Apsulis
49 2 XDjuj Apsulis
# On teste que tout fonctionne 
50 1 Craig Truzzi
/etc/init.d/mongrel-cluster start
51 2 XDjuj Apsulis
w3m http://127.0.0.1:8000
52 2 XDjuj Apsulis
q
53 2 XDjuj Apsulis
/etc/init.d/mongrel-cluster stop
54 1 Craig Truzzi
w3m http://127.0.0.1:8000
55 2 XDjuj Apsulis
q
56 2 XDjuj Apsulis
57 5 Jerome Warnier
# On configure Apache afin de rediriger les requètes vers le cluster mongrel
58 5 Jerome Warnier
# On active les modules nécessaires 
59 2 XDjuj Apsulis
a2enmod rewrite
60 2 XDjuj Apsulis
a2enmod proxy_http
61 2 XDjuj Apsulis
a2enmod proxy_balancer 
62 2 XDjuj Apsulis
63 5 Jerome Warnier
# On complète le vhost SVN ou on créé un vhost redmine comme suit on peut peut-être faire mieux comme 
64 2 XDjuj Apsulis
# http://www.paolocorti.net/2007/11/08/ruby-on-rails-applications-with-mongrel-clusters-and-apache-on-ubuntu/
65 2 XDjuj Apsulis
66 2 XDjuj Apsulis
###########
67 2 XDjuj Apsulis
# REDMINE #
68 2 XDjuj Apsulis
###########
69 2 XDjuj Apsulis
70 2 XDjuj Apsulis
<VirtualHost *:80>
71 2 XDjuj Apsulis
	ServerAdmin webmaster@domaine.com
72 2 XDjuj Apsulis
	ServerName redmine.domaine.fr
73 2 XDjuj Apsulis
	DocumentRoot /home/svn/redmine/public/
74 2 XDjuj Apsulis
75 2 XDjuj Apsulis
	<Directory /home/svn/redmine/public/>
76 2 XDjuj Apsulis
		Options Indexes FollowSymLinks MultiViews
77 2 XDjuj Apsulis
		AllowOverride All
78 2 XDjuj Apsulis
		Order allow,deny
79 2 XDjuj Apsulis
		allow from all
80 2 XDjuj Apsulis
	</Directory>
81 2 XDjuj Apsulis
82 2 XDjuj Apsulis
	# On active les proxy qui sont par défaut désactivés
83 2 XDjuj Apsulis
	<Proxy *>
84 2 XDjuj Apsulis
		Order allow,deny
85 2 XDjuj Apsulis
		Allow from all
86 2 XDjuj Apsulis
	</Proxy>
87 2 XDjuj Apsulis
	<Proxy balancer://mongrel_cluster>
88 2 XDjuj Apsulis
		BalancerMember http://127.0.0.1:8000
89 2 XDjuj Apsulis
		BalancerMember http://127.0.0.1:8001
90 2 XDjuj Apsulis
		BalancerMember http://127.0.0.1:8002
91 2 XDjuj Apsulis
	</Proxy>
92 2 XDjuj Apsulis
93 2 XDjuj Apsulis
	RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} -f
94 2 XDjuj Apsulis
	RewriteRule (.*) $1 [L]
95 2 XDjuj Apsulis
96 2 XDjuj Apsulis
	ProxyPass / Balancer://mongrel_cluster/
97 2 XDjuj Apsulis
	ProxyPassReverse / balancer://mongrel_cluster/
98 2 XDjuj Apsulis
99 2 XDjuj Apsulis
	AddOutputFilter DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/javascript text/css
100 1 Craig Truzzi
	BrowserMatch ^Mozilla/4 gzip-only-text/html
101 2 XDjuj Apsulis
	BrowserMatch ^Mozilla/4.0[678] no-gzip
102 2 XDjuj Apsulis
	BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
103 1 Craig Truzzi
104 2 XDjuj Apsulis
	ErrorLog /home/svn/redmine/logs/apache2/redmine.error.log
105 2 XDjuj Apsulis
	LogLevel warn
106 2 XDjuj Apsulis
	CustomLog /home/svn/redmine/logs/apache2/redmine.access.log combined
107 2 XDjuj Apsulis
	ServerSignature Off
108 2 XDjuj Apsulis
</VirtualHost>
109 2 XDjuj Apsulis
110 5 Jerome Warnier
# Ne pas oublier de créer un dossier /logs/apache2 (ici dans le répertoire redmine)   
111 2 XDjuj Apsulis
mkdir -p /home/svn/redmine/logs/apache2
112 2 XDjuj Apsulis
113 2 XDjuj Apsulis
a2ensite redmine
114 5 Jerome Warnier
apache2ctl graceful
115 2 XDjuj Apsulis
/etc/init.d/mongrel-cluster start
116 2 XDjuj Apsulis
117 2 XDjuj Apsulis
# Il ne reste normalement plus qu'à se logguer (admin/admin) et à configurer la bête !
118 2 XDjuj Apsulis
119 4 Alexandre Bansai
###################################
120 3 XDjuj Apsulis
# CONFIGURATION DES MAILS SORTANTS #
121 3 XDjuj Apsulis
####################################
122 1 Craig Truzzi
123 3 XDjuj Apsulis
# Redmine offre la possibilité d'adresser des notifications sur certains événements (configurables pour chaque projet)
124 3 XDjuj Apsulis
# Pour ce faire, il convient de configurer le fichier redmine/config/email.yml
125 3 XDjuj Apsulis
cd /home/svn/redmine/config
126 3 XDjuj Apsulis
cp email.yml.example email.yml
127 3 XDjuj Apsulis
pico email.yml
128 3 XDjuj Apsulis
production:
129 3 XDjuj Apsulis
  delivery_method: :smtp
130 3 XDjuj Apsulis
  smtp_settings:
131 3 XDjuj Apsulis
    address: localhost
132 3 XDjuj Apsulis
    port: 25
133 3 XDjuj Apsulis
    domain: domaine.com
134 3 XDjuj Apsulis
135 3 XDjuj Apsulis
sudo /etc/init.d/mongrel-cluster restart
136 3 XDjuj Apsulis
137 3 XDjuj Apsulis
#
138 3 XDjuj Apsulis
# CADEAU BONUX
139 3 XDjuj Apsulis
#
140 3 XDjuj Apsulis
# On peut également souhaiter bénéficier des services Google afin de gérer l'envoi des mails :
141 2 XDjuj Apsulis
cd /home/svn/redmine/
142 1 Craig Truzzi
apt-get install git
143 4 Alexandre Bansai
144 4 Alexandre Bansai
# Sur ma Ubuntu 9.10 le paquet git est "git-core":
145 4 Alexandre Bansai
# sudo apt-get install git-core
146 4 Alexandre Bansai
147 1 Craig Truzzi
ruby script/plugin install git://github.com/collectiveidea/action_mailer_optional_tls.git
148 1 Craig Truzzi
149 2 XDjuj Apsulis
# Editer le fichier config/email.yml
150 3 XDjuj Apsulis
cd /home/svn/redmine/config
151 3 XDjuj Apsulis
cp email.yml.example email.yml
152 3 XDjuj Apsulis
pico email.yml
153 2 XDjuj Apsulis
production:
154 2 XDjuj Apsulis
  delivery_method: :smtp
155 2 XDjuj Apsulis
  smtp_settings:
156 2 XDjuj Apsulis
    tls: true
157 2 XDjuj Apsulis
    address: "smtp.gmail.com"
158 2 XDjuj Apsulis
    port: '587'
159 2 XDjuj Apsulis
    domain: "smtp.gmail.com"
160 2 XDjuj Apsulis
    authentication: :plain
161 2 XDjuj Apsulis
    user_name: "votreadresse@gmail.com"
162 2 XDjuj Apsulis
    password: "votremotdepasse"
163 2 XDjuj Apsulis
</pre>