ownCloud

Il y a de nombreux tutoriels pour installer owncloud un peu partout sur le net. Le mien n’a pas la prétention d’être le plus complet ou pertinent, mais a surtout vocation d’être un mémo et d’aller à l’essentiel.

J’ai installé owncloud sur une VM hébergée sur un serveur de virtualisation et les données sont stockées sur un NAS.

Le serveur tourne avec une Debian 7.7 et la release 7.0.2-1 de owncloud.


Préparation du système

Plusieurs paquets sont prérequis à l’installation de owncloud. J’ai fait le choix d’utiliser sqlite plutôt que MySQL.


aptitude update
aptitude install apache2 php5 php5-common php5-gd php5-sqlite curl libcurl3 libcurl3-dev php5-curl

Il faut ajouter les sources pour récupérer la dernière version de owncloud.


echo 'deb http://download.opensuse.org/repositories/isv:ownCloud:community/Debian_7.0/ /' >> /etc/apt/sources.list.d/owncloud.list

Puis ajouter la clé


wget -qO - http://download.opensuse.org/repositories/isv:ownCloud:community/Debian_7.0/Release.key | apt-key add -


Installation owncloud

Maintenant, on installe owncloud.


apt-get update
apt-get install owncloud

Il y a un certain nombre de paramètres à modifier et de droits à déclarer.

On se positionne dans le répertoire « /var/wwww/owncloud » :


chgrp www-data data -R
chgrp www-data config -R
chgrp www-data apps -R

On customise apache


a2enmod rewrite
a2enmod headers
service apache2 restart

Il faut ensuite accéder à ownCloud depuis l’interface web pour finaliser l’installation. Sur un navigateur web, saisir l’URL « http://IP_du_serveur/owncloud ».

On se laisse guider pour sélectionner la base de données SQLITE et créer un utilisateur « admin ».


Sécurisation des données

Afin de sécuriser les données, elles seront hébergés sur mon NAS (RAID 5). Pour cela, j’ai créé un partage NFS sur mon NAS. Sur le serveur ownCloud, j’ai monté ce partage.

Dans le fichier « /etc/fstab », j’ai ajouté la ligne suivante :


$IP_NAS:$PATH_VOL_NFS /mnt/datacloud nfs user,rw    0       0

Il faut remplacer :
- $IP_NAS par l’adresse IP du NAS
- $PATH_VOL_NF par le chemin du montage NFS

Pour faire les opérations, il est nécessaire de couper le service apache.


service apache2 stop
mkdir /mnt/datacloud
mount /mnt/datacloud
mv /var/www/owncloud/data /mnt/datacloud

Dans le fichier « /var/www/owncloud/config/config.php », il faut mettre à jour la directive datadirectory avec le nouveau PATH


'datadirectory' => '/mnt/datacloud/data',

Il est maintenant possible de redémarrer le service apache. On se connecte sur l’interface WEB pour vérifier que l’accès au cloud de l’admin est toujours présent et accessible.


service apache2 start


Présentation

Plutôt qu’utiliser l’hébergement personnel sur Free, j’ai décidé d’héberger mes sites sur mon propre serveur Web. Pour cela, j’ai créé une nouvelle VM sur mon serveur de virtualisation.

Je détaille ici l’ensemble des opérations et manipulations effectuées à partir d’une fresh install de Debian Wheezy.

S’agissant d’un serveur Web ne disposant pas d’une adresse IP publique, la configuration de celui-ci restera assez sommaire, pour la gestion des différents sites. Le serveur sera accessible via un simple PAT (Port Address Translation) sur le port 80.


Prérequis d’installation

A terme, les arborescences des différents sites seront sur un partage du NAS. Il faudra bien veillez à gérer les droits des utilisateurs, notamment en créant un groupe spécifique. Cette section sera mise à jour lorsque le partage sera effectif et fonctionnel.

L’installation se fait sur un debian Wheezy fraîchement installée et à jour.

J’installe ensuite un certain nombre de paquets nécessaires


aptitude update
aptitude upgrade
aptitude install mysql-server apache2 apache2-mpm-prefork php5 php5-mysql memcached php5-memcached libcache-memcached-perl memcached php5-fpm php-pear sendmail-bin sendmail unzip proftpd
 

