GNU/Linux >> Tutoriels Linux >  >> Cent OS

Serveur FTP avec PureFTPd, MariaDB et utilisateurs virtuels (y compris gestion des quotas et de la bande passante) sur CentOS 7.2

Ce document décrit comment installer un serveur PureFTPd qui utilise des utilisateurs virtuels d'une base de données MariaDB (compatible MySQL) au lieu d'utilisateurs système réels. Ceci est beaucoup plus performant et permet d'avoir des milliers d'utilisateurs FTP sur une seule machine. En plus de cela, je montrerai l'utilisation des quotas et des limites de bande passante de téléchargement/téléchargement avec cette configuration. Les mots de passe seront stockés chiffrés sous forme de chaînes MD5 dans la base de données.

Pour l'administration de la base de données MariaDB, vous pouvez utiliser des outils Web tels que phpMyAdmin qui seront également installés dans ce guide. phpMyAdmin est une interface graphique confortable, ce qui signifie que vous n'avez pas à vous soucier de la ligne de commande.

Ce tutoriel est basé sur CentOS 7.2. Vous devriez déjà avoir configuré un système CentOS 7.2 minimal de base.

Ce guide est conçu comme un guide pratique ; il ne couvre pas les arrière-plans théoriques. Ils sont traités dans de nombreux autres documents sur le Web.

Ce document est fourni sans garantie d'aucune sorte ! Je tiens à dire que ce n'est pas la seule façon de mettre en place un tel système. Il existe de nombreuses façons d'atteindre cet objectif, mais c'est la voie que je prends.

1 Remarque préliminaire

Dans ce tutoriel, j'utilise le nom d'hôte server1.example.com avec l'adresse IP 192.168.1.100. Ces paramètres peuvent différer pour vous, vous devez donc les remplacer le cas échéant.

2 Installer MySQL et phpMyAdmin

Tout d'abord, nous activons le référentiel EPEL sur notre système CentOS car certains packages que nous allons installer au cours de ce tutoriel ne sont pas disponibles dans les référentiels CentOS 7.2 officiels :

rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*

Ensuite, nous activons le référentiel EPEL sur notre système CentOS car de nombreux packages que nous allons installer au cours de ce didacticiel ne sont pas disponibles dans le référentiel officiel CentOS 7 :

yum -y install epel-release
yum -y install yum-priorities

Modifier /etc/yum.repos.d/epel.repo...

nano /etc/yum.repos.d/epel.repo

... et ajoutez la ligne priority=10 à la section [epel] :

[epel]
name=Extra Packages for Enterprise Linux 7 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/7/$basearch
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch
failovermethod=priority
enabled=1
priority=10
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
[...]

Ensuite, nous mettons à jour nos packages existants sur le système :

yum update

Nous pouvons maintenant installer le serveur Web Apache, PHP, MariaDB et phpMyAdmin comme suit :

yum -y install mariadb mariadb-server phpmyadmin httpd php

Maintenant, nous configurons phpMyAdmin. Nous modifions la configuration d'Apache afin que phpMyAdmin autorise les connexions non seulement à partir de l'hôte local (en commentant tout dans la strophe et en ajoutant la ligne Require all granted) :

nano /etc/httpd/conf.d/phpMyAdmin.conf

pour que le fichier ressemble à ceci :

# phpMyAdmin - Web based MySQL browser written in php
#
# Allows only localhost by default
#
# But allowing phpMyAdmin to anyone other than localhost should be considered
# dangerous unless properly secured by SSL

Alias /phpMyAdmin /usr/share/phpMyAdmin
Alias /phpmyadmin /usr/share/phpMyAdmin

