1. Environnement
  2. Installation
  3. Copies d'écrans
  4. Liens



Environnement

La machine hôte (ip 192.168.0.59) tourne dans une vmware sur un noyau maison patché vserverVersion 2.6.27.10 patch vs2.3.0.36.4. Le nom de domaine net.sarge est géré par un dns local tournant sur le serveur que vous consultez.

sarge:~# uname -a
Linux sarge 2.6.27.10-vs2.3.0.36.2 #1 SMP Fri Dec 19 19:36:13 CET 2008 i686 GNU/Linux

sarge:~# free
             total       used       free     shared    buffers     cached
Mem:        385632     372136      13496          0      14340     161832
-/+ buffers/cache:     195964     189668
Swap:       779112        696     778416

sarge:/# cat /etc/issue
Debian GNU/Linux 4.0 \n \l





J'avais installé sur celle-ci une version de dev des util-vserver afin de pouvoir démarrer une centos (la version 0.30.215 générant trop de problèmes dans ce cas)

sarge:~# vserver-info
Versions:
                   Kernel: 2.6.27.10-vs2.3.0.36.2
                   VS-API: 0x00020304
             util-vserver: 0.30.216-pre2794; Oct 24 2008, 19:08:02

Features:
               CC: gcc, gcc (GCC) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)
                      CXX: g++, g++ (GCC) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)
                 CPPFLAGS: ''
                   CFLAGS: '-g -O2 -std=c99 -Wall -pedantic -W -funit-at-a-time'
                 CXXFLAGS: '-g -O2 -ansi -Wall -pedantic -W -fmessage-length=0 -funit-at-a-time'
               build/host: i686-pc-linux-gnu/i686-pc-linux-gnu
             Use dietlibc: yes
       Build C++ programs: yes
       Build C99 programs: yes
           Available APIs: v13,net,v21,v22,v23,netv2
            ext2fs Source: e2fsprogs
    syscall(2) invocation: alternative
      vserver(2) syscall#: 273/glibc
               crypto api: beecrypt

Paths:
                   prefix: /usr/local
        sysconf-Directory: ${prefix}/etc
            cfg-Directory: ${prefix}/etc/vservers
         initrd-Directory: $(sysconfdir)/init.d
       pkgstate-Directory: ${prefix}/var/run/vservers
          vserver-Rootdir: /opt/vservers



Je démarre donc l'un des vservers,  entre dans celui-ci et commence à l'upgrader en lenny. Ce choix est volontaire, plusieurs lectures sur redmine m'ayant rapidement convaincu que les librairies un peu trop anciennes de la etch pouvaient poser problème. Je modifie donc le sources.list en conséquence puis upgrade.


vweb3:/etc/apt# apt-get dist-upgrade

......

mknod: `smpte3-': Opération non permise
makedev smpte3 c 35 131 root audio 0660: failed
mknod: `agpgart-': Opération non permise
makedev agpgart c 10 175 root video 0660: failed
Setting up procps (1:3.2.7-11) ...

Setting up klogd (1.5-5) ...
Installing new version of config file /etc/init.d/klogd ...
Stopping kernel log daemon... failed!
Starting kernel log daemon...

Starting kernel log daemon...^Cdpkg: error processing klogd (--configure):
 subprocess post-installation script killed by signal (Interrupt)
Setting up sysklogd (1.5-5) ...

vweb3:/etc/rc3.d# update-rc.d -f klogd remove
 Removing any system startup links for /etc/init.d/klogd ...
   /etc/rc0.d/K89klogd
   /etc/rc1.d/K89klogd
   /etc/rc2.d/S11klogd
   /etc/rc3.d/S11klogd
   /etc/rc4.d/S11klogd
   /etc/rc5.d/S11klogd
   /etc/rc6.d/K89klogd


Les quelques messages d'erreurs liès à la création des périphériques est sans importance puisque je travaille dans un vserver. Reste le problème d'install de klogd que je vais résoudre par un exit 0 en début du script de postinst.