A noter que :
- l’installation du paquet apache2-mpm-prefork supprime le paquet apache2-mpm-worker installé par défaut par apache.
- L’installation de mysql-server demande un mot de passe pour le compter superutilisateur
- Memcached est un système pour augmenter la vitesse de réponse des sites web créés à partir de bases de données en stockant les informations en RAM.

Je vérifie que le serveur est maintenant bien en écoute sur le port 80.


tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      0          28886891    4989/apache2
 


Quelques tests

Lors que je lance un test de connexion au serveur en HTTP, j’arrive bien sur la page par défaut du serveur.


It works!

This is the default web page for this server.

The web server software is running but no content has been added, yet.
 

La configuration du site par défaut est déclarée dans le fichier /etc/apache2/sites-enabled/000-default.
Il y est notamment défini un fichier index.html qui est présent dans le dossier /var/www/index.html

Je créé le fichier /var/www/test.php avec le contenu suivant :


		 ?php
		phpinfo();
		?
 

J’ouvre une nouvelle page HTML avec l’URL suivante http://Adresse_IP_Serveur/test.php.
J’accède à une nouvelle page m’affichant le détail de la configuration PHP du serveur.

A priori, à ce niveau tout est fonctionnel. je peux donc continuer.


Configuration de Apache

Un peu coup de tunning sur apache :


a2enmod rewrite
a2enmod deflate
 

La commande a2enmod permet d’activer des modules.

- Le module mod_rewrite permet la réécriture des URLs. Cela permet de faire croire à l’internaute qu’il se trouve sur une page X.php alors que la page réelle est par exemple Z.php?param=X. Cela améliore le référencement dans les moteurs de recherche et augmente légèrement la sécurité des sites Web.

- Le module mod_deflate fournit les filtres DEFLATE permettant à la sortie du serveur d’être compressée avant d’être envoyée au navigateur sur le réseau. Ce qui apporte une économie de bande passante pouvant aller parfois jusqu’à 80%, une légère consommation en plus du processeur ainsi que de la mémoire est à prévoir.


root@web3:/# a2enmod deflate
Module deflate already enabled
root@web3:~# a2enmod rewrite
Enabling module rewrite.
To activate the new configuration, you need to run:
  service apache2 restart
root@web3:~#
root@web3:~#   service apache2 restart
[ ok ] Restarting web server: apache2 ... waiting .
 

Un petit restart d’apache pour finaliser.

On va maintenant loguer les logs PHP.


mkdir /var/log/php
chown www-data /var/log/php
 

Ne pas oublier de changer les droits pour rendre le fichier de logs inscriptible par Apache (user www-data).

Puis éditer le fichier de configuration de PHP « etc/php5/apache2/php.ini »
pour ajouter l’instruction suivante :


error_log = /var/log/php/php_errors.log
 

Il faut gérer la rotation de ce fichier de logs, en créant le fichier « /etc/logrotate.d/php »


/var/log/php/php_errors.log {
 weekly
 missingok
 rotate 4
 notifempty
 create
 }
 

Et un petit restart de apache.


/etc/init.d/apache2 restart
 

Normalement chacun des sites devrait avoir sa propre arborescence dans le répertoire /var/www. Par défaut, c’est ce répertoire qui est racine du site par défaut. On va modifier cette configuration.

Création d’un nouveau dossier qui sera le répertoire du site par défaut


root@web3:/var/www# mkdir default-site
 

On déplace les fichiers index.html et /test.php. dans ce nouveau dossier.


root@web3:/var/www# mv index.html default-site/
root@web3:/var/www# mv test.php default-site/
 

Il faut maintenant mettre à jour le fichier de configuration du site par défaut pour changer les directives documentRoot et Directory avec le nouveau chemin.


root@web3:/var/www# vi /etc/apache2/sites-enabled/000-default
 

Un petit restart de apache pour finaliser la configuration


root@web3:~#   service apache2 restart
[ ok ] Restarting web server: apache2 ... waiting .
 

Des nouveaux tests vers les URL précédemment testées sont toujours OK. Les modifications ont donc bien été prise en compte.


Gestion des vHost

Ou plutôt non-gestion des vHosts… Comme indiqué en préalable, le serveur WEB ne dispose pas d’une interface publique et se trouve derrière une FreeBoite. J’utilise du PAT pour rediriger les flux http vers le serveur. En conséquence, il semble que je peux pas utiliser les vHost pour héberger différents sites.

Du coup, je vais donc créer différents sites dans l’arborescence par défaut. Ainsi sur le Web, chaque site sera accessible par une URL du type « http://Adresse_IP_Serveur/DOSSIER ». Ce n’est pas très sexy…