<Directory /usr/share/phpMyAdmin/>
AddDefaultCharset UTF-8 # <IfModule mod_authz_core.c> # # Apache 2.4 # <RequireAny> # Require ip 127.0.0.1 # Require ip ::1 # </RequireAny> # </IfModule> # <IfModule !mod_authz_core.c> # # Apache 2.2 # Order Deny,Allow # # Deny from All # Allow from 127.0.0.1 Options Indexes AllowOverride None Require all granted # Allow from ::1 # </IfModule> </Directory> <Directory /usr/share/phpMyAdmin/setup/> <IfModule mod_authz_core.c> # Apache 2.4 <RequireAny> Require ip 127.0.0.1 Require ip ::1 </RequireAny> </IfModule> <IfModule !mod_authz_core.c> # Apache 2.2 Order Deny,Allow Deny from All Allow from 127.0.0.1 Allow from ::1 </IfModule> </Directory> # These directories do not require access over HTTP - taken from the original # phpMyAdmin upstream tarball # <Directory /usr/share/phpMyAdmin/libraries/> Order Deny,Allow Deny from All Allow from None </Directory> <Directory /usr/share/phpMyAdmin/setup/lib/> Order Deny,Allow Deny from All Allow from None </Directory> <Directory /usr/share/phpMyAdmin/setup/frames/> Order Deny,Allow Deny from All Allow from None </Directory> # This configuration prevents mod_security at phpMyAdmin directories from # filtering SQL etc. This may break your mod_security implementation. # #<IfModule mod_security.c> # <Directory /usr/share/phpMyAdmin/> # SecRuleInheritance Off # </Directory> #</IfModule>

Ensuite, nous créons les liens de démarrage du système pour MySQL et Apache (afin que les deux démarrent automatiquement au démarrage du système) et démarrons les deux services.

Ouvrez les ports http et https lorsque le pare-feu CentOS "firewalld" est installé sur votre serveur.

firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --permanent --zone=public --add-service=https
firewall-cmd --reload

Ensuite, démarrez MariaDB et Aapche.

systemctl enable mariadb.service
systemctl start mariadb.service
systemctl enable httpd.service
systemctl start httpd.service

Créez un mot de passe pour l'utilisateur root MySQL (remplacez votre mot de passe mariadb par le mot de passe que vous souhaitez utiliser) :

mysql_secure_installation

[[email protected] ~]# mysql_secure_installation
/usr/bin/mysql_secure_installation :ligne 379 :find_mysql_client :command not found

REMARQUE :L'EXÉCUTION DE TOUTES LES PARTIES DE CE SCRIPT EST RECOMMANDÉE POUR TOUS MariaDB
      SERVEURS EN UTILISATION DE PRODUCTION ! VEUILLEZ LIRE ATTENTIVEMENT CHAQUE ÉTAPE !

Afin de vous connecter à MariaDB pour le sécuriser, nous aurons besoin du mot de passe
actuel pour l'utilisateur root. Si vous venez d'installer MariaDB et
vous n'avez pas encore défini le mot de passe root, le mot de passe sera vide,
il vous suffit donc d'appuyer sur Entrée ici.<--ENTER
Entrez le mot de passe actuel pour root (entrez pour aucun) :<--ENTER
OK, mot de passe utilisé avec succès, on passe à autre chose...

La définition du mot de passe root garantit que personne ne peut se connecter à l'utilisateur root de MariaDB
sans l'autorisation appropriée.

Définir le mot de passe root ? [O/n]<--ENTER
Nouveau mot de passe :<--yourmariadbpassword
Saisir à nouveau le nouveau mot de passe :<--yourmariadbpassword
Mot de passe mis à jour avec succès !
Rechargement des tables de privilèges..
 ... Réussite !


Par défaut, une installation MariaDB a un utilisateur anonyme, ce qui permet n'importe qui
de se connecter à MariaDB sans avoir à créer un compte utilisateur
pour lui. Ceci est uniquement destiné aux tests et à rendre l'installation
un peu plus fluide. Vous devez les supprimer avant de passer à
un environnement de production.

Supprimer les utilisateurs anonymes ? [O/n]<--ENTER
 ... Succès !

Normalement, root ne devrait être autorisé à se connecter qu'à partir de "localhost". Cela
assure que personne ne peut deviner le mot de passe root à partir du réseau.

Interdire la connexion root à distance ? [O/n]<--ENTER
 ... Succès !

Par défaut, MariaDB est livré avec une base de données nommée "test" à laquelle tout le monde peut
accéder. Ceci est également destiné uniquement aux tests et doit être supprimé
avant de passer à un environnement de production.