vweb3:/var/lib/dpkg/info# vi klogd.postinst

#! /bin/sh

exit 0

set -e

if [ "$1" = "configure" ]
then
.....

vweb3:/var/lib/dpkg/info# apt-get install -f
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances... Fait
0 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
1 partiellement installés ou enlevés.
Après cette opération, 0o d'espace disque supplémentaires seront utilisés.
Paramétrage de klogd (1.5-5) ...
vweb3:/var/lib/dpkg/info#



Il faut ensuite faire le ménage dans les scripts de démarrage, l'upgrade ayant recréé tous les liens .



vweb3:/etc/rcS.d# for i in glibc.sh hostname.sh mountkernfs.sh mountdevsubfs.sh \
bootlogd hwclockfirst.sh checkroot.sh hwclock.sh mtab.sh ifupdown-clean \
module-init-tools checkfs.sh mountall.sh mountall-bootclean.sh rmnologin \
mountall-bootclean.sh stop-bootlogd-single procps urandom cron klogd \
mountoverflowtmp ifupdown networking mountnfs.sh mountnfs-bootclean.sh bootmisc.sh; \
do update-rc.d -f $i remove;done


vweb3:/var/lib/dpkg/info# apt-get clean




Je vais installer apache2 et php5 pour coller un peu à la réalité (on peut considérer que ce vserver fait office de serveur web) mais on verra que c'est facultatif.


vweb3:~# apt-get install apache2 mysql-server php5 libapache2-mod-php5 php5-mysql php5-mcrypt

ATTENTION : les paquets suivants n'ont pas été authentifiés.
  libmysqlclient16 mysql-client-5.1 mysql-server-5.1 libapache2-mod-php5 mysql-server php5 php5-mcrypt
Faut-il installer ces paquets sans vérification (o/N) ? o

.....
Des erreurs ont été rencontrées pendant l'exécution :
 exim4-config
 exim4-base
 exim4-daemon-light
 exim4
 bsd-mailx
 libapache2-mod-php5
 ssl-cert
 mailx



L'avertissement à propos des signatures est lié au fait que j'utilise dotdeb dans mon sources.list et que ce dépôt n'a pas de signature, ce qui ne le rend pas insécure pour autant.

Exim étant installé par le jeu des dépendances et n'étant pas nécessaire, on peut le supprimer et du coup résoudre les erreurs.


vweb3:~# apt-get remove --purge exim4-config exim4-base exim4 exim4-daemon-light

vweb3:~# apt-get install -f
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances      
Lecture des informations d'état... Fait
0 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.


Je vais maintenant stopper puis redémarrer le vserver pour m'assurer que tout va bien suite à l'upgrade:


sarge:~# vserver vweb3 stop

sarge:~# vserver vweb3 start

sarge:/# vserver-stat
CTX   PROC    VSZ    RSS  userTIME   sysTIME    UPTIME NAME
23      24 608.4M 148.6M   0m04s95   0m05s68   0m06s68 vweb3

sarge:~# vserver vweb3 enter

vweb3:/# uname -a
Linux vweb3.net.sarge 2.6.27.10-vs2.3.0.36.2 #1 SMP Fri Dec 19 19:36:13 CET 2008 i686 GNU/Linux

vweb3:/# cat /etc/issue
Debian GNU/Linux 5.0 \n \l

vweb3:/# ifconfig |grep 192
          inet adr:192.168.0.161  Bcast:192.168.0.255  Masque:255.255.255.0

vweb3:/# hostname --fqdn
vweb3.net.sarge


Tout est correct. On va donc passer à l'instllation de redmine.



Installation           Retour en haut

Je vais commencer par créer un utilisateur redmine dans le groupe www-data sous l'identité duquel le serveur tournera par la suite.

vweb3:/# useradd -g 33 -m redmine

vweb3:/# passwd redmine
Entrez le nouveau mot de passe UNIX :
Retapez le nouveau mot de passe UNIX :
passwd : le mot de passe a été mis à jour avec succès