Sur mon hébergeur DNS (GANDI), je vais mettre en place une redirection web dite transparente.


 test 	transparent 	http://IP_PUBLIQUE/toto
 

Concrètement en tapant dans la barre d’adresse l’URL suivante : http://test.mondomaine.com, c’est comme si je tapais http://IP_PUBLIQUE/toto. Cela me fait arriver sur le dossier toto positionné dans le répertoire « /var/www/default-site/toto » et le fichier index sera lu. Sur la barre adresse du navigateur, il sera affiché http://test.mondomaine.com et non l’IP publique du serveur.

Dans la continuité de ces remarques, il faudra veiller à modifier le fichier index par défaut renvoyé par le serveur pour toutes les connexions arrivant sur le serveur qui seront automatiquement renvoyées sur le vHost par défaut…


Configuration mysql

Il faut maintenant créer la database sur MySQL qui sera utilisée par les différentes instances de WordPress. J’utilise les paramètres suivants :
Username: wordpress
Password: wordpress
Database name: wordpress


# mysql -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 39
Server version: 5.1.41-3ubuntu12.10 (Ubuntu)

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> CREATE DATABASE wordpress;
Query OK, 1 row affected (0.00 sec)

mysql> CREATE USER 'wordpress'@'localhost' IDENTIFIED BY 'wordpress';
Query OK, 0 rows affected (0.00 sec)

mysql> GRANT ALL PRIVILEGES ON wordpress.* to wordpress@localhost;
Query OK, 0 rows affected (0.00 sec)

mysql> quit
Bye
 


Tunning PHP

C’est un peu exagéré de parler de tuning PHP alors qu’un seul paramétre va être changé. :)

Dans le fichier /etc/php5/apache2/php.ini il faut changer la valeur du paramètre « upload_max_filesize » de 2 à 8.


upload_max_filesize = 8M
 


Configuration FTP

J’utilise proftp comme serveur FTP qui est assez simple à configurer. Pour la gestion des ssites et des contenus, il faudra déclarer un user par site et définir le dossier par défaut de cet utilisateur comme étant la racine du dossier web.

La configuration fonctionnelle des utilisateurs est la suivante :


alice:x:20010:10001:,,,:/var/www/default-site/toto:/bin/sh
bob:x:20011:10001:ftp users,,,:/var/www/default-site/titi:/bin/sh
 

A noter les ID élevés de ces comptes pour être sur de pouvoir identifier rapidement ces comptes. Ils sont associés à un groupe nouvellement créé avec un indice élevé lui aussi. Pour pouvoir utiliser ces compte via un client FTP il faut que le shell soit activé. Pas très sécurisé, mais je n’ai pas encore regardé pourquoi cela est nécessaire.

Évidemment il faut aussi ajouter ces user dans le groupe www-data pour qu’ils bénéficient des même droits que l’user www-data.

Incidemment , il ne faut pas oublier de donner la propriété de l’arborescence Web au groupe www-data.


Installation et configuration de WordPress

Le serveur Web étant maintenant fonctionnel, on peut installer WordPress. Il existe la possibilité de gérer du multisite à partir d’une seule interface. Lors de mes précédents tests, ce n’était pas trop concluant, peut-être à cause des problématiques réseau… Du coup, j’installe un WordPress par site et je les gérerai de façon unitaire ; je n’ai pas non plus 36 000 sites. :)

Pour chaque site wordpress que je veux avoir, je créé donc un dossier dans le répertorie par défaut « /var/www/default-site/ » et je crée un utilisateur spécifique.

Je me positionne dans le dossier cible.


cd /var/www/default-site/WP01
wget http://wordpress.org/latest.zip
unzip latest.zip

Un nouveau dossier wordpress est créé et tous les fichiers s’y trouvent. Je déplace tout le contenu à la racine et supprime ensuite le dossier wordpress.

Pour finaliser l’installation il suffit de se loguer sur l’interface Web et de suivre les instructions.

Avec cette méthode, le WordPress est en anglais. Pour le franciser, il faut récupérer la derneire version de WP francisé sur le site http://fr.wordpress.org/

Dans le fichier de configruation « wp-config.php », il faut modifier le paramètre langue.


		define ('WPLANG', '');

Il faut remplacer le contenu par ceci pour passer en français :


		define ('WPLANG', 'fr_FR');

