Vous pouvez créer et administrer votre propre serveur Web sous Linux, ce n’est pas si compliqué que ça en a l’air, il suffit de s’y intéresser un peu. Le choix des distributions ne manque pas, je vous propose de le faire sous Debian 8 Jessie. Celle-ci vous apporte une excellente stabilité et une installation aisée des composants grâce à la commande apt-get.
Dans ce tutoriel, je vous explique comment installer un serveur LAMP, c’est à dire un serveur web avec les technologies Linux, Apache, MySQL, Php.
Je survolerai certains points sur la sécurité, pour une utilisation en production, veillez à bien configurer votre pare-feu, à définir des mots de passe suffisamment fort entre autre.
Un minimum de connaissances linux est requis, aussi je vous conseille de vous entraîner sur une machine virtuelle de test, avec VirtualBox par exemple. Ainsi, vous pourrez revenir plus facilement en arrière en cas d’erreur grâce aux Snapshots.
Comment installer un serveur web LAMP sous Debian 8
Dans ce tutoriel, je ne décris pas l’installation du système d’exploitation Debian. Je pars du principe qu’il est fraîchement installé par vos soins ou votre hébergeur, avec les composants de base (éditeur VI, SSH, …).
1. Préparer le serveur
1.1. Créer un compte utilisateur secondaire
Pour l’exemple, ajoutons l’utilisateur toto :
adduser toto
1.2. Configurer SSH
Un accès SSH est indispensable pour administrer un serveur web, voici quelques bases pour sécuriser votre accès.
Éditer le fichier de configuration SSH avec l’éditeur de votre choix :
vi /etc/ssh/sshd_config
Puis modifier les lignes suivantes :
Port 2208 # Changer le port par défaut pour des raisons de sécurité PermitRootLogin no # Interdire la connexion avec le compte root AllowUsers toto # Autoriser le compte utilisateur toto à se connecter en SSH
Redémarrer le service SSH :
/etc/init.d/ssh restart
Après cette modification, connectez-vous avec un client SSH sous le compte toto puis ouvrez une session avec l’utilisateur root depuis la console (en tapant su root ou utilisez sudo à votre convenance).
1.3. Dépôts et mises à jour des paquets
Éditez le fichier sources.list :
vi /etc/apt/sources.list
Puis ajoutez les dépôts contrib et non free :
# Main update deb http://ftp.debian.org/debian/ jessie main contrib non-free deb-src http://ftp.debian.org/debian/ jessie main contrib non-free # Security update deb http://security.debian.org/ jessie/updates main contrib non-free deb-src http://security.debian.org/ jessie/updates main contrib non-free # jessie-updates, previously known as 'volatile' deb http://ftp.fr.debian.org/debian/ jessie-updates main deb-src http://ftp.fr.debian.org/debian/ jessie-updates main
Mettez à jour la liste des dépots et des paquets installés :
apt-get update && apt-get upgrade
Passons maintenant aux choses sérieuses 🙂 Nous sommes fin prêts pour installer notre serveur web sous Linux !
2. Installer MySQL
Pour installer MySQL, saisissez la commande suivante :
apt-get install mysql-server mysql-client
L’outil de gestion des paquets vous invitera à définir le mot de passe du compte root de la base de de. Vous pourrez créer d’autres comptes utilisateurs après avoir installé phpMyAdmin.
3. Installer Apache2
3.1 Installation
Pour installer Apache 2, exécuter la commande suivante :
apt-get install apache2 apache2-doc
3.2 mod_rewrite
Je vous conseille également d’activer le mod_rewrite utilisé pour la réécriture d’URL:
a2enmod rewrite
Créer votre fichier de configuration personnalisé :
vi /etc/apache2/conf-available/custom.conf
Et ajouter y ces lignes pour activer mod_rewrite :
#Rewrite engine On <ifModule mod_rewrite.c> RewriteEngine On </ifModule>
Enregistrez le fichier puis activez la nouvelle configuration :
a2enconf custom
Puis redémarrer le service apache2 :
/etc/init.d/apache2 restart
3.3 Tester le fonctionnement d’ Apache 2
Vérifiez le bon fonctionnement du serveur apache en visitant l’adresse de votre serveur, par exemple http://<adresse_ip_de_mon_serveur>
La page de bienvenue comme ci-dessous doit s’afficher.
Par défaut, le dossier qui contiendra vos sites web se situe dans /var/www/html.
Par mesure de sécurité, je vous conseille de remplacer ou de supprimer le fichier /var/www/html/index.html.
4. Installer php5
Pour installer php5, la commande est la suivante :
apt-get install php5 php5-mysql libapache2-mod-php5
Votre fichier de configuration php.ini se situera dans /etc/php5/apache2.
A chaque modification de ce fichier, pensez à redémarrer le service Apache pour qu’elles soient prises en compte.
5. Installer phpMyAdmin
C’est au tour de phpMyAdmin. Il nous servira à gérer notre serveur de base de données MySQL :
apt-get install phpmyadmin
Le gestionnaire vous demandera le type de serveur web à utiliser, choisissez apache2 évidemment.
Autorisez le également à paramétrer votre base de données et lui fournissant les mots de passe qui vont bien.
Vous pourrez accéder à phpMyAdmin en visitant l’url de votre serveur suivi de phpmyadmin. Ex : http://<adressedemonserveur>/phpmyadmin
Si cela ne fonctionne pas, vérifiez la présence du fichier phpmyadmin.conf dans /etc/apache2/conf-available/.
S’il n’est pas présent, créez le lien symbolique manuellement :
ln /etc/phpmyadmin/apache.conf /etc/apache2/conf-available/phpmyadmin.conf
Puis activer la configuration :
a2enconf phpmyadmin
Et enfin relancer le service Apache.
Si vous n’êtes pas dans un environnement de développement et que votre serveur est accessible depuis l’extérieure, je vous conseille de renommer votre alias phpmyadmin et d’ajouter une authentification htpasswd.
6. Ajouter un vhost
Remplacer monsite.fr par votre nom de domaine.
Ajoutons tout d’abord notre utilisateur toto au groupe www-data (groupe apache):
usermod -g www-data toto
Ensuite, il faut créer un sous répertoire dans le dossier document root d’apache :
mkdir /var/www/htdocs/monsite.fr
Changer le propriétaire et le groupe puis donner les droits au dossier nouvellement créé :
chown -R toto:www-data /var/www/htdocs/monsite.fr chmod -R 770 /var/www/htdocs/monsite.fr
Vous pouvez également affiner les droits en donnant les privilège 640 aux fichiers et 750 aux dossiers. En vous positionnant dans le dossier en question (cd /var/www/htdocs/monsite.fr) , tapez les commandes suivantes :
find . -type d -exec chmod u=rwx,g=rx,o= '{}' \; find . -type f -exec chmod u=rw,g=r,o= '{}' \;
Pour les dossiers qui doivent être en écriture (upload de fichiers), donnez les droits 770.
Ajouter le vhost en créant le fichier /etc/apache2/sites-available/monsite.conf puis y insérer :
<VirtualHost *:80> #ServerName monsite.fr ServerAdmin webmaster@localhost DocumentRoot /var/www/htdocs/monsite DirectoryIndex /index.php index.php ErrorLog ${APACHE_LOG_DIR}/monsite_error.log CustomLog ${APACHE_LOG_DIR}/monsite_access.log combined <Directory /var/www/htdocs/monsite> Require all granted AllowOverride All </Directory> </VirtualHost>
Activer le Vhost :
a2ensite monsite
Et enfin redémarrer apache :
/etc/init.d/apache2 restart
Plus d’informations
Voilà, vous savez dorénavant monter un serveur Web sous Debian 8 Jessie. Vous pouvez aller plus loin en installant php-fpm, des backups automatisés, etc. Je vous invites à farfouiller dans la doc de Debian et d’apache 2 :
Vos suggestions sont les bienvenues 😉