Un regard personnel sur le web

Check-list d'installation d'un serveur LAMP Ubuntu chez OVH (Kimsufi)
TACHE COMMENTAIRES COMMANDES

OVH kimsufi La souscription d’un serveur dédié « kimsufi 2G » à 15 euros par mois est une formalité. Le serveur est disponible en moins d’une heure avec le système d’exploitation choisi, en l’occurrence Ubuntu Server 10.4 LTS.

Partitionnement (!) Comme tout le monde, je me suis fait piéger par le partitionnement absurde paramétré par défaut par OVH. Sur le To disponible, 990 Go sont affectés au seul répertoire /home et seulement 10 Go au reste du système de fichier. Autant dire qu’ainsi le répertoire /var explose rapidement. A partir de là, il y a deux solutions: réinstaller le serveur par le portail d’administration en prenant soin cette fois de forcer un partitionnement cohérent ou déplacer le contenu du répertoire /var/www vers /home. C’est cette solution de paresse que j'ai ici choisie.

Backup FTP OVH fournit gracieusement un espace FTP de 100 Go pour les sauvegardes. Il est nécessaire d’aller dans le portail d’administration du serveur pour l’activer.

Gestion des utilisateurs Comme sur le PC de bureau il est une bonne pratique de créer un compte utilisateur d’administration sans autorisation autre que la commande sudo. Pour faire simple je lui ai affecté le même mot de passe qu’à root. ssh -l root 99.99.99.99
passwd
adduser philippe
adduser philippe admin

J’utilise le terminal byobu. byobu; [PF9]
Byobu ne s'exécute actuellement pas à la connexion (activer)
exit
ssh -l philippe 99.99.99.99

Mise à jour générale J’utilise aptitude en mode graphique pour la gestion des paquets Debian. sudo aptitude ; U ; g ; g

Installation de ncftp « ncftp » est utilisé par la suite pour les sauvegardes. sudo aptitude ; / ; ncftp ; + ; g ; g

Installation et personnalisation de apache Les indispensables modules de rewrite et de virtual hosts sont aussitôt ajoutés après l'installation du paquet.
Pour gérer les caches il faut aussi le module expires.
sudo aptitude ; / ; apache2 ; n… ; + ; g ; g
sudo a2enmod expires headers rewrite vhost_alias

Pour cause de partitionnement déséquilibré évoqué précédemment, le répertoire par défaut /var/www va être déplacé en /home/www-data.
Celui-ci sera par la suite peuplé par le user non-root, à partir d’un client FileZilla, en sftp.
Une première page est créée dans le répertoire qui sera associé à l'utilisation de l'adresse IP comme URL.