Il reste à copier le dossier « ~/wordpress/wp-content/languages » récupéré dans l’archive dans le dossier « ~/wp-content » du site.

Pour installer un second wordpress, il faut créer un second répertoire dans votre dossier web qui contiendra ce nouveau blog. Ensuite, on copie dans ce second répertoire les fichiers d’une nouvelle installation de WordPress. On récupérer le fichier « wp-config.php » dans le répertoire qui contient le premier blog et on le copie dans le répertoire du second blog.

Il reste à éditer ce fichier pour modifier le préfixe qui sera utilisé dans la base de données pour distinguer les différentes installations WordPress.


/**
* WordPress Database Table prefix.
*
* You can have multiple installations in one database if you give each a unique
* prefix. Only numbers, letters, and underscores please!
*/
$table_prefix  = 'wp_';

Ici, le préfixe de la première installation « wp_ » est remplacé par le préfixe « xp_ ».


/**
* WordPress Database Table prefix.
*
* You can have multiple installations in one database if you give each a unique
* prefix. Only numbers, letters, and underscores please!
*/
$table_prefix  = xp_';

Sources :

http://linuxconfig.org/wordpress-installation-ubuntu-linux-apache-mysql

http://www.dvda.fr/2013/11/04/installer-serveur-web-sous-debian-7-wheezy-lamp/

http://installer-wordpress.blogspot.fr/2012/04/installer-plusieurs-blogs-wordpress-sur.html

http://www.vulgarisation-informatique.com/installer-serveur-lamp-debian.php

http://olange.developpez.com/articles/debian/installation-serveur-dedie/

http://doc.ubuntu-fr.org/installer_un_serveur_debian


Présentation

Pour pouvoir télécharger rapidement les dernières distributions Linux, j’ai voulu installer aMule sur une petite VM tournant sur Debian Wheezy. Ayant un peu galéré à faire l’installation, j’en ai profité pour me faire ce mémo si je dois refaire une installation.


Installation des packages

N’ayant pas d’écran, c’est amuleweb que j’ai installé. Le package amule-daemon tourne en tant que daemon, la gestion se fait par une interface web.


apt-get update
apt-get upgrade
aptitude install  amule-daemon

Il faut ensuite déclarer et configurer le compte utilisateur qui lancera le service amule-daemon. Je spécifie un home différent pour le user amule.


addgroup amule
useradd -g amule amule --home /home/Amule/
mkdir /home/Amule/
chown -R amule:amule /home/Amule/

Avant toute chose, il faut lancer le amule-daemon.


/etc/init.d/amule-daemon start

A chaque étape, il est possible de lancer la commande suivante qui permet de débugger au fur et à mesure.


/etc/init.d/amule-daemon restart && tail -f /mnt/DL/Amule/.aMule/logfile


Configuration amule-daemon

Il reste ensuite à configurer amule-daemon. Il y a deux fichiers à modifier et un à créer. Il faut déclarer générer le hash du mot de passe qui sera utilisé.


echo -n "PASSWORD" | md5sum | cut -d " " -f 1

Le premier fichier à éditer est « amule.conf » dans le dossier « /mnt/DL/Amule/.aMule/ ». Les paramètres à modifier sont les suivants :


[ExternalConnect]
AcceptExternalConnections=1
ECPassword=HASH_PASSWORD

[WebServer]
Enabled=1
Password=HASH_PASSWORD

Le second fichier est « amule-daemon » dans le répertoire « /etc/default/ ». Il faut déclarer l’utilisateur qui va lancer amule-daemon. Il est aussi possible de spécifier le dossier dans lequel seront téléchargées les données.


AMULED_USER="amule"
AMULED_HOME=""

Il reste à créer le dernier fichier de configuration « remote.conf » dans le répertoire courant « .aMule » avec le contenu suivant.


Locale=

[EC]
Host=localhost
Port=4712
Password=esdfsdfsd1cd9b1f6b9182dc4fb2be3a5a

[Webserver]
Port=4711
UPnPWebServerEnabled=0
UPnPTCPPort=50001
#Template=php-default
Template=chicane
UseGzip=0
AllowGuest=0
AdminPassword=esdfsdfsd1cd9b1f6b9182dc4fb2be3a5a
GuestPassword=esdfsdfsd1cd9b1f6b9182dc4fb2be3a5a

Il ne reste plus qu’à lancer amule-daemon et se connecter sur l’interface WEB, sur le port 4711.