Supprimer la base de données de test et y accéder ? [O/n]<--ENTER
 - Suppression de la base de données de test...
 ... Succès !
 - Suppression des privilèges sur la base de données de test...
 ... Succès !

Le rechargement des tables de privilèges garantira que toutes les modifications apportées jusqu'à présent
entreront en vigueur immédiatement.

Recharger les tables de privilèges maintenant ? [O/n]<--ENTER
 ... Succès !

Nettoyage...

C'est fait ! Si vous avez terminé toutes les étapes ci-dessus, votre installation de MariaDB
devrait maintenant être sécurisée.

Merci d'utiliser MariaDB !
[[email protected] ~]#

3 Installer PureFTPd avec MySQL / MariaDB Support

Le package CentOS PureFTPd prend en charge divers backends, tels que MySQL, PostgreSQL, LDAP, etc. Par conséquent, tout ce que nous avons à faire est d'installer le package PureFTPd normal :

yum -y install pure-ftpd

Ensuite, nous créons un groupe ftp (ftpgroup) et un utilisateur (ftpuser) auxquels tous nos utilisateurs virtuels seront mappés. Remplacez le groupe et l'ID utilisateur 2001 par un numéro libre sur votre système :

groupadd -g 2001 ftpgroup
useradd -u 2001 -s /bin/false -d /bin/null -c "pureftpd user" -g ftpgroup ftpuser

Le service ftp doit être autorisé par le firewall-cmd comme suit :

firewall-cmd --permanent --zone=public --add-service=ftp
firewall-cmd --reload

4 Créer la base de données pour PureFTPd

Nous créons maintenant une base de données appelée pureftpd et un utilisateur MariaDB nommé pureftpd que le démon PureFTPd utilisera plus tard pour se connecter à la base de données pureftpd :

mysql -u root -p
CREATE DATABASE pureftpd;
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON pureftpd.* TO 'pureftpd'@'localhost' IDENTIFIED BY 'ftpdpass';
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON pureftpd.* TO 'pureftpd'@'localhost.localdomain' IDENTIFIED BY 'ftpdpass';
FLUSH PRIVILEGES;

Remplacez la chaîne ftpdpass par le mot de passe que vous souhaitez utiliser pour l'utilisateur MySQL pureftpd. Toujours sur le shell MySQL, on crée la table de base de données dont on a besoin (oui, il n'y a qu'une seule table !) :

USE pureftpd;
CREATE TABLE ftpd (
User varchar(16) NOT NULL default '',
status enum('0','1') NOT NULL default '0',
Password varchar(64) NOT NULL default '',
Uid varchar(11) NOT NULL default '-1',
Gid varchar(11) NOT NULL default '-1',
Dir varchar(128) NOT NULL default '',
ULBandwidth smallint(5) NOT NULL default '0',
DLBandwidth smallint(5) NOT NULL default '0',
comment tinytext NOT NULL,
ipaccess varchar(15) NOT NULL default '*',
QuotaSize smallint(5) NOT NULL default '0',
QuotaFiles int(11) NOT NULL default 0,
PRIMARY KEY (User),
UNIQUE KEY User (User)
) ENGINE=MyISAM;
quit;

Comme vous l'avez peut-être remarqué, avec le renoncement; commande, nous avons quitté le shell MySQL et sommes de retour sur le shell Linux.

BTW, (je suppose que le nom d'hôte de votre système de serveur FTP est server1.example.com) vous pouvez accéder à phpMyAdmin sous http://server1.example.com/phpMyAdmin/ (vous pouvez également utiliser l'adresse IP au lieu de server1 .example.com) dans un navigateur et connectez-vous en tant qu'utilisateur pureftpd. Ensuite, vous pouvez consulter la base de données. Plus tard, vous pourrez utiliser phpMyAdmin pour administrer votre serveur PureFTPd.

5 Configurer PureFTPd

Modifiez /etc/pure-ftpd/pure-ftpd.conf et assurez-vous que les lignes ChrootEveryone, MySQLConfigFile et CreateHomeDir sont activées et ressemblent à ceci :

nano /etc/pure-ftpd/pure-ftpd.conf
[...]
ChrootEveryone              yes
[...]
MySQLConfigFile               /etc/pure-ftpd/pureftpd-mysql.conf
[...]
CreateHomeDir               yes
[...]