vweb3:/# su - redmine

redmine@vweb3:~$ groups
www-data


Je récupère ensuite redmine sur le site de l'éditeur puis crée un lien symbolique dans le répertoire de l'utilisateur redmine.

vweb3:/# cd /usr/local

vweb3:/# wget http://rubyforge.org/frs/download.php/49319/redmine-0.8.0.tar.gz

vweb3:/usr/local# tar zxvf redmine-0.8.0.tar.gz && mv redmine-0.8.0.tar.gz src

vweb3:/usr/local# chown -R redmine:www-data redmine-0.8.0/

vweb3:/usr/local# su - redmine

redmine@vweb3:~$ ln -s /usr/local/redmine-0.8.0/ ./redmine

redmine@vweb3:~$ ls -l
total 24
drwxr-xr-x 2 redmine www-data 4096 jan 25 15:52 .
drwxr-xr-x 5 root    root     4096 jan 25 15:32 ..
lrwxrwxrwx 1 redmine www-data   25 jan 25 15:52 redmine -> /usr/local/redmine-0.8.0/


Je crée ensuite une base de données puis son utilisateur associé (pour les tests je ne "blinde" pas le mot de passe, à adapter bien sûr...)


vweb3:/usr/local# mysql -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 5.1.30-Dotdeb_0.dotdeb.0 (Dotdeb)

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> create database redmine;
Query OK, 1 row affected (0,00 sec)

mysql> grant all on redmine.* to 'redmine'@'localhost' identified by 'redmine';
Query OK, 0 rows affected (0,00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0,00 sec)

mysql> quit
Bye

vweb3:/usr/local# mysql -u redmine -p redmine
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 5.1.30-Dotdeb_0.dotdeb.0 (Dotdeb)

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> show tables;
Empty set (0,00 sec)

mysql> quit


Je modifie ensuite le fichier de connexion redmine:


redmine@vweb3:~$ cd redmine/config
redmine@vweb3:~/redmine/config$ cp database.yml.example database.yml
redmine@vweb3:~/redmine/config$ cat database.yml

 production:
  adapter: mysql
  database: redmine
  host: localhost
  username: redmine
  password: redmine
  encoding: utf8



