Bonjour à tous,

 

Aujourd’hui, je me suis enfin décider à écrire un article complet qui vous explique comment créer un serveur web avec Debian 7 de A à Z.

 

Au programme :

  1. Installation de Debian 7
  2. Installation des composants systèmes de base
  3. Installation des composants pour notre serveur
  4. Configuration des diffèrents composants
  5. Installation de Isp Config 3
  6. Configuration d’un nom de domaine
  7. Création d’un site web
  8. Création d’une base de données
  9. Création d’un accès FTP
  10. Tests de fonctionnements
  11. Liens utiles

 

Les composants pour créer un serveur web :

  • Apache mpm worker 2.x ( Serveur Apache en version multi-thread )
  • Mysql 5.x ( Serveur de base de données )
  • Php5-fpm ( pour traiter les requêtes php avec apache )
  • APC ( Opcode php )
  • Apache Page Speed ( module de concaténation et de mise en cache pour apache )

 

Installation de Debian :

 

Pour cette procédure, j’utilise l’image suivante de Debian : debian-7.5.0-amd64-netinst

Les images d’installation de Debian sont téléchargeables en cliquant ici

Pour l’installation, je n’utilise pas le mode graphique qui est trop lourd à mon goût.

Démarrez sur l’image de Debian que vous venez de télécharger et choisissez l’option Install :

créer-un-serveur-web-debian-7-x01

 

Ensuite, choisissez votre langue, pour moi le Français :

créer-un-serveur-web-debian-7-x02

 

Une fois la langue choisie, sélectionnez votre pays, c’est très important de choisir le bon pour que l’heure du système soit réglée correctement !

Moi, je choisis la France :

créer-un-serveur-web-debian-7-x03

 

Ensuite, choisissez la disposition de votre clavier, pour moi Français :

créer-un-serveur-web-debian-7-x04

 

Choisissez le nom de votre machine :

créer-un-serveur-web-debian-7-x05

 

Ensuite, choisissez un mot de passe fort pour l’utilisateur root, si ça peut vous aider, utilisez un générateur de mot de passe :

créer-un-serveur-web-debian-7-x06

 

Ensuite, choisissez un nouvel utilisateur, il nous servira par exemple, à nous connecter en ssh :

créer-un-serveur-web-debian-7-x07

 

Choisissez la méthode de partitionnement du disque :

créer-un-serveur-web-debian-7-x08

 

Choisissez le disque à partitionner :

créer-un-serveur-web-debian-7-x09

 

Choisissez le schéma de partitionnement, personnellement, je laisse tout dans la même partition :

créer-un-serveur-web-debian-7-x10

 

Vérifiez que le récapitulatif des opérations sur le disque corresponde à ce que vous voulez :

créer-un-serveur-web-debian-7-x11

 

Si tout est bon, validez votre choix :

créer-un-serveur-web-debian-7-x12

 

Le système va maintenant installer le gestionnaire de paquet « APT » :

créer-un-serveur-web-debian-7-x13

 

Choisissez votre Pays de résidence ou un pays proche lorsque le système vous demandera dans quel pays prendre les miroirs de téléchargement :

créer-un-serveur-web-debian-7-x14

 

Ensuite, choisissez un des serveurs parmi la liste :

créer-un-serveur-web-debian-7-x15

 

Laissez l’outil de gestion installer les paquets de base du système :

créer-un-serveur-web-debian-7-x16

 

Laissez l’assistant d’installation copié les fichiers de base du système :

créer-un-serveur-web-debian-7-x17

 

Maintenant, vous devez choisir si vous souhaitez participer aux statistiques d’utilisation Debian, ce choix n’a aucune incidence sur la suite de notre installation :

créer-un-serveur-web-debian-7-x18

 

Maintenant, choisissez les composants à installer avec la touche espace, n’installer AUCUN composant à part serveur SSH et utilitaires usuels du système.

créer-un-serveur-web-debian-7-x19

 

Maintenant, laissez le système s’installer :

créer-un-serveur-web-debian-7-x20

 

Installez le secteur d’amorce « GRUB » :

créer-un-serveur-web-debian-7-x21

 

Et voilà le travail, vous avez terminé l’installation de Debian, éjectez maintenant le cd et laissez votre système redémarrer :

créer-un-serveur-web-debian-7-x22

 

 

 

Installation des composants système de base :

 

Normalement, l’éditeur de texte nano est installé avec les utilitaires systèmes usuels, mais les images debian de certains hébergeurs ne l’intègre pas, alors au cas ou, lancez cette commande :

apt-get install nano

 

Maintenant, éditez la liste des sources pour le gestionnaire de paquets APT :

nano /etc/apt/sources.list

 

Vous devriez avoir quelque chose dans ce genre :

deb http://ftp.fr.debian.org/debian/ wheezy main 
deb-src http://ftp.fr.debian.org/debian/ wheezy main
deb http://security.debian.org/ wheezy/updates main
deb-src http://security.debian.org/ wheezy/updates main
# wheezy-updates, previously known as 'volatile'
deb http://ftp.fr.debian.org/debian/ wheezy-updates main
deb-src http://ftp.fr.debian.org/debian/ wheezy-updates main

 

