Créer un serveur FTP
De quoi s'agit-il ?
FTP (File Transfert Protocol) est un protocole standard de transfert de fichier. Pour l'utiliser, il faut un client FTP, comme Filezilla (mais un navigateur internet suffit). Pour que cela fonction il faut que le serveur distant soit lui-même configuré en serveur FTP.
Dans cet article, il s'agit de créer un serveur FTP pour exposer le répertoire public d'un site Web. En effet, un site web doit être fréquemment mis à jour et il est rare d'utiliser un éditeur HTML directement dur le serveur. La plupart du temps, les pages Web sont crées sur un PC de bureau puis transférées via FTP sur le répertoire racine du serveur Web, le répertoire /var/www/pub en l’occurrence.
Pré-requis
Bien que le protocole FTP soit utilisable dans de nombreux contextes, l'exemple de cet article est de permettre d'accéder au répertoire /var/www/pub considéré comme racine du serveur Web du cluster. Mais on pourrait atteindre un but équivalent sur le répertoire /var/www d'un serveur Apache fonctionnant seul en dehors du cluster.
Dans le cas d'un fonctionnement en cluster avec ClusterHat, il est nécessaire de vérifier quelques pré-requis :
Dans le cas d'un fonctionnement en cluster avec ClusterHat, il est nécessaire de vérifier quelques pré-requis :
- Cela suppose qu'un serveur Apache a été installé sur au moins un serveur esclave du cluster (slave02 dans l'exemple). Consulter l'article intitulé "Créer un serveur Web".
- Cela suppose également que le répertoire /var/www/pub est partagé via NSF. Consulter l'article intitulé "Partager un dossier par NFS".
- Cela suppose bien sûr que le répertoire /var/www/pub est monté sur chacun des serveurs Web du cluster dans le répertoire racine de celui-ci (/var/www/html). Consulter l'article intitulé "Monter un dossier distant via NFS".
- Cela suppose enfin que l'équilibrage de charge entre les serveurs Web du cluster soit opérationnel à travers un proxy installé sur le contrôleur du cluster. Consulter l'article intitulé "Haute disponibilité et équilibrage de charge avec ClusterHAT".
Installer FTP sur Rasbian
Il existe plusieurs paquets disponibles sur Rasbian pour implémenter un serveur FTP. Dans cet article, c'est proftpd qui est utilisé. L'installation de proftpd se fait de façon standard avec la commande apt-get.
pi@cluster01:~ $ sudo apt-get install proftpd-basic
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances
. . .
pi@cluster01:~ $
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances
. . .
pi@cluster01:~ $
Configuration
Le fonctionnement de proftpd peut être paramétré dans le fichier /etc/proftpd/proftpd.conf.
pi@cluster01:~ $ sudo nano /etc/proftpd/proftpd.conf
pi@cluster01:~ $
pi@cluster01:~ $
Dans /etc/proftpd/proftpd.conf, modifier les trois lignes ci-dessous pour interdire les connexions en IPv6, pour donner un nom au serveur FTP et pour limiter à 5 minutes le temps d'inactivité au bout duquel l'utilisateur est automatiquement déconnecté.
#
# /etc/proftpd/proftpd.conf -- This is a basic ProFTPD configuration file.
# To really apply changes, reload proftpd after modifications, if
# it runs in daemon mode. It is not required in inetd/xinetd mode.
#
# Includes DSO modules
Include /etc/proftpd/modules.conf
# Set off to disable IPv6 support which is annoying on IPv4 only boxes.
UseIPv6 off
# If set on you can experience a longer connection delay in many cases.
IdentLookups off
ServerName "cluster01"
# Set to inetd only if you would run proftpd by inetd/xinetd.
# Read README.Debian for more information on proper configuration.
ServerType standalone
DeferWelcome off
MultilineRFC2228 on
DefaultServer on
ShowSymlinks on
TimeoutNoTransfer 600
TimeoutStalled 600
TimeoutIdle 300
DisplayLogin welcome.msg
DisplayChdir .message true
ListOptions "-l"
DenyFilter \*.*/
# Use this to jail all users in their homes
# DefaultRoot ~
# Users require a valid shell listed in /etc/shells to login.
# Use this directive to release that constrain.
# RequireValidShell off
# Port 21 is the standard FTP port.
Port 21
. . .
# Include other custom configuration files
Include /etc/proftpd/conf.d/
# /etc/proftpd/proftpd.conf -- This is a basic ProFTPD configuration file.
# To really apply changes, reload proftpd after modifications, if
# it runs in daemon mode. It is not required in inetd/xinetd mode.
#
# Includes DSO modules
Include /etc/proftpd/modules.conf
# Set off to disable IPv6 support which is annoying on IPv4 only boxes.
UseIPv6 off
# If set on you can experience a longer connection delay in many cases.
IdentLookups off
ServerName "cluster01"
# Set to inetd only if you would run proftpd by inetd/xinetd.
# Read README.Debian for more information on proper configuration.
ServerType standalone
DeferWelcome off
MultilineRFC2228 on
DefaultServer on
ShowSymlinks on
TimeoutNoTransfer 600
TimeoutStalled 600
TimeoutIdle 300
DisplayLogin welcome.msg
DisplayChdir .message true
ListOptions "-l"
DenyFilter \*.*/
# Use this to jail all users in their homes
# DefaultRoot ~
# Users require a valid shell listed in /etc/shells to login.
# Use this directive to release that constrain.
# RequireValidShell off
# Port 21 is the standard FTP port.
Port 21
. . .
# Include other custom configuration files
Include /etc/proftpd/conf.d/
La dernière ligne du fichier de configuration indique que des configurations supplémentaires peuvent être chargée à partir du répertoire conf.d. L’intérêt de ce répertoire est que l’on peut modifier un fichier de configuration sans pour autant risquer de détruire la configuration de base.
pi@cluster01:~ $ sudo nano /etc/proftpd/conf.d/proftpd-custom.conf
pi@cluster01:~ $
pi@cluster01:~ $
La configuration ci-dessous permet au seuls utilisateurs membres du groupe www-data d’accéder au répertoire /var/www/pub pour mettre à jour le site web.
# FTP user doesn't need a valid shell
<Global>
RequireValidShell off
</Global>
# Default directory is Web Http Home
DefaultRoot /var/www/pub
# Limit login to the www-data group
<Limit LOGIN>
DenyGroup !www-data
</Limit>
<Global>
RequireValidShell off
</Global>
# Default directory is Web Http Home
DefaultRoot /var/www/pub
# Limit login to the www-data group
<Limit LOGIN>
DenyGroup !www-data
</Limit>
Pour que la nouvelle configuration soit prise en compte, il faut maintenant redémarrer le service :
pi@cluster01:~ $ sudo service proftpd restart
pi@cluster01:~ $
pi@cluster01:~ $
Tester l'installation
La vérification se fait sur un autre ordinateur avec un client FTP. Le plus couramment utilisé est FileZilla.
Lancer FileZilla :
Si tout se passe bien, une connexion est établie. Déplacer alors les fichiers du site Web situés dans Site local vers le dossier destination par un glisser-déplacer de la gauche vers la droite. En principe, les droits d'écriture accordés à l'utilisateur pi membre du groupe www-data permettent la copie des fichiers dans la partie Site distant dans lequel on retrouve les fichiers déplacés.
A remarquer que le répertoire /var/www/pub du contrôleur du cluster est considéré comme répertoire racine / par proftpd.
- Dans Hôte, taper le nom du serveur : cluster01.
- Dans Identifiant, taper le nom de l’utilisateur : pi.
- Dans Mot de passe, taper le mot de passe de l’utilisateur pi.
- Dans Port, taper 21 (c’est la valeur par défaut).
- Cliquer le bouton Connexion rapide.
Si tout se passe bien, une connexion est établie. Déplacer alors les fichiers du site Web situés dans Site local vers le dossier destination par un glisser-déplacer de la gauche vers la droite. En principe, les droits d'écriture accordés à l'utilisateur pi membre du groupe www-data permettent la copie des fichiers dans la partie Site distant dans lequel on retrouve les fichiers déplacés.
A remarquer que le répertoire /var/www/pub du contrôleur du cluster est considéré comme répertoire racine / par proftpd.
Commentaires
Enregistrer un commentaire