Mettre en place un serveur LAMP

LAMP est l'acronyme de Linux (pour le système d'exploitation qui gère le serveur), Apache (c'est le type du serveur), MySQL (le type de la base de données utilisée) et PHP (qui est un langage de script permettant de générer des pages web dynamiques et de communiquer avec la base de données).

Introduction

Pourquoi LAMP ?! Juste parce que depuis que je me suis mis à la programmation web, j'ai toujours travaillé avec un serveur Apache ! C'est tout simple :)

Avoir un serveur chez soi est très avantageux, d'une part pour notre système domotique mais pas que ! Il permettra de gagner en indépendance vis-à-vis les géants du web ! Ainsi, vous pouvez héberger chez vous votre propre cloud (à l'image de dropbox ou Google Drive), votre streaming musique/vidéo (comme Spotify) ainsi que plein d'autres services dont je présenterai certains dans de prochains tutoriaux.

Bientôt, je publierai le code source d'une application mobile pour contrôler notre arduino et donc notre système domotique. Mais pour que cette application puisse fonctionner, un serveur Apache est (presque) indispensable !

Installation

Pour lancer l'installation de notre serveur, tapez :

sudo apt-get install apache2 php5 mysql-server phpmyadmin

phpMyAdmin donne une interface graphique à notre base de données. Si vous préférez taper des commandes, c'est votre droit :)

Pendant le processus d'installation, on vous demandera de choisir un mot de passe pour l'administrateur votre base de données.
Ensuite, vous aurez le choix entre l'installation d'Apache ou de Lighttpd. J'ai choisi Apache (vu le sujet du tutoriel). Lighttpd est un serveur plus léger (donc qui convient mieux vu les limites du raspberry) mais sachez qu'il ne supporte pas les fichiers .htaccess qui sont utilisés par Apache.

Ensuite vous serez demandé si vous souhaitez configurer la base de données de phpmyadmin avec db-config-common : Oui

A présent, vous devez entrer le mot de passe que vous venez de choisir pour votre base MySQL. Ensuite, on vous demandera d'entrer un mot de passe pour la connexion entre MySQL et phpMyAdmin. Comme vous ne serez pas ammener à utiliser ce mot de passe, vous pouvez laisser le champ vide et le système en générera un par lui même.

Si vous choisissez quand même d'entrer votre propre mot de passe, vous devriez le confirmer une deuxième fois.

Pour rendre phpMyAdmin accessible depuis votre navigateur :

        		cd /var/www
        		sudo ln -sn /usr/share/phpmyadmin

Maintenant, pour accéder à votre serveur, tapez l'adresse ip de votre raspberry dans votre navigateur. Pour accéder à l'interface de phpMyAdmin, tapez (http://adresse_ip/phpmyadmin). Pour y accéder :

Connexion sécurisée SSL

Vous aurez peut-être envie de sécuriser vos échanges de données avec votre serveur en rajoutant le fameux s devant http. Voici comment y procéder :

        		sudo mkdir /etc/apache2/ssl
        		sudo openssl req -x509 -nodes -days 1095 -newkey rsa:2048 -out /etc/apache2/ssl/server.crt -keyout /etc/apache2/ssl/server.key

Remplacez 1095 par la durée de validitée de votre certificat (en jours) !

Patientez un petit moment, puis vous devriez répondre à quelques questions :

Il est indispensable de mettre en Common Name le nom de votre domaine (ou l'adresse IP) parce qu'un des moyens de vérifier que vous vous connectez au bon site internet c'est de comparer son URL avec celui fourni dans le certificat !

        		sudo a2enmod ssl
        		sudo ln -s /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/000-default-ssl
        		sudo nano /etc/apache2/sites-enabled/000-default-ssl

Cherchez maintenant SSLCertificate puis procédez aux changements suivants :

        		SSLCertificateFile /etc/apache2/ssl/server.crt
        		SSLCertificateKeyFile /etc/apache2/ssl/server.key

On redémarre notre serveur :

sudo /etc/init.d/apache2 restart

Maintenant, si vous essayez d'accéder à votre serveur en mode sécurisé (https://adresse_ip/), vous devriez y arriver :)

Autres

Parfois, il est possible d'obtenir l'erreur suivante en démarrant le service apache2 :

Could not reliably determine the server’s fully qualified domain name, using 127.0.1.1 for ServerName.

Pour régler ce problème, ouvrer le fichier /etc/apache2/apache2.conf et ajouter la ligne suivante à la fin ServerName localhost. Maintenant redémarrer le serveur :

sudo service apache2 restart