Créer un serveur Web avec Debian 7 et Isp Config

1/52/53/54/55/5 (7 votes, moyenne: 4,43 sur 5)
Loading...
C

Attention, cet article a plus d'une année d'ancienneté. Il est possible que les informations présentées ne soient plus à jour, spécialement dans le cadre d'un article technique.


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 🙂

 

A propos de l'auteur

Nicolas Simond

Ingénieur Systèmes et Réseaux et guitariste hard rock et metal à mes heures perdues.
Je suis le créateur et l'unique rédacteur d'Abyss Project, c'est ici que je note la plupart de mes procédures et quelques divagations.

Si vous l'article vous a aidé, pensez à me payer un café :)

Subscribe
Notify of
guest

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

36 Commentaires
Plus récents
Plus anciens Populaires
Inline Feedbacks
View all comments
Webi
Webi
8 années plus tôt

Bonjour, Tout d’abord, merci pour le tuto très complet. J’ai suivit le tuto est tout s’est bien passé du premier coup. Seulement, j’ai un problème de cafche il me semble. J’ai créer http;//mon-domaine.com/toto.php avec dedans un echo « toto » ; ça m’affiche bien « toto ». Par contre, si je change en echo « hello word » ; cela m’affiche toujours « toto ». PS: je suis novice en admin serveur alors, je me suis contenté de copier coller toutes les commande de ton tuto. Si quelqu’un peut, me dire pourquoi c’est ainsi, et comment y remedier, car pour l’instant, je ne sais plus mettre à jour… Voir plus »

David (Azur-Dev)
9 années plus tôt

Salut,
Bravo pour ce tuto. 🙂

Mais pourquoi télécharger ce fichier de config ci-dessus pour PHP-FPM? Il n’y en a pas par défaut? il n’est pas bien?

sparttan
sparttan
9 années plus tôt

Yeah, merci à toi pour ce tuto.
J’ai juste eu un souci d’erreur 403. J’ai changé le fichier de conf dans site avaible et remplacer deny from all par allow from all. Va savoir pourquoi c’est pas automatique…

Et j’ai du faire /etc/init.d/pure-ftpd-mysql restart à la place de /etc/init.d/pure-ftpd restart

Mais sinon nikel, sachant que j’ai du suivre d’autres tutos avant, mais qui ne fonctionnaient pas comme je le voulais…

Sparttan

Nicolas
Nicolas
9 années plus tôt

Bonsoir, suite à la configuration d’un serveur web via debian et ispconfig3 en ayant suivi cet excellent tuto ! J’ai un souci avec PDO et plus particulièrement avec les requêtes préparées ! As tu déjà rencontré le problème ? existe il une solution ? les erreur peuvent être du genre « insert value does not match column…  » alors que tout ok (syntaxe, nombre de champs et valeur renseignées etc…) Y a t’il une astuce en utilisant php-fpm ? faut il compiler pdo d’une autre manière ? et ne peut être utilisé en tant que mode de php5 ? ça bug… Voir plus »

Taimpus
Taimpus
9 années plus tôt

Bonjour,

moi j’ai un probleme de socket quand je fais « dpkg -i jailkit_2.15-1_*.deb »

Starting jailkit: jk_socketdversion 2.13, no sockets specified in configfile /etc/jailkit/jk_socketd.ini or on commandline, nothing to do, exiting

serais tu à quoi c’est dû ?

Snip3r
Snip3r
Reply to  Taimpus
9 années plus tôt

Bonjour,

J’ai exactement le même problème que toi.
As-tu résolu ton problème ?

Merci

jack
jack
10 années plus tôt

Bonjour,
Merci pour le tuto, que j’ai tenté de suivre à la lettre.
Par contre, je n’arrive pas a accéder à phpmydamin (domaine.tld/phpmyadmin).

C’est normal ou j’ai oublié quelque chose ?

Merci

Jack

Jack
Jack
Reply to  Nicolas Simond
10 années plus tôt

Ah ok, donc effectivement c’est logique ;-). Dans ce cas comment gérer ses bases ? As tu un autre moyen ? Comment le mettre en place ?
Merci

jpcanut
10 années plus tôt

Prob de ftp qui ne part pas
Donc pas de ftp ni de sites
merci pour le retour et le bon boulot
Pour la bière pas de probs si tout marche

jpcanut
Reply to  Nicolas Simond
10 années plus tôt

Le ftp fonctionne maintenant. Je n’avais pas mis user comme il faut.
Mais le site ne se propage pas.

Je te remercie de ta réponse de ce jour et j’ai pour réponse sur apache  » NameVirtualHost 94.23.xxx.xxx:443 has no VirtualHosts »

si tu as deux secondes , merci d’avance.
Je suis nvx sur ispconfig. Je faisais ca à l’ancienne avant.

jpcanut
Reply to  jpcanut
10 années plus tôt

Merci pour l’ip. (comment eviter?)
ton tuto suivi à la lettre. Tout marche sauf que me site ne fonctionne pas. Il fonctionnait (ovh) quand je le faisais en virtualhost (main) et les zones aussi.
Je me demande si cela n’est pas mon soyoustart et les dns secondaires qui me bloque

jpcanut
Reply to  jpcanut
10 années plus tôt

:443 has no VirtualHosts

????

jpcanut
Reply to  jpcanut
10 années plus tôt

Merci et ouf!!
Le prob était ovh et la liaison avec le sous domaine owvercheck.
Il faut garder les dns de chez ovh
après cela roule.
J’apprécie beaucoup tes retours. on se sent moins seul

adrien
adrien
10 années plus tôt

Bonjour,
une question bete, pourquoi dans le nom d utilisateur on est obligé d avoir « default ».
ca fait que mon test s appel « defaultest », ca fait crado, y a pas moyens de l enlever?
sur ton tuto, pourquoi ne pas avoir intégré les produits tomcat?
apres ce que je trouve dommage, c est que tu aies si vite passé l installation de l isp config.

le reste est clair et efficace. ca me convient. merci

Andriana
10 années plus tôt

1/ En gros si on prend l’exemple de ce tuto, pour aller voir le site il faudrait taper:
http://lemetal.net/web/index.html ?
(en considérant que les dns sont bien configurés..)

2/ Sinon oui, le ftp fonctionne mieux avec l’ajout de defaultadmin dans le shell.

Andriana
10 années plus tôt

Re:: « 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 : »……….

Enfin, je voudrais savoir quelle url taper pour attérir sur la page index.html (par default)

Merci