(Notez pour l'avenir que pour que PHP soit autorisé à créer dynamiquement des pages le owner des arborescences concernées, de type docs/var/, devra être www-data et non le user non-root comme il est fait ici pour docs/.)
cd /etc/home/
sudo mkdir www-data
cd www-data
sudo mkdir logs
sudo mkdir vhosts
cd vhosts
sudo mkdir 99.99.99.99
cd 99.99.99.99
sudo mkdir docs
cd docs
sudo nano index.html
(écrire une page par défaut)
cd /home/
sudo chown -R www-data:www-data www-data
cd www-data/vhosts/99.99.99.99/
sudo chown -R philippe:philippe docs

La mise en œuvre de apache s’appuie ici sur les virtuals hosts. Celle-ci se fait en modifiant la configuration par défaut des sites. La « ligne qui tue » est
  "VirtualDocumentRoot /home/www-data/vhosts/%0/docs" .
Le répertoire du site web est ainsi construit sur la variable %0 qui est son URL : absolument magique !
cd /etc/apache2/sites-available/
sudo mv default default.origine
sudo nano default
(placer ce paramétrage :)
DocumentRoot /home/www-data
<VirtualHost *:80>
  ServerAdmin philippe@gogol.com
  UseCanonicalName Off
  RewriteEngine On
  RewriteLog "/home/www-data/logs/rewrite.log"
  RewriteLogLevel 0
  RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
  RewriteRule ^/(.*) http://%1/$1 [R=301,L]
  VirtualDocumentRoot /home/www-data/vhosts/%0/docs
  <Directory />
    Options FollowSymLinks
    AllowOverride All
  </Directory>
  ScriptAlias /cgi-bin/ /home/www-data/cgi-bin
  <Directory "/home/www-data/cgi-bin">
    AllowOverride None
    Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
    Order allow,deny
    Allow from all
    Allow from all
  </Directory>
  ErrorLog /home/www-data/logs/error.log
  LogLevel warn
  CustomLog /home/www-data/logs/access.log combined
</VirtualHost>

Une mise à jour de Apache2 (2.4) apporte le trouble. D'abord le statement RewriteLog fait Syntax Error : bon, on le supprime !
Ensuite, toutes les pages passent en « 403 Forbidden ». Pour corriger cela il faut déplacer les infos répertoires dans le apache2.conf.
cd /etc/apache2/
sudo nano apache2.conf
(ajouter là où ça va bien :)
<Directory /home/www-data>
  Options Indexes FollowSymLinks
  AllowOverride All
  Require all granted
  DirectoryIndex index.php index.xhtml index.html
</Directory>

Unicode n’est pas le défaut d’installation pour apache. (note apache 2.4 : conf.d devient conf.available et charset devient charset.conf... Bof !) cd /etc/apache2/conf.d/
sudo mv charset charset.origine
sudo nano charset
(placer ce paramétrage :)
AddDefaultCharset UTF-8

A la fin de cette installation, on peut tester apache par l’adresse IP du serveur : http://99.99.99.99 sudo service apache2 restart

Installation de mysql Comme pour Apache, je force l'unicode. sudo aptitude ; / ; mysql-server ; + ; g ; g
cd /etc/mysql/conf.d/
sudo nano philippe.cnf
(placer ce paramétrage :)
# jeu de caracteres utf-8
character-set-server=utf8
skip-character-set-client-handshake

Installation de php Il ne faut pas ajouter les extensions PHP par la commande AddType mais en installant les paquets php5‑xxx correspondants afin de tirer les dépendances nécessaires. sudo aptitude ; / ; php5 ; + ; g ; g
sudo aptitude ; / ; php5-mysql ; + ; g ; g
sudo aptitude ; / ; php5-gd ; + ; g ; g
sudo aptitude ; / ; php5-xsl ; + ; g ; g

Installation de postfix J’ai paramétré le serveur de mail en sorte de n’activer que le strict nécessaire, à savoir :
  1. émettre des mails à partir des applications locales,
  2. router les mails entrants vers un système institutionnel.
Avec cette table des alias les mails adressés à « info@mon‑domain.fr » seront tranférés vers philippe@gogol.com .
sudo aptitude ; / ; postfix ; + ; g ; g
sudo aptitude ; / ; mailutils ; + ; g ; g
sudo postconf -e "mynetworks_style=host"
sudo postconf -e "relay_domain="
sudo postconf -e "mydestination = mon‑domain.fr, \
  ks1234567.kimsufi.com, localhost.kimsufi.com, , localhost"
sudo nano /etc/aliases
(placer un paramétrage comme celui-ci :)
info: philippe@gogol.com
sudo postalias hash:/etc/aliases
sudo service postfix restart

Heure des batchs journaliers Je préfère que les batchs techniques tournent pendant la nuit plutôt que le matin. sudo nano /etc/crontab (remplacer les 6 par 2)

scripts techniques Le répertoire des logs apache ayant bougé il convient de reparamétrer leurs rotations. sudo nano /etc/logrotate.d/www-data (placer ce paramétrage :)
/home/www-data/logs/*.log {
  weekly
  missingok
  rotate 52
  compress
  delaycompress
  notifempty
  create 640 root adm
}

Enfin, pour fixer cette installation, il ne manque plus qu'une automatisation des sauvegardes. En cas de désastre il est possible de demander à ovh une réinstallation du système d'exploitation, d'appliquer de nouveau cette check-list et de restaurer les données pour revenir rapidement à la normale : j'ai testé ! sudo -i
cd /root
mkdir bin
cd bin
touch sauvejour.sh
chmod a-rwx sauvejour.sh
chmod u+rwx sauvejour.sh
nano sauvejour.sh
(placer un paramétrage comme celui-ci :)
#!/bin/bash
## Sauvegardes journalieres
cd /home/backups/
JOUR=`date +"%A"`
rm -Rf $JOUR
mkdir $JOUR
cd $JOUR
## mysql : mabase
mysqldump -umabase -pmotdepasse mabase > mabase.sql
tar -cjf mabase.sql.tar.bz2 mabase.sql
rm mabase.sql
## /etc
tar -cjf etc.tar.bz2 /etc
## /www-data
tar -cjf www-data.tar.bz2 /home/www-data
## /root
tar -cjf root.tar.bz2 /root
## /philippe
tar -cjf philippe.tar.bz2 /home/philippe
## ftp
ncftpput -u ks1234567.kimsufi.com -p XxXxXxXx000 \
  -m ftpback-rbx1-11.ovh.net /$JOUR *
cd /etc/cron.daily/
ln -s /root/bin/sauvejour.sh SAUVERGARDE

Ignition C'est parti mon kiki ! sudo reboot