Rajoutez contrib non-free à la fin de chaque source ce qui vous donnera ceci :

deb http://ftp.fr.debian.org/debian/ wheezy main contrib non-free
deb-src http://ftp.fr.debian.org/debian/ wheezy main contrib non-free
deb http://security.debian.org/ wheezy/updates main contrib non-free
deb-src http://security.debian.org/ wheezy/updates main contrib non-free
# wheezy-updates, previously known as 'volatile'
deb http://ftp.fr.debian.org/debian/ wheezy-updates main contrib non-free
deb-src http://ftp.fr.debian.org/debian/ wheezy-updates main contrib non-free

 

Lancez maintenant une mise à jour et installez l’utilitaire htop en même temps :

apt-get update && apt-get upgrade && apt-get install htop

 

J’aime bien installer l’utilitaire htop car je le trouve plus explicite que l’utilitaire top nativement intégré, voici la comparaison en images :

TOP

TOP

HTOP

HTOP

 

 

 

 

Installation des composants du serveur :

 

On va d’abord installer MySql, RKHunter, Binutils, clamAv et 2-3 accessoires :

apt-get install mysql-client mysql-server openssl rkhunter binutils clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl

 

Ensuite, on va installer Apache2 en mode Worker (multi-threadé), PHP5-FPM, FCGI, suExec, Pear, et mcrypt :

apt-get install apache2 apache2.2-common apache2-doc apache2-mpm-worker libapache2-mod-fastcgi php5-fpm php-apc apache2-utils libexpat1 ssl-cert php5 php5-common php5-gd php5-mysql php5-imap php5-cli php5-cgi libapache2-mod-fcgid apache2-suexec php-pear php-auth php5-mcrypt mcrypt php5-imagick imagemagick libruby libapache2-mod-ruby libapache2-mod-python php5-curl php5-intl php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl

 

On va maintenant déclarer quelques modules à apache :

a2enmod actions alias fastcgi && a2enmod fcgid && a2enmod suexec rewrite ssl actions include && a2enmod dav_fs dav auth_digest && service apache2 restart

 

Ensuite, installez Pureftpd, bind9 et fail2ban :

apt-get install pure-ftpd-common pure-ftpd-mysql bind9 dnsutils fail2ban

 

Et pour finir, on installe Jailkit :

apt-get install build-essential autoconf automake1.9 libtool flex bison debhelper binutils-gold
cd /tmp
 wget http://olivier.sessink.nl/jailkit/jailkit-2.15.tar.gz
 tar xvfz jailkit-2.15.tar.gz
 cd jailkit-2.15
 ./debian/rules binary

Vous pouvez maintenant installer le package .deb comme ceci :

cd ..
dpkg -i jailkit_2.15-1_*.deb
rm -rf jailkit-2.15*

 

 

Configuration des composants :

 

Si vous voulez un accès externe aux bases de données Mysql, vous devez modifier le fichier de configuration de Mysql :

nano /etc/mysql/my.cnf

 

Recherchez l’option bind-address à la ligne 47 et commentez la :

Avant :

bind-address            = 127.0.0.1

Après :

#bind-address            = 127.0.0.1

 

Sauvegardez en effectuant la combinaison de touches Ctrl+O et redémarrez Mysql :

service mysql restart

 

Maintenant, on télécharger le fichier de configuration pour php-fpm :

cd /etc/apache2/conf.d/
wget https://raw.githubusercontent.com/stylersnico/debian-scripts/master/php5-fpm.conf

 

Redémarrez les services associés :

service apache2 restart && service php5-fpm restart

 

Maintenant, on va modifier la configuration de notre serveur FTP :

nano /etc/default/pure-ftpd-common

 

Vérifiez que le démarrage soit en STANDALONE et que virtualchroot soit sur TRUE

[...]
STANDALONE_OR_INETD=standalone
[...]
VIRTUALCHROOT=true
[...]

On va maintenant autoriser les sessions par TLS pour plus de sécurité

echo 1 > /etc/pure-ftpd/conf/TLS
mkdir -p /etc/ssl/private/

 

On va maintenant générer un certificat SSL dans le dossier que l’on vient de créer :

openssl req -x509 -nodes -days 7300 -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem

 

Changez les permissions du certificat

chmod 600 /etc/ssl/private/pure-ftpd.pem

 

Redémarrez le serveur FTP :

/etc/init.d/pure-ftpd restart

 

Pour que Fail2Ban surveille notre serveur FTP nous allons devoir créer un fichier de configuration spécifique :

nano /etc/fail2ban/jail.local

 

Remplissez le avec ceci :

[pureftpd]
enabled = true
port = ftp
filter = pureftpd
logpath = /var/log/syslog
maxretry = 3

 

On va maintenant créer un filtre :

nano /etc/fail2ban/filter.d/pureftpd.conf

 