Problème récurrent

Régulièrement, et notamment en exécutant aptitude, un message d’erreur, annonçant un problème de configuration de locales s’affichait sur la console.


perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
	LANGUAGE = (unset),
	LC_ALL = (unset),
	LANG = "fr_FR"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory

Ce message d’erreur est apparu suite à une installation groupée de plusieurs paquets et applications. Du coup, je me suis retrouvé incapable de savoir quelle installation avait généré ce problème.

Lorsque je vérifie les locales, je constate qu’il y a effectivement un défaut.


server:~$ locale
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=fr_FR
LANGUAGE=
LC_CTYPE="fr_FR"
LC_NUMERIC="fr_FR"
LC_TIME="fr_FR"
LC_COLLATE="fr_FR"
LC_MONETARY="fr_FR"
LC_MESSAGES="fr_FR"
LC_PAPER="fr_FR"
LC_NAME="fr_FR"
LC_ADDRESS="fr_FR"
LC_TELEPHONE="fr_FR"
LC_MEASUREMENT="fr_FR"
LC_IDENTIFICATION="fr_FR"
LC_ALL=

La reconfiguration des locales ne m’as pas permis de régler le problème.


server:~/Bureau/Post Install/V228$ sudo dpkg-reconfigure locales
Generating locales...
  en_AG.UTF-8... up-to-date
  en_AU.UTF-8... up-to-date
  en_BW.UTF-8... up-to-date
  en_CA.UTF-8... up-to-date
  en_DK.UTF-8... up-to-date
  en_GB.UTF-8... up-to-date
  en_HK.UTF-8... up-to-date
  en_IE.UTF-8... up-to-date
  en_IN.UTF-8... up-to-date
  en_NG.UTF-8... up-to-date
  en_NZ.UTF-8... up-to-date
  en_PH.UTF-8... up-to-date
  en_SG.UTF-8... up-to-date
  en_US.UTF-8... up-to-date
  en_ZA.UTF-8... up-to-date
  en_ZW.UTF-8... up-to-date
  fr_BE.UTF-8... up-to-date
  fr_CA.UTF-8... up-to-date
  fr_CH.UTF-8... up-to-date
  fr_FR.UTF-8... up-to-date
  fr_LU.UTF-8... up-to-date
Generation complete.

Résolution temporaire

Dans un premier temps, la commande suivante a permis de régler le problème :


export LC_ALL=fr_FR.UTF-8

Jusqu’à ce que je me rende compte qu’au redémarrage de l’ordinateur, j’avais à nouveau le même problème… Rageant…


Nouvelle résolution

J’ai tenté la réinstallation du pack de langage Français.


sudo apt-get install --reinstall language-pack-fr

Il m’avait semblé que cette fois c’était la bonne. Et au redémarrage de l’ordinateur, j’avais toujours ce problème de locales !!! Doublement rageant !


Résolution permanente

C’est sur un forum anglophone dédié à Debian que j’ai trouvé ce qui semble être la bonne méthode.


Server:/usr/lib/locale$ sudo locale-gen fr_FR
Generating locales...
  fr_FR.ISO-8859-1... done
Generation complete.

Et cette fois la commande locale m’affiche une configuration correcte, toujours présente au reboot de l’ordinateur.


server:/usr/lib/locale$ locale
LANG=fr_FR
LANGUAGE=
LC_CTYPE="fr_FR"
LC_NUMERIC="fr_FR"
LC_TIME="fr_FR"
LC_COLLATE="fr_FR"
LC_MONETARY="fr_FR"
LC_MESSAGES="fr_FR"
LC_PAPER="fr_FR"
LC_NAME="fr_FR"
LC_ADDRESS="fr_FR"
LC_TELEPHONE="fr_FR"
LC_MEASUREMENT="fr_FR"
LC_IDENTIFICATION="fr_FR"
LC_ALL=

J’ai indiqué sur l’article les principales opérations que j’avais testé, car cela pourra toujours servir à quelqu’un d’autre et résoudre de façon définitive son problème.

Objectif

Un dépôt est un serveur qui contient des paquets logiciels ou librairies. Un dépôt permet de réaliser des installations et des mises à jour simplement via Internet et de disposer des dernières versions des logiciels. Un miroir local est une copie conforme des dépôts Débian en… « local ». Ces dépôts peuvent être les dépôts officiellement maintenus par Debian, ou des dépôts de contributeurs et/ou non-officiels.