Je commence à installer le nécessaire (y compris build-essential car j'aime bien avoir sous la main les paquets de dev). Pour info rubygem est le gestionnaire de paquet interne à ruby.


vweb3:/usr/local# apt-get install ruby rubygems1.8 rake zip libopenssl-ruby1.8 imagemagick  librmagick-ruby1.8 ruby1.8-dev  libmagick9-dev build-essential

vweb3:/usr/local# gem install rmagick
Building native extensions.  This could take a while...
Successfully installed rmagick-2.9.0
1 gem installed

vweb3:/usr/local# gem install gem_plugin
Successfully installed gem_plugin-0.2.3
1 gem installed
Installing ri documentation for gem_plugin-0.2.3...
Installing RDoc documentation for gem_plugin-0.2.3...



J'initialise ensuite la base de données de redmine. J'en profite pour créer un lien symbolique manquant car redmine ne trouve pas le socket mysql qui est déclaré par défaut dans /var/run/mysql à l'install de mysql-server. J'aurais pu modifier /etc/mysql/my.cnf mais je préfére "rester dans les clous" pour les futures mises à jour. (Remarque: j'effectue ces opérations sous le compte redmine).



redmine@vweb3:~/redmine$ rake db:migrate RAILS_ENV="production"
(in /usr/local/redmine-0.8.0)
rake aborted!
No such file or directory - /tmp/mysql.sock

(See full trace by running task with --trace)
redmine@vweb3:~/redmine$ ln -s /var/run/mysqld/mysqld.sock /tmp/mysql.sock


redmine@vweb3:~/redmine$ rake db:migrate RAILS_ENV="production"
(in /usr/local/redmine-0.8.0)
== 1 Setup: migrating =========================================================
-- create_table("attachments", {:force=>true})
   -> 0.0039s
-- create_table("auth_sources", {:force=>true})
....
== 100 AddChangesetsUserId: migrating =========================================
-- add_column(:changesets, :user_id, :integer, {:default=>nil})
   -> 0.0255s
== 100 AddChangesetsUserId: migrated (0.0258s) ================================

== 101 PopulateChangesetsUserId: migrating ====================================
== 101 PopulateChangesetsUserId: migrated (0.0006s) ===========================


redmine@vweb3:~/redmine$ rake redmine:load_default_data RAILS_ENV="production"
(in /usr/local/redmine-0.8.0)

Select language: bg, ca, cs, da, de, en, es, fi, fr, he, hu, it, ja, ko, lt, nl, no, pl, pt, pt-br, ro, ru, sk, sr, sv, th, tr, uk, vn, zh, zh-tw [en] fr

====================================
Default configuration data loaded.



Je vais vérifier ce qui a été créé:


redmine@vweb3:~/redmine$ mysql -u redmine -p redmine
Enter password:
....
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 12
Server version: 5.1.30-Dotdeb_0.dotdeb.0 (Dotdeb)

mysql> show tables;
+------------------------+
| Tables_in_redmine      |
+------------------------+
| attachments            |
| auth_sources           |
| boards                 |
| changes                |
| changesets             |
| changesets_issues      |
| comments               |
| custom_fields          |
| custom_fields_projects |
| custom_fields_trackers |
| custom_values          |
| documents              |
| enabled_modules        |
| enumerations           |
| issue_categories       |
| issue_relations        |
| issue_statuses         |
| issues                 |
| journal_details        |
| journals               |
| members                |
| messages               |
| news                   |
| plugin_schema_info     |
| projects               |
| projects_trackers      |
| queries                |
| repositories           |
| roles                  |
| schema_migrations      |
| settings               |
| time_entries           |
| tokens                 |
| trackers               |
| user_preferences       |
| users                  |
| versions               |
| watchers               |
| wiki_content_versions  |
| wiki_contents          |
| wiki_pages             |
| wiki_redirects         |
| wikis                  |
| workflows              |
+------------------------+
44 rows in set (0,00 sec)

mysql>

mysql> select * from users;
+----+-------+------------------------------------------+-----------+----------+-------------------+-------------------+-------+--------+---------------+----------+-------------+--------+-+-+
| id | login | hashed_password                          | firstname | lastname | mail              | mail_notification | admin | status | last_login_on | language | auth_source_id | created_on          | updated_on          | type |
+----+-------+------------------------------------------+-----------+----------+-------------------+-------------------+-------+--------+---------------+----------+----------------+-----+-+-+
|  1 | admin | d033e22ae348aeb5660fc2140aec35850c4da997 | Redmine   | Admin    | admin@example.net |                 1 |     1 |      1 | NULL          | en       |           NULL | 2009-01-25 16:00:45 | 2009-01-25 16:00:45 | User |
+----+-------+------------------------------------------+-----------+----------+-------------------+-------------------+-------+--------+---------------+----------+----------------+----+--+-+
1 row in set (0,00 sec)



Le champ password est la valeur encodée sha1 de: admin (cela nous servira lors de la première connexion)

On va pouvoir tester avec le serveur webrick intégré dans redmine.


redmine@vweb3:~/redmine$ mkdir tmp/pids

redmine@vweb3:~/redmine$ ruby script/server -e production

=> Booting Mongrel (use 'script/server webrick' to force WEBrick)
=> Rails 2.1.2 application starting on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
** Starting Mongrel listening at 0.0.0.0:3000
** Starting Rails with production environment...
** Rails loaded.
** Loading any Rails specific GemPlugins
** Signals ready.  TERM => stop.  USR2 => restart.  INT => stop (no restart).
** Rails signals registered.  HUP => reload (without restart).  It might not work well.
** Mongrel 1.1.5 available at 0.0.0.0:3000
** Use CTRL-C to stop.



Cela parait correct MAIS dans la console depuis laquelle j'ai lancé webrick je vois ceci lorsque je tente d'accéder à l'url : http://vweb3.net.sarge:3000/ :

Processing WelcomeController#index (for 192.168.0.22 at 2009-01-25 16:11:26) [GET]
  Session ID: d47da287c45ae950d42cc13ffee8f273
  Parameters: {"action"=>"index", "controller"=>"welcome"}
DEPRECATION WARNING: You're using the Ruby-based MySQL library that ships with Rails. This library will be REMOVED FROM RAILS 2.2. Please switch to the offical mysql gem: `gem install mysql`  See http://www.rubyonrails.org/deprecation for details. (called from mysql_connection at /usr/local/redmine-0.8.0/vendor/rails/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb:81)
Rendering template within layouts/base
Rendering welcome/index
Completed in 0.22035 (4 reqs/sec) | Rendering: 0.02080 (9%) | DB: 0.03533 (16%) | 200 OK [http://vweb3.net.sarge/]

Pas de problème on va corriger et au passage installer la libmysqlclient-dev manquante: je stoppe donc webrick par un simple ctrl-c dans la console et je mets à jour:

vweb3:/usr/local# gem update
Updating installed gems
Nothing to update

vweb3:/usr/local# gem install mysql
Building native extensions.  This could take a while...
ERROR:  Error installing mysql:
    ERROR: Failed to build gem native extension.


vweb3:/usr/local# dpkg -l libmysqlclient*
Souhait=inconnU/Installé/suppRimé/Purgé/H=à garder
| État=Non/Installé/fichier-Config/dépaqUeté/échec-conFig/H=semi-installé/W=attend-traitement-déclenchements
|/ Err?=(aucune)/H=à garder/besoin Réinstallation/X=les deux (État,Err: majuscule=mauvais)
||/ Nom                              Version                          Description
+++-================================-================================-================================================================================
un  libmysqlclient15                 <néant>                          (aucune description n'est disponible)
ii  libmysqlclient15off              5.0.75-0.dotdeb.0                MySQL database client library
ii  libmysqlclient16                 5.1.30-0.dotdeb.0                MySQL database client library

vweb3:/usr/local# apt-get install libmysqlclient-dev
...
Paramétrage de libmysqlclient-dev (5.1.30-0.dotdeb.0) ...

vweb3:/usr/local# gem install mysql
Building native extensions.  This could take a while...
Successfully installed mysql-2.7
1 gem installed


Re-tests : cette fois c'est bon:


redmine@vweb3:~/redmine$ ruby script/server -e production

Processing AccountController#login (for 192.168.0.22 at 2009-01-25 16:22:29) [GET]
  Session ID: d47da287c45ae950d42cc13ffee8f273
  Parameters: {"action"=>"login", "controller"=>"account"}
Rendering template within layouts/base
Rendering account/login
Completed in 0.17994 (5 reqs/sec) | Rendering: 0.03439 (19%) | DB: 0.00356 (1%) | 200 OK [http://vweb3.net.sarge/login]

Webrick étant fourni essentiellement pour debugguer, on utilisera mongrel_cluster en production. Je passe à l'install de celui-ci:

vweb3:/var/log/apache2# gem install gem_plugin mongrel mongrel_cluster
Successfully installed gem_plugin-0.2.3
Building native extensions.  This could take a while...
Building native extensions.  This could take a while...
Successfully installed daemons-1.0.10
Successfully installed fastthread-1.0.1
Successfully installed cgi_multipart_eof_fix-2.5.0
Successfully installed mongrel-1.1.5
Successfully installed mongrel_cluster-1.0.5
6 gems installed
Installing ri documentation for gem_plugin-0.2.3...
Installing ri documentation for daemons-1.0.10...
Installing ri documentation for fastthread-1.0.1...

No definition for dummy_dump

No definition for dummy_dump

No definition for rb_queue_marshal_load

No definition for rb_queue_marshal_dump
Installing ri documentation for cgi_multipart_eof_fix-2.5.0...
Installing ri documentation for mongrel-1.1.5...
Installing RDoc documentation for gem_plugin-0.2.3...
Installing RDoc documentation for daemons-1.0.10...
Installing RDoc documentation for fastthread-1.0.1...

No definition for dummy_dump

No definition for dummy_dump

No definition for rb_queue_marshal_load

No definition for rb_queue_marshal_dump
Installing RDoc documentation for cgi_multipart_eof_fix-2.5.0...
Installing RDoc documentation for mongrel-1.1.5...


Il faut ensuite le paramétrer:


vweb3:/usr/local# cat /home/redmine/redmine/config/mongrel_cluster.yml
---
group: www-data
address: 127.0.0.1
log_file: log/mongrel.log
port: "8000"
cwd: /home/redmine/redmine
environment: production
user: redmine
pid_file: tmp/pids/mongrel.pid
servers: 3


vweb3:/etc/mongrel-cluster/sites-available# cp /home/redmine/redmine/config/mongrel_cluster.yml .

vweb3:/etc/mongrel-cluster/sites-available# cd ../sites-enabled/

vweb3:/etc/mongrel-cluster/sites-enabled# ln -s ../sites-available/mongrel_cluster.yml ./mongrel_cluster.yml



Je démarre mongrel et vérifie un peu les process en cours:


vweb3:/var/log/apache2# /etc/init.d/mongrel-cluster start
Starting mongrel-cluster: Starting all mongrel_clusters...
mongrel-cluster.

vweb3:/var/log/apache2# ps ax
  PID TTY      STAT   TIME COMMAND
    1 ?        Ss     0:01 init [2]      
 7361 ?        Ss     0:00 /sbin/syslogd
 7401 ?        S      0:00 /bin/sh /usr/bin/mysqld_safe
 7518 ?        Sl     0:02 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --log-error=/var/lib/mysql/vweb3.net.sarge.err --pid-fi
 7654 ?        R+     0:01 login                                                                                            
 7686 pts/0    Rs     0:00 /bin/bash -login
19881 ?        S+     0:00 login                                                                                            
19913 pts/3    Ss+    0:00 /bin/bash -login
23942 ?        Sl     0:02 /usr/bin/ruby1.8 /usr/bin/mongrel_rails start -d -e production -a 127.0.0.1 -c /home/redmine/redmine --user redmine --group w
23945 ?        Sl     0:02 /usr/bin/ruby1.8 /usr/bin/mongrel_rails start -d -e production -a 127.0.0.1 -c /home/redmine/redmine --user redmine --group w
23948 ?        R      0:02 /usr/bin/ruby1.8 /usr/bin/mongrel_rails start -d -e production -a 127.0.0.1 -c /home/redmine/redmine --user redmine --group w
23951 pts/0    R+     0:00 ps ax


vweb3:/var/log/apache2# netstat -lnp
Connexions Internet actives (seulement serveurs)
Proto Recv-Q Send-Q Adresse locale          Adresse distante        Etat        PID/Program name
tcp        0      0 127.0.0.1:8000          0.0.0.0:*               LISTEN      23942/ruby1.8  
tcp        0      0 127.0.0.1:8001          0.0.0.0:*               LISTEN      23945/ruby1.8  
tcp        0      0 127.0.0.1:8002          0.0.0.0:*               LISTEN      23948/ruby1.8  
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      7518/mysqld    
Sockets du domaine UNIX actives(seulement serveurs)
Proto RefCnt Flags       Type       State         I-Node   PID/Program name    Chemin
unix  2      [ ACC ]     STREAM     LISTENING     87654    7518/mysqld         /var/run/mysqld/mysqld.sock



Le but du jeu maintenant va être de pouvoir passer par apache pour utiliser redmine: il va donc falloir configurer apache2 comme suit:

Activation des modules rewrite, proxy_http, proxy_balancer

vweb3:/etc/mongrel-cluster/sites-enabled# a2enmod rewrite
Enabling module rewrite.
Run '/etc/init.d/apache2 restart' to activate new configuration!

vweb3:/etc/mongrel-cluster/sites-enabled# a2enmod proxy_http
Considering dependency proxy for proxy_http:
Enabling module proxy.
Enabling module proxy_http.
Run '/etc/init.d/apache2 restart' to activate new configuration!

vweb3:/etc/mongrel-cluster/sites-enabled# a2enmod proxy_balancer
Considering dependency proxy for proxy_balancer:
Module proxy already enabled
Enabling module proxy_balancer.
Run '/etc/init.d/apache2 restart' to activate new configuration!



Création d'un virtualhost spécifique à redmine et activation de celui-ci:



vweb3:/etc/mongrel-cluster/sites-enabled# cat /etc/apache2/sites-available/redmine

<VirtualHost 192.168.0.161:80>
ServerAdmin postmaster@net.sarge
ServerName vweb3.net.sarge
DocumentRoot /home/redmine/redmine/public/

<Directory /home/redmine/redmine/public/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>

<Proxy balancer://mongrel_cluster>
BalancerMember http://127.0.0.1:8000
BalancerMember http://127.0.0.1:8001
BalancerMember http://127.0.0.1:8002
</Proxy>

RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} -f
RewriteRule (.*) $1 [L]

ProxyPass / Balancer://mongrel_cluster/
ProxyPassReverse / balancer://mongrel_cluster/

AddOutputFilter DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/javascript text/css
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html

ErrorLog /var/log/apache2/error.log
LogLevel warn
CustomLog /var/log/apache2/access.log combined
ServerSignature Off
</VirtualHost>

vweb3:/etc/mongrel-cluster/sites-enabled# a2ensite redmine



Modification du fichier proxy.conf comme suit:


vweb3:/etc/apache2/mods-enabled# cat proxy.conf
<IfModule mod_proxy.c>
        #turning ProxyRequests on and allowing proxying from all may allow
        #spammers to use your proxy to send email.

        ProxyRequests Off

        <Proxy *>
                AddDefaultCharset off
                Order allow,deny
                Allow from all
                #Allow from .example.com
        </Proxy>

        # Enable/disable the handling of HTTP/1.1 "Via:" headers.
        # ("Full" adds the server version; "Block" removes all outgoing Via: headers)
        # Set to one of: Off | On | Full | Block

        ProxyVia On
</IfModule>



Dans un environnement vserver, pour éviter tout conflit avec un autre apache tournant sur le port 80, il est impératif de désigner explicitement l'adresse IP sur laquelle il va écouter:


vweb3:/etc/mongrel-cluster/sites-enabled# cat /etc/apache2/ports.conf

NameVirtualHost 192.168.0.161:80
Listen 192.168.0.161:80

<IfModule mod_ssl.c>
    Listen 192.168.0.161:443
</IfModule>



(Re)démarrage d'apache et vérification:



vweb3:/var/log/apache2# apache2ctl start


vweb3:/var/log/apache2# netstat -lnp
Connexions Internet actives (seulement serveurs)
Proto Recv-Q Send-Q Adresse locale          Adresse distante        Etat        PID/Program name
tcp        0      0 127.0.0.1:8000          0.0.0.0:*               LISTEN      23942/ruby1.8  
tcp        0      0 127.0.0.1:8001          0.0.0.0:*               LISTEN      23945/ruby1.8  
tcp        0      0 127.0.0.1:8002          0.0.0.0:*               LISTEN      23948/ruby1.8  
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      7518/mysqld    
tcp        0      0 192.168.0.161:80        0.0.0.0:*               LISTEN      23961/apache2  
Sockets du domaine UNIX actives(seulement serveurs)
Proto RefCnt Flags       Type       State         I-Node   PID/Program name    Chemin
unix  2      [ ACC ]     STREAM     LISTENING     87654    7518/mysqld         /var/run/mysqld/mysqld.sock

vweb3:/etc/apache2/mods-enabled# ps ax
  PID TTY      STAT   TIME COMMAND
    1 ?        Ss     0:01 init [2]      
 7361 ?        Ss     0:00 /sbin/syslogd
 7401 ?        S      0:00 /bin/sh /usr/bin/mysqld_safe
 7518 ?        Sl     0:02 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --log-error=/var/lib/mysql/vweb3.net.sarge.err --pid-fi
 7582 ?        Ss     0:00 /usr/sbin/cron
 7654 ?        S+     0:01 login                                                                                            
 7686 pts/0    Ss     0:00 /bin/bash -login
24546 ?        Sl     0:05 /usr/bin/ruby1.8 /usr/bin/mongrel_rails start -d -e production -a 127.0.0.1 -c /home/redmine/redmine --user redmine --group w
24549 ?        Sl     0:06 /usr/bin/ruby1.8 /usr/bin/mongrel_rails start -d -e production -a 127.0.0.1 -c /home/redmine/redmine --user redmine --group w
24552 ?        Sl     0:05 /usr/bin/ruby1.8 /usr/bin/mongrel_rails start -d -e production -a 127.0.0.1 -c /home/redmine/redmine --user redmine --group w
24835 ?        Ss     0:00 /usr/sbin/apache2 -k start
24836 ?        S      0:00 /usr/sbin/apache2 -k start
24841 ?        S      0:00 /usr/sbin/apache2 -k start
24843 ?        S      0:00 /usr/sbin/apache2 -k start
24848 ?        S      0:00 /usr/sbin/apache2 -k start
24849 ?        S      0:00 /usr/sbin/apache2 -k start
24850 ?        S      0:00 /usr/sbin/apache2 -k start
24852 ?        S      0:00 /usr/sbin/apache2 -k start
25104 ?        S      0:00 /usr/sbin/apache2 -k start
25106 ?        S      0:00 /usr/sbin/apache2 -k start
25356 ?        S      0:00 /usr/sbin/apache2 -k start
25359 pts/0    R+     0:00 ps ax



Remarque: si Apache n'est pas installé (ce qui peut être tout à fait cohérent dans l'optique vserver) il est tout à fait possible d'utiliser mongrel_cluster seul. Il faudra dans ce cas modifier le fichier :
/etc/mongrel-cluster/sites-available/mongrel_cluster.yml en remplaçant 127.0.0.1 par l'ip de la machine.
Par contre dans la mesure où on démarre mongrel avec un utilisateur lamba, le numéro de port devra rester strictement supérieur à 1024.
On accédera dans ce cas à redmine par: http://vweb3.net.sarge:8000/  par exemple.


Pour terminer, j'arrête le vserver et le redémarre afin de m'assurer que tout fonctionne bien:


sarge:/opt/vservers/vweb3/etc# vserver vweb3 stop

sarge:/opt/vservers/vweb3/etc# vserver vweb3 start
Starting system log daemon: syslogd.
Starting MySQL database server: mysqld.
Checking for corrupt, not cleanly closed and upgrade needing tables..
Starting mongrel-cluster: Starting all mongrel_clusters...
mongrel-cluster.
Not starting internet superserver: no services enabled.
Starting periodic command scheduler: crond.
Starting web server: apache2apache2:

C'est tout bon.






Copies d'écrans          Retour en haut

Quelques copies d'écran lors de test d'accès à l'url : http://vweb3.net.sarge:3000 ou http://vweb3.net.sarge/ .  Je n'ai pas fait de copie d'écran pour http://vweb3.net.caen:8000 (cas où l'on n'utilise pas apache) car c'est exactement la même chose.





Liens                         Retour en haut


Redmine

Linux-vserver

Dotdeb Un dépôt fortement conseillé pour bénéficier des dernières versions php, qmail, vpopmail, mysql