Et le remplir avec cela :

[Definition]
failregex = .*pure-ftpd: \(.*@\) \[WARNING\] Authentication failed for user.*
ignoreregex =

 

Ensuite, on va configurer APC :

nano /etc/php5/conf.d/apc.ini

 

Mettez ceci dans le fichier de configuration (vous pouvez ajuster la ram allouée au plugin) :

extension=apc.so
[APC]
apc.enabled=1
apc.shm_size=128M
apc.stat=0

 

 

On va maintenant configurer Apache PageSpeed :

 

32 bits :

cd /tmp/
wget https://dl-ssl.google.com/dl/linux/direct/mod-pagespeed-stable_current_i386.deb
dpkg -i mod-pagespeed-*.deb
apt-get -f install

 

64 bits :

cd /tmp/
wget https://dl-ssl.google.com/dl/linux/direct/mod-pagespeed-stable_current_amd64.deb
dpkg -i mod-pagespeed-*.deb
apt-get -f install

 

Maintenant, redémarrez votre serveur pour qu’il soit propre avant l’installation d’ISP Config 3 :

reboot

 

 

Installation d’Isp Config 3 :

Pour avoir la dernière version stable, faites ces commandes :

cd /tmp
 wget http://www.ispconfig.org/downloads/ISPConfig-3-stable.tar.gz
 tar xfz ISPConfig-3-stable.tar.gz
 cd ispconfig3_install/install/

 

lancez maintenant cette commande

php -q install.php

 

Suivez les instructions de l’installateur, mais lorsqu’il vous laissera le choix entre l’installation standard et expert, choisissez expert

Select language (en,de) [en]:
Installation mode (standard,expert) [standard]: expert

 

Lorsqu’il vous demandera pour la configuration des mails, il faudra lui répondre non, car nous n’avons pas installé postfix.

Configure Mail (y,n) [Y]: n

 

Vous pouvez laisser tous les autres paramètres par défaut

Une fois l’installation terminée, redémarrez votre serveur avec la commande

reboot

 

Votre webpanel sera ensuite accessible à cette adresse : https://[VOTREIP]:8080/

Les identifiants par défaut sont : admin/admin

créer-un-serveur-web-debian-7-x25

 

Si vous avez une erreur avec le protocole https de ce genre

107 (net::ERR_SSL_PROTOCOL_ERROR) or ssl_error_rx_record_too_long

 

Lancez cette commande

a2ensite default-ssl

 

 

Configuration d’un nom de domaine :

 

Rendez vous dans la section DNS :

créer-un-serveur-web-debian-7-x26

 

Ajoutez une nouvelle zone à l’aide de l’assistant :

créer-un-serveur-web-debian-7-x27

 

 

Voici un exemple de configuration :

créer-un-serveur-web-debian-7-x28

 

Voilà, c’est tout ce qu’on doit faire pour ajouter un domaine à notre serveur.

Création d’un site :

 

Rendez vous dans la section site, et allez dans Website, ensuite cliquez sur Add new website :

créer-un-serveur-web-debian-7-x33

 

Remplissez bien le domaine, et SURTOUT choisissez bien PHP-FPM dans la version de php !

créer-un-serveur-web-debian-7-x34

 

 

Création d’une base de données :

 

Allez dans Site, database Users :

créer-un-serveur-web-debian-7-x29

 

Cliquez sur créer-un-serveur-web-debian-7-x30

 

Remplissez les champs et cliquez sur Save :

créer-un-serveur-web-debian-7-x31

 

 

Maintenant allez dans Databases et créez en une nouvelle :

créer-un-serveur-web-debian-7-x32

 

Remplissez les informations demandées :

créer-un-serveur-web-debian-7-x35

 

 

Création d’un accès FTP :

 

Allez dans Web Access, FTP-Accounts et cliquez sur Add new FTP-User :

créer-un-serveur-web-debian-7-x37

 

Remplissez les informations demandées :

créer-un-serveur-web-debian-7-x38

 

 

Tests de fonctionnements :

 

Maintenant, il faut vérifier que tout ce que l’on a fait marche correctement, on va commencer par le FTP :

créer-un-serveur-web-debian-7-x39

créer-un-serveur-web-debian-7-x40

 

 

Si c’est ok, on va tenter d’accéder au site que l’on à créer, par défaut on tombe sur cette page :

créer-un-serveur-web-debian-7-x41

 

 

Maintenant, on va tester le fonctionnement de PHP, pour cela, créer un fichier php avec un phpinfo dedans :

créer-un-serveur-web-debian-7-x42

 

 

Si vous avez tout suivi correctement, il devrait vous renvoyer un résultat avec Server API=FPM :

créer-un-serveur-web-debian-7-x43

 

 

Liens utiles :

 

 

Et voilà, j’ai enfin fait ce tutoriel complet pour créer un serveur web de A à Z, j’espère qu’il vous plaît ! N’hésitez pas à me payer une bière si ça vous a été utile ou à laisser un commentaire 🙂