Le paramètre ChrootEveryone obligera PureFTPd à chrooter chaque utilisateur virtuel dans son répertoire personnel afin qu'il ne puisse pas parcourir les répertoires et les fichiers en dehors de son répertoire personnel. La ligne CreateHomeDir obligera PureFTPd à créer le répertoire personnel d'un utilisateur lorsque l'utilisateur se connecte et que le répertoire personnel n'existe pas encore.

Ensuite, nous éditons /etc/pure-ftpd/pureftpd-mysql.conf. Cela devrait ressembler à ceci :

cp /etc/pure-ftpd/pureftpd-mysql.conf /etc/pure-ftpd/pureftpd-mysql.conf_orig
cat /dev/null > /etc/pure-ftpd/pureftpd-mysql.conf
nano /etc/pure-ftpd/pureftpd-mysql.conf
MYSQLSocket      /var/lib/mysql/mysql.sock
#MYSQLServer     localhost
#MYSQLPort       3306
MYSQLUser       pureftpd
MYSQLPassword   ftpdpass
MYSQLDatabase   pureftpd
#MYSQLCrypt md5, cleartext, crypt() or password() - md5 is VERY RECOMMENDABLE uppon cleartext
MYSQLCrypt      md5
MYSQLGetPW      SELECT Password FROM ftpd WHERE User="\L" AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MYSQLGetUID     SELECT Uid FROM ftpd WHERE User="\L" AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MYSQLGetGID     SELECT Gid FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MYSQLGetDir     SELECT Dir FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MySQLGetBandwidthUL SELECT ULBandwidth FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MySQLGetBandwidthDL SELECT DLBandwidth FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MySQLGetQTASZ   SELECT QuotaSize FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MySQLGetQTAFS   SELECT QuotaFiles FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")

Assurez-vous de remplacer la chaîne ftpdpass par le vrai mot de passe de l'utilisateur MySQL pureftpd dans la ligne MYSQLPassword ! Veuillez noter que nous utilisons md5 comme méthode MYSQLCrypt, ce qui signifie que nous stockerons les mots de passe des utilisateurs sous forme de chaîne MD5 dans la base de données, ce qui est beaucoup plus sécurisé que l'utilisation de mots de passe en texte brut !

Maintenant, nous créons les liens de démarrage du système pour PureFTPd et le démarrons :

systemctl enable pure-ftpd.service
systemctl start pure-ftpd.service

6 Remplir la base de données et tester le serveur

Pour remplir la base de données, vous pouvez utiliser le shell MySQL :

mysql -u root -p
USE pureftpd;

Maintenant, nous créons l'utilisateur exampleuser avec le statut 1 (ce qui signifie que son compte ftp est actif), le mot de passe secret (qui sera stocké chiffré à l'aide de la fonction MD5 de MySQL), l'UID et le GID 2001 (utilisez l'ID utilisateur et l'ID de groupe de l'utilisateur/ groupe que vous avez créé à la fin de la deuxième étape !), le répertoire personnel /home/www.example.com, une bande passante de téléchargement et de téléchargement de 100 Ko/sec. (kilooctets par seconde), et un quota de 50 Mo :

INSERT INTO `ftpd` (`User`, `status`, `Password`, `Uid`, `Gid`, `Dir`, `ULBandwidth`, `DLBandwidth`, `comment`, `ipaccess`, `QuotaSize`, `QuotaFiles`) VALUES ('exampleuser', '1', MD5('secret'), '2001', '2001', '/home/www.example.com', '100', '100', '', '*', '50', '0');
quit;

Ouvrez maintenant votre programme client FTP sur votre poste de travail (quelque chose comme FileZilla si vous êtes sur un système Windows ou gFTP sur un bureau Linux) et essayez de vous connecter. Comme nom d'hôte, vous utilisez server1.example.com (ou l'adresse IP du système), le nom d'utilisateur est exampleuser et le mot de passe est secret.

Si vous parvenez à vous connecter, félicitations ! Sinon, quelque chose s'est mal passé.

Maintenant, si vous exécutez

ls -l /home

