« Ftpsync » : différence entre les versions
(Page créée avec « Category:miroir_apt La réalisation d'un miroir de dépôts pour le gestionnaire de paquet APT peut se faire de différentes manières. Personnellem... ») |
(Ajout d'une référence à "Rsyncd" + correction de fautes d'orthographe.) |
||
(2 versions intermédiaires par le même utilisateur non affichées) | |||
Ligne 3 : | Ligne 3 : | ||
La réalisation d'un miroir de dépôts pour le gestionnaire de paquet [[:Category:apt|APT]] peut se faire de différentes manières. Personnellement, j'ai beaucoup utilisé [[apt-mirror|APT-mirror]] qui permet de ne récupérer qu'une partie d'un dépôt distant. Seulement cette solution souffre de trop nombreux problèmes liés à une synchronisation erratique causant régulièrement des erreurs sur les clients. Afin de bénéficier d'une solution stable, il est plus sûr de passer à la méthode préconisée (et utilisée) par le [https://www.debian.org/mirror/ftpmirror projet Debian] : ''ftpsync''. | La réalisation d'un miroir de dépôts pour le gestionnaire de paquet [[:Category:apt|APT]] peut se faire de différentes manières. Personnellement, j'ai beaucoup utilisé [[apt-mirror|APT-mirror]] qui permet de ne récupérer qu'une partie d'un dépôt distant. Seulement cette solution souffre de trop nombreux problèmes liés à une synchronisation erratique causant régulièrement des erreurs sur les clients. Afin de bénéficier d'une solution stable, il est plus sûr de passer à la méthode préconisée (et utilisée) par le [https://www.debian.org/mirror/ftpmirror projet Debian] : ''ftpsync''. | ||
Cette outil permet de cloner un dépôt via l'utilitaire [[Rsync]], ce qui est beaucoup plus sérieux que les requêtes ''GET HTTP'' d{{'}}''APT-mirror''. Il faut cependant prendre en compte que ''ftpsync'' ne permet pas de sélectionner une partie des branches d'un dépôt. Sa granularité s’arrête aux architectures processeur. Ainsi, il est seulement possible de ne choisir de copier que certaines architectures et non de prendre uniquement la branche ''stable'' par exemple. Si vous désirez bénéficier d'une synchronisation ''Rsync'' tout en profitant d'une granularité au niveau des branches, il faudra vous tourner vers [[debmirror]] (recommandé par ''Debian'' si vous ne voulez pas faire un clone de leur dépôt). | Cette outil permet de cloner un dépôt via l'utilitaire [[Rsync]], ce qui est beaucoup plus sérieux que les requêtes ''GET HTTP'' d{{'}}''APT-mirror''. Il faut cependant prendre en compte que ''ftpsync'' ne permet pas de sélectionner une partie des branches d'un dépôt. Sa granularité s’arrête aux architectures processeur. Ainsi, il est seulement possible de ne choisir de copier que certaines architectures et non de prendre uniquement la branche ''stable'' par exemple. Si vous désirez bénéficier d'une synchronisation ''Rsync'' tout en profitant d'une granularité au niveau des branches, il faudra vous tourner vers [[debmirror]] (recommandé par ''Debian'' si vous ne voulez pas faire un clone complet de leur dépôt). | ||
En outre, l'espace disque nécessaire à un miroir réalisé avec cet outil est à prendre en compte. À titre d'exemple, un test effectué le 20 décembre 2020 avec les dépôts ''debian'' et ''debian-security'' en ''amd64'' a occupé 358Go de données (qu'il faudra presque doublé si vous y ajoutez l{{'}}''i386''). Vous pouvez vous faire une idée en avance de phase de la taille requise via le [https://www.debian.org/mirror/size tableau] mis à jour régulièrement par le projet ''Debian'' | En outre, l'espace disque nécessaire à un miroir réalisé avec cet outil est à prendre en compte. À titre d'exemple, un test effectué le 20 décembre 2020 avec les dépôts ''debian'' et ''debian-security'' en ''amd64'' a occupé 358Go de données (qu'il faudra presque doublé si vous y ajoutez l{{'}}''i386''). Vous pouvez vous faire une idée en avance de phase de la taille requise via le [https://www.debian.org/mirror/size tableau] mis à jour régulièrement par le projet ''Debian''. Gardez toutefois en tête que vous n'avez généralement besoin que des dépôts cités précédemment et non de la totalité du miroir (les besoins réelles en seront donc amoindris). | ||
=Installation et préparation= | =Installation et préparation= | ||
==Installation des outils== | |||
'''Installation des dépendances''' | '''Installation des dépendances''' | ||
apt install --no-install-recommends rsync apache2 | apt install --no-install-recommends rsync apache2 | ||
Ligne 17 : | Ligne 17 : | ||
'''Téléchargement du script ''ftpsync''''' | '''Téléchargement du script ''ftpsync''''' | ||
wget -qO- https://ftp-master.debian.org/ftpsync.tar.gz | tar xzvf - -C /opt --transform 's/^distrib/ftpsync/' && chown -R ftpsync:ftpsync /opt/ftpsync | wget -qO- https://ftp-master.debian.org/ftpsync.tar.gz | tar xzvf - -C /opt --transform 's/^distrib/ftpsync/' && chown -R ftpsync:ftpsync /opt/ftpsync | ||
''Note : le fichier utilisé pour cette documentation est mis en cache [https://{{SERVERNAME}}/fichiers/apt/ftpsync/ftpsync.tar.gz ici].'' | |||
{{info|''ftpsync'' est présent dans les dépôts ''Debian'' mais impose des dépendances inutiles alors qu'il ne s'agit que d'un [[script bash|script Bash]]... Le télécharger depuis le site officiel permet de garder un système minimaliste. Cela nous permet d'effectuer un [[Compression de données|tar]] [https://unix.stackexchange.com/questions/85194/how-to-download-an-archive-and-extract-it-without-saving-the-archive-to-disk stylé] par la même.}} | {{info|''ftpsync'' est présent dans les dépôts ''Debian'' mais impose des dépendances inutiles alors qu'il ne s'agit que d'un [[script bash|script Bash]]... Le télécharger depuis le site officiel permet de garder un système minimaliste. Cela nous permet d'effectuer un [[Compression de données|tar]] [https://unix.stackexchange.com/questions/85194/how-to-download-an-archive-and-extract-it-without-saving-the-archive-to-disk stylé] par la même.}} | ||
Ligne 22 : | Ligne 24 : | ||
'''Création des répertoires d'accueil''' | '''Création des répertoires d'accueil''' | ||
mkdir -p /var/www/dépôts/{debian,debian-security} /var/log/ftpsync/ | mkdir -p /var/www/dépôts/{debian,debian-security} /var/log/ftpsync/ | ||
= | {{attention|Le script ''ftpsync'' vérifie (pour une raison qui m'échappe) la résolution du nom d'hôte du fichier <source lang="bash" inline>/etc/hostname</source> dans <source lang="bash" inline>/etc/hosts</source>. Il faut donc une entrée résolevable du style <source lang="bash" inline>127.0.1.1 CONTENU_DE_VOTRE_FICHIER_hostname</source> dans celui-ci pour que le script se lance.}} | ||
==Configuration d'Apache== | |||
'''Création de l'hôte virtuel''' | |||
vim /etc/apache2/sites-available/ftpsync.conf | |||
<source lang="apache"> | |||
<VirtualHost *:80> | |||
ServerAdmin webmaster@localhost | |||
DocumentRoot /var/www/dépôts/ | |||
<Directory /> | |||
Options FollowSymLinks | |||
AllowOverride none | |||
Order allow,deny | |||
Allow from all | |||
</Directory> | |||
ErrorLog ${APACHE_LOG_DIR}/error-ftpsync.log | |||
CustomLog ${APACHE_LOG_DIR}/access-ftpsync.log combined | |||
</VirtualHost> | |||
</source> | |||
'''Désactivation de l'hôte virtuel par défaut''' | |||
a2dissite 000-default.conf | |||
'''Activation du nouveau et rechargement du service''' | |||
a2ensite ftpsync.conf | |||
systemctl reload apache2.service | |||
==Configuration de ftpsync== | |||
L'outil a besoin d'un fichier de configuration par dépôt à synchroniser. Nous en créerons donc deux : un pour le dépôt ''debian'', l'autre pour ''debian-security'', le tout en ''amd64''. | L'outil a besoin d'un fichier de configuration par dépôt à synchroniser. Nous en créerons donc deux : un pour le dépôt ''debian'', l'autre pour ''debian-security'', le tout en ''amd64''. | ||
vim /opt/ftpsync/etc/ftpsync-debian.conf | |||
<source lang="bash"> | <source lang="bash"> | ||
# Répertoire de destination | # Répertoire de destination | ||
TO="/var/www/dépôts/debian/" | TO="/var/www/dépôts/debian/" | ||
Ligne 43 : | Ligne 77 : | ||
# Emplacement des journaux | # Emplacement des journaux | ||
LOGDIR=/var/log/ftpsync/ | LOGDIR=/var/log/ftpsync/ | ||
</source> | </source> | ||
vim /opt/ftpsync/etc/ftpsync-debian-security.conf | |||
<source lang="bash"> | |||
# Répertoire de destination | |||
TO="/var/www/dépôts/debian-security/" | |||
# Adresse du dépôt distant | |||
RSYNC_HOST=ftp.fr.debian.org | |||
# Répertoire distant du dépôt | |||
RSYNC_PATH="debian-security" | |||
# Architecture à synchroniser | |||
ARCH_INCLUDE=amd64 | |||
# Emplacement des journaux | |||
LOGDIR=/var/log/ftpsync/ | |||
</source> | |||
chown -R ftpsync:ftpsync /var/www/dépôts/{debian,debian-security} /var/log/ftpsync/ | |||
=Synchronisation du miroir= | |||
Comme vous pouvez vous en douter, cette étape va prendre du temps. Le serveur ''ftp.fr.debian.org'' a un débit dépassant rarement les 10Mo/s donc cela prendra plusieurs heures même si votre connexion Internet vous permet plus. | |||
'''Dépôt debian''' | |||
su - ftpsync -c '/opt/ftpsync/bin/ftpsync sync:archive:debian' | |||
'''Dépôt debian-security''' | |||
su - ftpsync -c '/opt/ftpsync/bin/ftpsync sync:archive:debian-security' | |||
{{attention|Un <source lang="bash" inline><ctrl></source>+<source lang="bash" inline><c></source> ne termine pas le processus mais juste la commande <source lang="bash" inline>su</source>. Usez de la commande <source lang="bash" inline>kill</source> si vous devez interrompre l'opération.}} | |||
Votre miroir est prêt à servir des clients. Il va désormais falloir automatiser sa synchronisation. | |||
Il peut être utile de permettre à d'autres serveur de se synchroniser au notre, pour se faire, il convient de mettre en place un démon [[Rsync#Rsyncd|Rsyncd]]. | |||
=Automatisation= | |||
La méthode recommandée passe par le programme [[Cron]]. Il faut savoir que les dépôts Debian se mettent à jour 4 fois par jours. Nous appliquons donc la même stratégie avec un décalage de 10 minutes entres ceux à synchroniser de notre coter. | |||
'''Création de la crontab''' | |||
crontab -e -u ftpsync | |||
<source lang="bash"> | |||
00 4,10,16,22 * * * /opt/ftpsync/bin/ftpsync sync:archive:debian 2>&1 | |||
10 4,10,16,22 * * * /opt/ftpsync/bin/ftpsync sync:archive:debian-security 2>&1 | |||
</source> | |||
=Sources= | |||
* https://www.debian.org/mirror/ftpmirror | |||
* https://korben.info/creer-depot-miroir-debian.html |
Dernière version du 26 décembre 2020 à 19:52
La réalisation d'un miroir de dépôts pour le gestionnaire de paquet APT peut se faire de différentes manières. Personnellement, j'ai beaucoup utilisé APT-mirror qui permet de ne récupérer qu'une partie d'un dépôt distant. Seulement cette solution souffre de trop nombreux problèmes liés à une synchronisation erratique causant régulièrement des erreurs sur les clients. Afin de bénéficier d'une solution stable, il est plus sûr de passer à la méthode préconisée (et utilisée) par le projet Debian : ftpsync.
Cette outil permet de cloner un dépôt via l'utilitaire Rsync, ce qui est beaucoup plus sérieux que les requêtes GET HTTP d'APT-mirror. Il faut cependant prendre en compte que ftpsync ne permet pas de sélectionner une partie des branches d'un dépôt. Sa granularité s’arrête aux architectures processeur. Ainsi, il est seulement possible de ne choisir de copier que certaines architectures et non de prendre uniquement la branche stable par exemple. Si vous désirez bénéficier d'une synchronisation Rsync tout en profitant d'une granularité au niveau des branches, il faudra vous tourner vers debmirror (recommandé par Debian si vous ne voulez pas faire un clone complet de leur dépôt).
En outre, l'espace disque nécessaire à un miroir réalisé avec cet outil est à prendre en compte. À titre d'exemple, un test effectué le 20 décembre 2020 avec les dépôts debian et debian-security en amd64 a occupé 358Go de données (qu'il faudra presque doublé si vous y ajoutez l'i386). Vous pouvez vous faire une idée en avance de phase de la taille requise via le tableau mis à jour régulièrement par le projet Debian. Gardez toutefois en tête que vous n'avez généralement besoin que des dépôts cités précédemment et non de la totalité du miroir (les besoins réelles en seront donc amoindris).
Installation et préparation
Installation des outils
Installation des dépendances
apt install --no-install-recommends rsync apache2
Création d'un utilisateur dédié à la synchronisation
useradd --system --home-dir /opt/ftpsync/ --user-group ftpsync
Téléchargement du script ftpsync
wget -qO- https://ftp-master.debian.org/ftpsync.tar.gz | tar xzvf - -C /opt --transform 's/^distrib/ftpsync/' && chown -R ftpsync:ftpsync /opt/ftpsync
Note : le fichier utilisé pour cette documentation est mis en cache ici.
INFORMATION
ftpsync est présent dans les dépôts Debian mais impose des dépendances inutiles alors qu'il ne s'agit que d'un script Bash... Le télécharger depuis le site officiel permet de garder un système minimaliste. Cela nous permet d'effectuer un tar stylé par la même.Création des répertoires d'accueil
mkdir -p /var/www/dépôts/{debian,debian-security} /var/log/ftpsync/
ATTENTION
Le script ftpsync vérifie (pour une raison qui m'échappe) la résolution du nom d'hôte du fichier/etc/hostname
dans /etc/hosts
. Il faut donc une entrée résolevable du style 127.0.1.1 CONTENU_DE_VOTRE_FICHIER_hostname
dans celui-ci pour que le script se lance.Configuration d'Apache
Création de l'hôte virtuel
vim /etc/apache2/sites-available/ftpsync.conf
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/dépôts/
<Directory />
Options FollowSymLinks
AllowOverride none
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error-ftpsync.log
CustomLog ${APACHE_LOG_DIR}/access-ftpsync.log combined
</VirtualHost>
Désactivation de l'hôte virtuel par défaut
a2dissite 000-default.conf
Activation du nouveau et rechargement du service
a2ensite ftpsync.conf systemctl reload apache2.service
Configuration de ftpsync
L'outil a besoin d'un fichier de configuration par dépôt à synchroniser. Nous en créerons donc deux : un pour le dépôt debian, l'autre pour debian-security, le tout en amd64.
vim /opt/ftpsync/etc/ftpsync-debian.conf
# Répertoire de destination
TO="/var/www/dépôts/debian/"
# Adresse du dépôt distant
RSYNC_HOST=ftp.fr.debian.org
# Répertoire distant du dépôt
RSYNC_PATH="debian"
# Architecture à synchroniser
ARCH_INCLUDE=amd64
# Emplacement des journaux
LOGDIR=/var/log/ftpsync/
vim /opt/ftpsync/etc/ftpsync-debian-security.conf
# Répertoire de destination
TO="/var/www/dépôts/debian-security/"
# Adresse du dépôt distant
RSYNC_HOST=ftp.fr.debian.org
# Répertoire distant du dépôt
RSYNC_PATH="debian-security"
# Architecture à synchroniser
ARCH_INCLUDE=amd64
# Emplacement des journaux
LOGDIR=/var/log/ftpsync/
chown -R ftpsync:ftpsync /var/www/dépôts/{debian,debian-security} /var/log/ftpsync/
Synchronisation du miroir
Comme vous pouvez vous en douter, cette étape va prendre du temps. Le serveur ftp.fr.debian.org a un débit dépassant rarement les 10Mo/s donc cela prendra plusieurs heures même si votre connexion Internet vous permet plus.
Dépôt debian
su - ftpsync -c '/opt/ftpsync/bin/ftpsync sync:archive:debian'
Dépôt debian-security
su - ftpsync -c '/opt/ftpsync/bin/ftpsync sync:archive:debian-security'
ATTENTION
Un<ctrl>
+<c>
ne termine pas le processus mais juste la commande su
. Usez de la commande kill
si vous devez interrompre l'opération.Votre miroir est prêt à servir des clients. Il va désormais falloir automatiser sa synchronisation.
Il peut être utile de permettre à d'autres serveur de se synchroniser au notre, pour se faire, il convient de mettre en place un démon Rsyncd.
Automatisation
La méthode recommandée passe par le programme Cron. Il faut savoir que les dépôts Debian se mettent à jour 4 fois par jours. Nous appliquons donc la même stratégie avec un décalage de 10 minutes entres ceux à synchroniser de notre coter.
Création de la crontab
crontab -e -u ftpsync
00 4,10,16,22 * * * /opt/ftpsync/bin/ftpsync sync:archive:debian 2>&1
10 4,10,16,22 * * * /opt/ftpsync/bin/ftpsync sync:archive:debian-security 2>&1