J’ai mis en place un dépôt local sur notre réseau, afin de disposer d’un miroir des dépôts Débian qui sera accessible à l’ensemble de nos serveurs, quelles que soit la version de Debian installée. Les serveurs du réseau local n’auront plus besoin d’aller sur Internet pour récupérer les paquets d’installation ou de mises à jour, puisqu’ils les récupèreront directement sur le miroir local.

Le déploiement d’un dépôt sur notre réseau local répondait à plusieurs contraintes et objectifs :

  • Dans le cadre d’une sécurisation de notre réseau, nous allons brider les accès extérieurs pour nos serveurs. Il est donc nécessaire de disposer d’une solution pour continuer à pouvoir télécharger les paquets et les mises à jour.
  • Limiter la consommation de bande passante sur le lien IP.
  • Disposer d’un « dépôt » figé pour l’ensemble de nos serveurs Débian.
  • Télécharger les paquets plus rapidement.

La méthode décrite ci-dessous, n’est pas la méthode officielle de création et de mise à jour d’un miroir. Mais il s’agit d’une méthode simple à mettre en œuvre et à utiliser pour un dépôt local.

Biblio

Pour la création de cette documentation, j’ai retrouvé de la documentation sur différents sites. Voici les principaux sites fournissant une documentation riche et intéressante. Elles concernent d’une part les informations pour créer des miroirs locaux, et d’autre part la mise à jour des systèmes à partir de ces dépôts.

Documentations sur la création de miroir locaux :

Documentation pour la mise à jour de distributions :

Installation du miroir

La mise en place du dépôt local, il faut un serveur Debian, à jour, avec un espace disque suffisant et d’un accès à Internet avec une bonne bande passante.

Il faut installer les paquets apache2 et apt-mirror pour installer le repository.

root@depot:~# apt-get update
root@depot:~# apt-get install apt-mirror

Il faut ensuite créer l’arborescence où les fichiers du dépôt seront copiés. J’ai choisi de créer un dossier au nom explicite dans l’arborescence « /var/ ».Dans ce répertoire, il y a trois nouveaux dossiers à créer : « mirror, skel et var ».

root@depot:~# cd /var/
root@depot:/var# mkdir debian-mirror
root@depot:/var# cd debian-mirror/
root@depot:/var/debian-mirror# mkdir mirror skel var


Configuration apt-mirror


Édition du fichier de configuration de apt-mirror

Il faut ensuite éditer le fichier de configuration pour configurer le dépôt local qui sera créé en tant que miroir des dépôts officiels. Le fichier de configuration d’apt-mirror est « /etc/apt/mirror.list ». Le fichier est composé de trois parties :

  • Définition des options de l’application apt-mirror
  • Liste des dépôts à synchroniser
  • Une option de « nettoyage ».
root@depot:/var# vi /etc/apt/mirror.list


Configuration apt-mirror

Dans la première section il faut définir le dossier, et son arborescence, où seront copiés l’ensemble des fichiers des dépôts.

Ensuite, dans la seconde section, il faut définir le type d’architecture pour le(s)quel(s) on souhaite créer le dépôt. Sur notre réseau l’ensemble de nos serveurs ont une architecture de type i386, il n’est donc pas nécessaire de récupérer les versions de Debian pour les autres types d’architecture.

Enfin, dans la troisième section, il faut définir le nombre de thread simultanés pour le téléchargement des fichiers du dépôt. Le nombre de thread est à moduler en fonction des performances de l’accès Internet

############# config ##################

set base_path    /var/debian-mirror
set mirror_path  $base_path/mirror
set skel_path    $base_path/skel
set var_path     $base_path/var
# set cleanscript $var_path/clean.sh
# set postmirror_script $var_path/postmirror.sh
# set run_postmirror 0
set defaultarch i386
set nthreads 20
set _tilde 0

############# end config ##############


Définition des dépôts à synchroniser

Comme sur le réseau, il y a encore des serveurs qui tournent sur différentes versions de Debian (Etch, Lenny et Squeeze), il a fallut définir les dépôts pour ces trois distributions.

#############ETCH ##############
deb http://archive.debian.org/debian/ etch contrib main non-free
deb-src http://archive.debian.org/debian/ etch contrib main non-free