vous devriez voir que le répertoire /home/www.example.com (le répertoire personnel de l'utilisateur de l'exemple) a été créé automatiquement, et qu'il appartient à ftpuser et ftpgroup (l'utilisateur/groupe que nous avons créé à la fin de la deuxième étape) :

[[email protected] ~]# ls -l /home
total 0
drwx------. 2 administrator administrator 59 Jun 21 16:13 administrator
drwxr-xr-x. 2 ftpuser ftpgroup 22 Jul 4 18:30 www.example.com
[[email protected] ~]#

7 Administration de la base de données

Pour la plupart des gens, c'est plus facile s'ils ont une interface graphique pour MySQL; par conséquent, vous pouvez également utiliser phpMyAdmin (dans cet exemple sous http://server1.example.com/phpMyAdmin/) pour administrer la base de données pureftpd.

Chaque fois que vous voulez créer un nouvel utilisateur, vous devez créer une entrée dans le tableau ftpd donc je vais vous expliquer les colonnes de ce tableau ici :

Tableau FTPD :

  • Utilisateur :le nom de l'utilisateur virtuel PureFTPd (par exemple, exampleuser).
  • statut :0 ou 1. 0 signifie que le compte est désactivé, l'utilisateur ne peut pas se connecter.
  • Mot de passe :le mot de passe de l'utilisateur virtuel. Assurez-vous d'utiliser la fonction MD5 de MySQL pour enregistrer le mot de passe chiffré en tant que MD5 chaîne :
  • UID :ID utilisateur de l'utilisateur ftp que vous avez créé à la fin de la deuxième étape (par exemple, 2001).
  • GID :le groupid du groupe ftp que vous avez créé à la fin de la deuxième étape (par exemple, 2001).
  • Dir :le répertoire personnel de l'utilisateur virtuel PureFTPd (par exemple, /home/www.example.com). S'il n'existe pas, il sera créé lors de la première connexion du nouvel utilisateur via FTP. L'utilisateur virtuel sera emprisonné dans ce répertoire personnel, c'est-à-dire qu'il ne pourra pas accéder à d'autres répertoires en dehors de son répertoire personnel.
  • ULBandwidth :téléchargez la bande passante de l'utilisateur virtuel en Ko/sec. (kilooctets par seconde). 0 signifie illimité.
  • DLBandwidth :téléchargement de la bande passante de l'utilisateur virtuel en Ko/sec. (kilooctets par seconde). 0 signifie illimité.
  • commentaire :vous pouvez entrer ici n'importe quel commentaire (par exemple pour votre administration interne). Normalement, vous laissez ce champ vide.
  • ipaccess :entrez ici les adresses IP autorisées à se connecter à ce compte FTP. * signifie que n'importe quelle adresse IP est autorisée à se connecter.
  • QuotaSize :espace de stockage en Mo (et non en Ko, comme dans ULBandwidth et DLBandwidth !) que l'utilisateur virtuel est autorisé à utiliser sur le serveur FTP. 0 signifie illimité.
  • QuotaFiles :quantité de fichiers que l'utilisateur virtuel est autorisé à enregistrer sur le serveur FTP. 0 signifie illimité.

8 FTP anonyme

Si vous souhaitez créer un compte ftp anonyme (un compte ftp auquel tout le monde peut se connecter sans mot de passe), vous avez besoin d'un utilisateur et d'un groupe appelé ftp. Les deux ont été créés automatiquement lorsque vous avez installé le paquet pure-ftpd, vous n'avez donc pas besoin de les créer manuellement. Cependant, le homedir de ftp est /var/ftp par défaut, mais j'aimerais créer le répertoire ftp anonyme dans /home/ftp (les répertoires ftp des utilisateurs normaux se trouvent également dans /home, par exemple /home/www.example. com). Mais bien sûr, vous pouvez utiliser le répertoire /var/ftp pour le ftp anonyme, si vous le préférez.

Si vous voulez utiliser /home/ftp, ouvrez /etc/passwd et changez le répertoire personnel de l'utilisateur ftp de /var/ftp à /home/ftp (ne le faites pas si vous voulez utiliser /var/ftp) :

nano /etc/passwd
[...]
#ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
ftp:x:14:50:FTP User:/home/ftp:/sbin/nologin
[...]

Ensuite, déplacez /var/ftp vers /home (ne le faites pas si vous voulez utiliser /var/ftp) :

mv /var/ftp /home

Ensuite, nous créons le répertoire /home/ftp/incoming qui permettra aux utilisateurs anonymes de télécharger des fichiers. Nous accorderons au répertoire /home/ftp/incoming des autorisations de 311 afin que les utilisateurs puissent télécharger, mais ne voient ni ne téléchargent aucun fichier dans ce répertoire. Le répertoire /home/ftp aura des permissions de 555 qui permettent de voir et de télécharger des fichiers :

chown ftp:nobody /home/ftp
cd /home/ftp
mkdir incoming
chown ftp:nobody incoming/
chmod 311 incoming/
cd ../
chmod 555 ftp/

(Si vous souhaitez utiliser /var/ftp à la place, remplacez /home/ftp par /var/ftp dans les commandes ci-dessus.)

Les utilisateurs anonymes pourront se connecter et ils seront autorisés à télécharger des fichiers depuis /home/ftp, mais les téléchargements seront limités à /home/ftp/incoming (et une fois qu'un fichier est téléchargé dans /home/ftp/incoming, il ne peut pas être lu ni téléchargé à partir de là ; l'administrateur du serveur doit d'abord le déplacer dans /home/ftp pour le rendre accessible aux autres).

Nous devons maintenant configurer PureFTPd pour le ftp anonyme. Ouvrez /etc/pure-ftpd/pure-ftpd.conf et assurez-vous que vous y avez les paramètres suivants :

nano /etc/pure-ftpd/pure-ftpd.conf
[...]
NoAnonymous                 no
[...]
AntiWarez                   no
[...]
AnonymousBandwidth            8
[...]
AnonymousCantUpload         no
[...]

(Le paramètre AnonymousBandwidth est facultatif - il vous permet de limiter les bandes passantes de téléchargement et de téléchargement pour les utilisateurs anonymes. 8 signifie 8 Ko/s. Utilisez la valeur de votre choix ou commentez la ligne si vous ne souhaitez pas limiter les bandes passantes.)

Enfin, nous redémarrons PureFTPd :

systemctl restart pure-ftpd.service

9 Télécharger ce serveur CentOS 7.2 en tant que machine virtuelle

Cette configuration est disponible en téléchargement de machine virtuelle au format ova/ovf (compatible avec VMWare et Virtualbox) pour les abonnés howtoforge.

Informations de connexion pour la VM

  • Le mot de passe root est :howtoforge
  • Le mot de passe de l'utilisateur "administrateur" est :howtoforge

Veuillez modifier les deux mots de passe lors de la première connexion.

  • L'adresse IP de la VM est 192.168.1.100

  • PureFTPd :http://www.pureftpd.org/
  • MySQL :http://www.mysql.com/
  • phpMyAdmin :http://www.phpmyadmin.net/
  • CentOS :http://centos.org/

Cent OS
  1. Comment configurer un serveur FTP avec VSFTPD sur CentOS 7

  2. Serveur de messagerie avec des utilisateurs virtuels et des domaines utilisant Postfix et Dovecot sur un VPS CentOS 6

  3. Comment installer Varnish et phpMyAdmin sur un VPS CentOS 7 avec Nginx, MariaDB et PHP-FPM

  4. Installez Zenario avec Apache, PHP et MariaDB sur CentOS 7

  5. Configurer un serveur de messagerie avec PostfixAdmin et MariaDB sur CentOS 7

Hébergement virtuel avec PureFTPd et MySQL (y compris la gestion des quotas et de la bande passante) sur Ubuntu 12.04

Hébergement virtuel avec PureFTPd et MySQL (y compris la gestion des quotas et de la bande passante) sur Ubuntu 12.10

Hébergement virtuel avec PureFTPd et MySQL (y compris la gestion des quotas et de la bande passante) sur Ubuntu 14.04LTS

Surveillance du serveur avec munin et monit sur CentOS 5.2

Surveillance de serveur avec Munin et Monit sur CentOS 7

Surveillance de serveur avec Munin et Monit sur CentOS 7.2