#############LENNY ##############
deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free
deb http://security.debian.org/ lenny/updates main contrib non-free
deb-src http://security.debian.org/ lenny/updates main contrib non-free
deb http://volatile.debian.org/debian-volatile lenny/volatile main
deb-src http://volatile.debian.org/debian-volatile lenny/volatile main

#############SQUEEZE ##############
deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
deb http://www.debian-multimedia.org squeeze main non-free
deb-src http://mirror.home-dn.net/debian-multimedia squeeze main
deb http://security.debian.org/ squeeze/updates main contrib non-free
deb-src http://security.debian.org/ squeeze/updates main contrib non-free
deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free


Activation des scripts de nettoyage

Il est possible d’activer un script de nettoyage après la synchronisation des dépôts .

clean http://security.debian.org/
clean http://volatile.debian.org/debian-volatile
clean http://ftp.fr.debian.org/debian/


Création du dépôt


Synchronisation des dépôts

La commande apt-mirror lance la synchronisation des dépôts.

root@depot:/var/debian-mirror# apt-mirror
Downloading 66 index files using 4 threads...
Begin time: Tue Mar 15 11:35:44 2011
[4]...	[3]... [2]... [1]... [0]...
End time: Tue Mar 15 11:35:50 2011
Proceed indexes: [SSSPPP]
62.0 GiB will be downloaded into archive
Downloading 73537 archive files using 4 threads...
Begin time: Tue Mar 15 11:36:03 2011


Synchronisation des dépôts

Maintenant que les fichiers sont bien copiés sur le dépôt, il faut le rendre accessible aux serveurs du réseau. Lors d’une mise à jour ou une installation, la récupération des paquets se fait par http, ou éventuellement par TFP. Il faut donc déployer un serveur Web pour permettre l’accès au dépôt.

Si cela n’a pas encore déjà été fait, il faut donc installer un serveur apache.

root@depot:/# aptitude install apache2

En faisant au plus simple, il suffit de déclarer la racine de l’arborescence à utiliser pour le nouveau site web. La configuration se fait sur le fichier « /etc/apache2/sites-enabled/000-default ».

Dans la première section du fichier, il faut déclarer l’arborescence du site Web.

<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/debian-mirror
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/debian-mirror/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>

Après avoir sauvegardé les modifications, il faut relancer le serveur apache.

root@depot:/# /etc/init.d/apache2 reload

On peut vérifier que le site est bien en accessible en se connectant au serveur via un navigateur.


Utilisation du dépôt local


Configuration des sources

Il faut maintenant modifier le fichier des sources à utiliser par aptitude pour télécharger les paquets d’installation et de mises à jour, en éditant le fichier sources.list.

deb01:~# vi /etc/apt/sources.list

Il faut commenter toutes les entrées correspondants à des dépôts sur Internet et saisir les nouveaux dépôts locaux.

deb http://10.100.0.98/debian/mirror/ftp.fr.debian.org/debian/ squeeze main contrib non-free
deb-src http://10.100.0.98/debian/mirror/ftp.fr.debian.org/debian/ squeeze main contrib non-free
deb http://10.100.0.98/debian/mirror/security.debian.org/ squeeze/updates main contrib non-free
deb-src http://10.100.0.98/debian/mirror/security.debian.org/ squeeze/updates main contrib non-free
deb http://10.100.0.98/debian/mirror/ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
deb-src http://10.100.0.98/debian/mirror/ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
deb http://10.100.0.98/debian/mirror/www.debian-multimedia.org squeeze main non-free
deb-src http://10.100.0.98/debian/mirror/www.debian-multimedia.org squeeze main


Mises à jour des paquets

Il ne reste maintenant qu’à lancer l’update sur le serveur client pour mettre à jour les index des parquets disponibles.

deb:~# apt-get update
deb:~# aptitude update

L’update terminée, il est possible de lancer ensuite un upgrade pour lancer la mise à jour des paquets installés, ou un dist-upgrade pour mettre à la jour la distribution installée.

deb:~# apt-get upgrade
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances
Lecture des informations d'état... Fait
...
Les paquets suivants seront mis à jour :
exim4 exim4-base exim4-config exim4-daemon-light linux-image-2.6.26-2-686 linux-libc-dev tzdata
7 mis à jour, 0 nouvellement installés, 0 à enlever et 6 non mis à jour.
Il est nécessaire de prendre 23,7Mo dans les archives.
Après cette opération, 877ko d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ?


Mise à jour de la distribution

Il est aussi possible de lancer la mise à jour de la distribution installée (ici une Lenny). On commence par lancer un update, puis on lance l’upgrade de la distribution.

deb:~# apt-get update
…
deb:~# cat /etc/debian_version
5.0.8
deb:~# apt-get dist-upgrade
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances
Lecture des informations d'état... Fait
Calcul de la mise à jour... Fait
...
6 mis à jour, 2 nouvellement installés, 2 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 1133ko dans les archives.
Après cette opération, 36,9ko d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ?

Il faut ensuite éditer le ficher de sources pour que les nouveaux dépôts utilisés soient ceux de squeeze.

deb:~# vi /etc/apt/sources.list
deb http://fronto/mirror/ftp.fr.debian.org/debian/ squeeze main contrib non-free
deb-src http://fronto/mirror/ftp.fr.debian.org/debian/ squeeze main contrib non-free

Et il faut à nouveau relancer un apt-get udpate pour télécharger la liste des paquets de la nouvelle version un apt-get dist-upgrade pour lancer la mise à jour. Il est possible qu’il faille relancer la commande plusieurs fois, jusqu’à ce que la mise à jour soit réalisée sans erreurs. L’ensemble de la msie à jour peut prendre un certain temps.

deb:~# apt-get update
Réception de : 1 http://depot squeeze Release.gpg [1671B]
Ign http://depot squeeze/main Translation-fr
Ign http://depot squeeze/contrib Translation-fr
Ign http://depot squeeze/non-free Translation-fr
Réception de : 2 http://depot squeeze Release [69,3kB]
Réception de : 3 http://depot squeeze/main Packages [8631kB]<
Réception de : 4 http://depot squeeze/contrib Packages [65,6kB
Réception de : 5 http://depot squeeze/non-free Packages [131kB]
Réception de : 6 http://depot squeeze/main Sources [4822kB]
Réception de : 7 http://depot squeeze/contrib Sources [40,0kB]
Réception de : 8 http://depot squeeze/non-free Sources [74,3kB]
13,8Mo réceptionnés en 7s (1922ko/s)
Lecture des listes de paquets... Fait
deb:~#
deb:~# cat /etc/debian_version
5.0.8
deb:~# apt-get dist-upgrade
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances
Lecture des informations d'état... Fait
Calcul de la mise à jour... Fait
Les paquets suivants seront ENLEVÉS :
libept0 libxcb-xlib0 mysql-server mysql-server-5.0
Les NOUVEAUX paquets suivants seront installés :
…
241 mis à jour, 75 nouvellement installés, 4 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 198Mo dans les archives.
Après cette opération, 153Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ?
...
198Mo réceptionnés en 25s (7826ko/s)
...
deb-Nessus:~# apt-get update
...
deb:~# apt-get upgrade
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.
deb:~# cat /etc/debian_version
6.0

La mise s'est bien déroulée, le serveur est maintenant sur la distribution Lenny. A noter que le téléchargement des paquets nécessaires à cette mise à jour a duré 25 secondes pour 198 Mo à télécharger.


Configuration spécifique du dépôt multimédia

La mise des paquets du dépôt multimédia nécessite de mettre à jour la clé PGP pour ce dépôt. L'opération est à réaliser sur les serveurs qui doivent récupérer des paquets sur le dépôt multimédia.

A la fin de l'exécution de la commande « aptitude update »; un message d'erreur indique une erreur PGP.

deb-Nessus:~# aptitude update
...
199 o téléchargés en 0s (911 o/s)
W: Erreur de GPG : http://10.100.0.98 squeeze Release : Les signatures suivantes n'ont pas pu être vérifiées car la clé publique n'est pas disponible : NO_PUBKEY 07DC563D1F41B907

Il est nécessaire d'installer cette clé à l'aide des commandes suivantes, en indiquant la clé fourni dans le message d'erreur. Ces commandes nécessitent que le serveur dispose d'un accès à Internet.

deb-Nessus:~# gpg --keyserver pgpkeys.mit.edu --recv-key 07DC563D1F41B907
gpg: requête de la clé 1F41B907 du serveur hkp pgpkeys.mit.edu
gpg: clé 1F41B907: clé publique « Christian Marillat <marillat@debian.org> » importée
gpg: aucune clé de confiance ultime n'a été trouvée
gpg: Quantité totale traitée: 1
gpg: importée: 1
deb-Nessus:~# gpg -a --export 07DC563D1F41B907 | apt-key add -
OK
deb-Nessus:~#