Une Raspberry Pi en Serveur web

Installer un serveur web sur votre Raspberry (Apache + PHP + MySQL)

Mis à jour le 24 mars 2014 - 189 Commentaires - , , , , , , , , ,

Après avoir créé votre carte SD, et après avoir démarré pour la première fois votre Raspberry Pi, il y a de fortes chances que vous souhaitiez l’utiliser comme un serveur web.

La Raspberry Pi comme serveur web, pourquoi ?

Mais pourquoi utiliser la Raspberry comme un serveur Web, plutôt que de faire appel à des prestataires de services spécialisés dans l’hébergement web ?

Tout d’abord, d’un point de vue économique, il faut savoir que les services d’hébergement web ne sont pas gratuits et qu’il faut sortir le porte-monnaie tous les mois/ans. Contrairement à la Raspberry qui demande juste une connexion.
De plus, en choisissant la Raspberry, vous avez la possibilité de modifier vos services à souhait (exemples : la taille du disque, l’hébergem­ent de Database, etc.), ce qui n’est en général pas le cas chez les hébergeurs spécialisés, qui vendent souvent des hébergements mutualisés avec une faible capacité de configuration.
Cependant pour supporter plus d’utilisateurs, vous avez intérêt à utiliser une Raspberry Pi 3, soit la Raspberry Pi avec 1 Go de RAM, plutôt que la Raspberry de type B+ (512 Mo de RAM)

La question qui se pose maintenant est, comment faire de la Raspeberry un serveur web ?

Installation du serveur Apache avec Raspbian

Apache, c’est quoi ?

Tout d’abord, nous allons installer Apache, qui est le serveur web en tant que tel.
Quand on parle de serveur web, on pense souvent à la machine, mais ce terme désigne aussi le logiciel qui permet à la machine d’analyser les requêtes d’un utilisateur (sous forme http), et de retourner le fichier correspondant à la requête (ou une erreur si le fichier n’est pas trouvé, ou la requête mal formulée).
Dans le cadre d’Apache, c’est donc du logiciel que l’on parle.

À l’heure actuelle, Apache est le serveur web le plus utilisé, avec environ 60 % de parts de marché. Apache possède même sa propre licence, utilisée par de nombreux autres projets. De plus, l’utilisation massive d’Apache (devenu le standard des serveurs web), couplée à sa forte popularité, à amener à une formidable abondance de documentation, de cours, et autres livres traitant de son utilisation, depuis l’installation jusqu’à la sécurisation.

Que ce soit pour la Raspberry Pi et Raspbian, ou pour une machine plus généraliste, Apache est donc un choix sûr, et les compétences que vous pourrez acquérir sur le sujet vous seront toujours utiles.

Installation d’Apache

Avant d’installer le serveur, assurons nous d’avoir une machine bien à jour. Pour ce faire nous devons posséder les droits administrateur, soit en étant connecté en root, soit via la commande sudo.

sudo aptitude update
 sudo aptitude upgrade

Une fois la Raspberry Pi à jour, nous allons installer le serveur Apache.

sudo aptitude install apache2

Au passage, nous allons en profiter pour donner des droits au dossier d’apache qui vous permettra de facilement administrer les sites. Pour cela, lancez les commandes suivantes :

sudo chown -R pi:www-data /var/www/html/
sudo chmod -R 770 /var/www/html/

Vérifier qu’Apache fonctionne

Une fois l’installation terminée, nous pouvons tester qu’Apache fonctionne correctement en nous rendant sur l’adresse de la Raspberry.
Pour cela, il faut tenter d’accéder à la Raspberry depuis le port 80 (ce port n’étant pas encore ouvert depuis l’extérieur, il faudra le faire depuis la Raspberry elle-même). Ne vous inquiétez pas, c’est très facile. Il vous suffit d’ouvrir le navigateur web de la Raspberry (par défaut Midori sous Raspbian), et d’aller à l’adresse « http://127.0.0.1 ». Vous devriez alors obtenir une page avec un message du genre « It works! » et plein d’autre texte.
Si jamais vous ne possédez pas d’interface graphique sur votre Raspbian, ou que vous utilisez le SSH pour vous connecter à votre Raspberry, vous pouvez utiliser la commande suivante :

wget -O verif_apache.html http://127.0.0.1

Cette commande va enregistrer le code HTML de la page dans le fichier « verif_apache.html » dans le répertoire courant.
Vous n’avez donc plus qu’à lire le fichier avec la commande

cat ./verif_apache.html

Si vous voyez marqué à un endroit dans le code « It works! », c’est qu’Apache fonctionne.

 

Apache utilise le répertoire /var/www/html comme racine pour votre site. Cela signifie que quand vous appelez votre Raspberry sur le port 80 (http), Apache cherche le fichier dans /var/www/html.

Par exemple, si vous appelez l’adresse http://127.0.0.1/example, Apache cherchera le fichier example dans le répertoire /var/www/html.
Pour ajouter de nouveaux fichiers, sites, etc., vous devrez donc les ajouter dans ce répertoire.

Vous pouvez dès à présent utiliser votre Raspberry pour faire un site en HTML,  CSS et JavaScript pur, en interne.
Cependant, vous voudrez sans doute rapidement permettre des interactions entre le site et l’utilisateur. Par exemple permettre à l’utilisateur de s’inscrire, etc. Pour cela, vous allez avoir besoin de PHP.

Installation de PHP sur la Raspberry

Qu’est-ce que PHP ?

Tout d’abord, il faut savoir que le PHP est un langage interprété. Et comme dans le cas des serveurs, l’acronyme PHP peut avoir plusieurs sens. En fait, quand l’on parle de PHP, on peut parler soit du langage, soit de l’interpréteur.
Ici, quand nous parlons d’installer PHP, cela signifie que nous allons installer l’interpréteur, afin d’utiliser le langage.

PHP (le langage cette fois) est principalement utilisé pour rendre un site dynamique, c’est-à-dire que l’utilisateur envoie des informations au serveur qui lui renvoie les résultats modifiés en fonction de ces infos. A contrario, un site statique ne s’adapte pas aux informations fournies par un utilisateur. Il est enregistré sous forme de fichier une fois pour toute, et livrera toujours le même contenu.

PHP est libre, et maintenu par la fondation PHP, ainsi que l’entreprise Zend, et diverses autres entreprises (il est à noter que Zend est aussi l’auteur du célèbre framework Zend PHP, très utilisé et reconnu dans le monde de l’entreprise).

C’est un des langages de programmation les plus utilisés, et c’est même le plus utilisé pour la programmation destinée au web, avec environ 79 % de parts de marché.

Là encore, l’ensemble des compétences que vous pourrez acquérir, sur le langage ou sur l’installation et la configuration de l’interpréteur, vous seront toujours utiles. Nous ne pouvons donc que vous conseiller d’apprendre le PHP, qui est vraiment un langage merveilleux et trop souvent sous-estimé.

Installer PHP

On va encore une fois faire appel à l’administrateur pour installer PHP avec la ligne de commande.

sudo aptitude install php php-mbstring

Vérifier que PHP fonctionne

Pour savoir si PHP fonctionne correctement, ce n’est pas très compliqué, et la méthode est relativement proche de celle employée pour Apache.

Vous allez en premier lieu supprimer le fichier « index.html » dans le répertoire « /var/www/html ».

sudo rm /var/www/html/index.html

Puis créez un fichier « index.php » dans ce répertoire, avec cette ligne de commande

echo "<?php phpinfo(); ?>" > /var/www/html/index.php

À partir de là, le fonctionnement est le même que pour la vérification d’Apache. Vous tentez d’accéder à votre page, et vous devriez avoir un résultat proche de cette image (si vous n’avez pas d’interface, utilisez la même méthode que précédemment, et cherchez les mots « PHP Version »).

Capture d'un phpinfo d'un serveur sous Raspbian

Tableau généré par la commande phpinfo sur une raspberry.

 

Une base de données MySQL pour votre serveur

Un SGBD c’est quoi ? Pourquoi MySQL ?

Maintenant que nous avons mis en place PHP, vous allez sans doute vouloir stocker des informations pour les utiliser dans vos sites. Pour cela, on utilise le plus souvent des bases de données.
Nous allons donc mettre en place un SGBD (Système de Gestion de Bases de Données), à savoir MySQL.

MySQL est un SGBD libre, puissant, massivement utilisé (environ 56 % de parts de marché des SGBD libres). Là encore, MySQL est tellement un incontournable du développement, quelle qu’en soit la branche, que vous devez absolument l’apprendre et le maitriser.

Installer MySQL

Pour ce faire, nous allons installer mysql-server et php-mysql (qui servira de lien entre php et mysql)

sudo aptitude install mysql-server php-mysql


Vérifier que MySQL marche correctement

Pour vérifier le fonctionnement de MySQL, cette fois nous utiliserons uniquement la ligne de commande. Pour cela, nous allons simplement nous connecter via la commande :

sudo mysql --user=root

Nous allons maintenant supprimer l’utilisateur root et créer un nouvel utilisateur root, car celui par défaut n’est utilisable que par le compte administrateur du système, et n’est donc pas accessible aux script PHP du serveur.

Pour cela, une fois connecté à MySQL, lancez les commandes suivantes (remplacez password par le mot de passe de votre choix) :

DROP USER 'root'@'localhost';
CREATE USER 'root'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost';

Vous avez donc maintenant un serveur web, relié à PHP et à MySQL. Soit tout ce qu’il faut. Vous pouvez donc vous arrêter ici.

(Lors de vos prochaine connections, vous pourrez donc utilisez la commande mysql --user=root --password=votremotdepasse).

PHPMyAdmin, gérer facilement ses bases de données

Toutefois, vous pourriez vouloir une interface un peu plus simple pour administrer vos bases de données qu’une simple console MySQL. Pour cela, vous pouvez installer PHPMyAdmin.

PHPMyAdmin, c’est quoi ?

PHPMyAdmin est une application développée en PHP, et qui vise à fournir une interface simplifiée pour MySQL.
Elle vous permet par exemple de voir rapidement et de façon lisible le contenu de votre base de données, ou de la manipuler sans avoir besoin de faire vous-mêmes vos requêtes MySQL.

Installer PHPMyAdmin

L’installation de PHPMyAdmin n’est pas du tout obligatoire. Nous ferons ici une installation sans paramètres de sécurité particuliers.

L’installation de PHPMyAdmin se fait très simplement, via le gestionnaire de paquets, en utilisant la commande suivante :

sudo aptitude install phpmyadmin

PHPMyAdmin vous posera plusieurs questions concernant ses réglages.

Comme nous avons déjà configurez la base de données, choisissez no à la question concernant l’utilisation de dbconfig-common. Choisissez d’utiliser PHPMyAdmin pour un serveur Apache. Pour le mot de passe root, il s’agit de celui que vous aviez utilisé pour MySQL.

Vérifier l’installation de PHPMyAdmin

Pour vérifier le bon fonctionnement de PHPMyAdmin, vous allez simple tenter d’y accéder, en utilisant l’adresse de votre Raspberry suivi de /phpmyadmin. Par exemple, en local ce sera « http://127.0.0.1/phpmyadmin ».

Si jamais vous avez une erreur, cela peut venir du fait que PHPMyAdmin se soit installé dans un autre dossier. Dans ce cas, essayez la commande

sudo ln -s /usr/share/phpmyadmin /var/www/html/phpmyadmin

Rendre votre raspberry pi accessible depuis le web

Votre serveur web est donc prêt. Cependant, vous ne pouvez sans doute pas y accéder depuis internet. En effet, il faudrait pour cela que votre box (livebox, freebox, etc.) redirige les requêtes vers votre Raspberry, sur les bons ports, etc.
Pour mettre ces redirections en place, et même obtenir une adresse URL, allez voir le tuto sur le port fowarding et le dydns.


Vous débutez avec la gestion d’un serveur Apache ? Vous voulez en apprendre plus sur la gestion d’un serveur ? Vous trouverez votre bonheur avec le cours de notre partenaire Éléphorm pour apprendre à bien gérer votre serveur web !


 

Partager
Newsletter
Auteur :
Raspbian France
Rejoignez la communauté Raspberry Pi
Un ordinateur à 35€ déjà vendu à 10 millions d'exemplaires
ACHETEZ LA NOUVELLE RASPBERRY PI 3
Tutoriels en rapport
Installer un media-center avec OSMC sur votre Raspberry Pi ! RaspiSMS 2.0, envoyer des SMS par internet avec la Raspberry Pi Bien choisir vos accessoires pour les Raspberry Pi 3 et 2 Envoyer, gérer et recevoir des SMS avec la Raspberry Pi Installer un serveur Minecraft sur votre Raspberry Pi !
189 commentaires
Besoin d'aide ? Vous la trouverez plus vite sur notre forum.
  1. Alexandre dit :

    Bonjour, article très intéressant, malgré tout, pouvez vous mettre a jour l’article aux dernières versions ? Parce que php5 est obsolète, j’ai donc installé php7 mais je ne peux installer mysql puisque la commande ne fonctionne que pour php5, bref, une galère.. Merci beaucoup !

    1. Salut, nous avons mis ça à jour !

  2. Meo dit :

    Bonjour, je bloque à l’étape de l’installation de Mysql. J’ai cru comprendre qu’il y a eu des changements avec Raspbian stretch et je ,’arrive pas à installer PHP5-mysql… De plus on ne me demande pas de mot de passe lors de « sudo aptitude install mysql-server php5-mysql »…
    J’ai cherché la réponse sur pluseiurs sites, mais étant nouveau au monde de linux je ne comprend pas très bien la procédure à suivre ^^’

    1. Salut, essayes peut-être en installant php7 à la place !

  3. Bertrand dit :

    Bonjour a tous,
    Je ne suis pas programmeur et complètement néophyte de ce genre de chose, j’espère que vous ne m’en voudrez pas.

    Voila je recherche une solution peu chère pour créer un réseau de stockage pour un site web. En gros j’aimerais que des fichiers soit stocker chez des partenaire (individuel), que ces fichiers soit référencés sur la base de données du site web, et que sur demande (via le site web) que ces fichiers soient téléchargeable sur le site web.

    Je suis arrivé a cette en me rendant compte que télécharger tout les fichier sur le site web n’était pas viable, autant pour le stockage nécessaire en ligne, que sur le trafic nécessaire pour envoyer tout ces fichiers. j’en suis donc arrivé a la solution de télécharger uniquement ce qui serai nécessaire.

    Mon Idée serai de fournir une « BOX » qui serai en fait un raspberry Pi pre programmé pour être lié a la base de données, une sorte de serveur dédié. Que ces « BOX » puissent être nombreux voir très nombreux. Qu’ils soient sécurisé, peut être avec l’aide d’un VPN.

    Si vous avez des conseils a me donner j’en serai ravi, on peut meme en discuter en privé.

    Merci d’avance.

    1. Salut, pour ce type de demandes je te conseil plutôt d’aller sur le forum (forum.raspbian-france.fr) où tu pourras être mieux conseillé.

  4. jugo dit :

    super le tuto merci vraiment

  5. GuimEirbb dit :

    Bonjour,

    Déjà merci pour ce tuto bien détaillé.
    Je l’ai suivi une première fois il y a quelques semaines sur mon 1er raspberry, et je n’ai rencontré aucun problème.
    Suite à une carte SD qui a rendu l’âme (et comme je ne fais pas de sauvegardes régulières), j’ai dû réinstaller raspbian sur une nouvelle sd, et j’ai donc recommencé ce tuto pour réinstaller un serveur web.

    Mais là, problème:
    Lors de l’installation de mysql, il ne me demande pas de mot de passe …
    J’ai cherché un peu, et j’ai trouvé une solution ici, dans les commentaires :

    « Commence par arrêter MySQL
    sudo /etc/init.d/mysql stop
    Ensuite tu dois redémarrer Mysql sans mot de passe :
    sudo mysqld_safe –skip-grant-tables &
    Maintenant tu vas devoir te connecter avec le compte mysql root:
    mysql -uroot
    Une fois dans MySQL, lancer les commandes suivantes:
    use mysql;
    update user set password=PASSWORD(« monNouveauPassword ») where User=’root’;
    flush privileges;
    quit; »

    Ca a l’air de fonctionner, pas de message d’erreur.
    Mais vient le moment du « stop » puis « start » du /etc/init.d/mysql.
    Le redémarrage plante, en me spécifiant que c’est dû à un timeout trop long …

    Je ne peux donc pas me connecter à mysql :/

    Quelques idées ??

    Merci d’avance

    1. GuimEirbb dit :

      Pour information, suite à plusieurs essais, et quelques arrachage de cheveux, il faut savoir que lors de l’installation de mysql-server, il n’est plus demandé de mot de passe.
      En effet, le mot de passe se met en place lors du premier accès à mysql via la commande:
      sudo mysql -u root -p.

      A noter qu’il faut maintenant utiliser « sudo » pour y accéder

      J’espère pouvoir en aider quelques uns 🙂

      1. Merci pour cette très bonne info !

      2. Ludovic I dit :

        Bonjour,

        Super ce tuto, mais je crois buter sur le même problème, au moment de vérifier que Mysql fonctionne bien, pas de demande de mot de passe.

        J’ai suivi les commandes que tu as indiqué, tout fonctionne, sauf au moment de redémarrer Mysql ($sudo /etc/init.d/mysql start) j’arrive aussi sur l’erreur de timeout trop long. Comment as tu réussi à relancer mysql ?

        Merci d’avance.

        1. Nous avons mis à jour le tuto.

  6. henry dit :

    Houlàlà… Ce tuto ne vaut rien… Ca ne fonctionne absolument pas.
    Déjà, la connection en root à mysql après avoir mofifié le compte root, c’est ZERO ! Ne fonctionne pas.
    Ensuite, phpmyadmin c’est ZERO,
    Impossible d’installer, il y a des erreurs de connexion avec le compte roo@localhost… !

    Franchement, gros problèmes en suivant ce tuto… je n’en suis nulle part… IL n’y a que la connection à Mysql qui fonctionne de la façon expliquée dans les commentaires, pas dans le tuto puisqu’il manque le sudo.

    Pouvez-vous complètement revoir les explications d’installation ?

    En attendant je cherche comment solutionner toutes ces problèmes…
    On est loin de quelque chose de précis,, désolé mais j’avais confiance et là je sens que je vais perdre plein de temps à contourner les problèmes… (j’utilise STRETCH sur un Raspberry 3).

    Est-ce que personne ne rencontre les mêmes problèmes ?

    1. Alors là désolé de te décevoir, mais le problème viens de chez toi… Par acquis de conscience j’ai refait tout le tuto sur une raspberry pi 3 avec raspbian Stretch et tout a fonctionné parfaitement !
      La modif du compte root fonctionne parfaitement (note que tu dois te connecter avec le compte root, par root@localhost). L’ajout de PHPMyAdmin, parfait. Quand tu dis qu’il manque sudo dans le tuto, c’est parfaitement normal. Il n’y a pas à avoir le moindre sudo une fois le nouvel utilisateur root créé.
      Du coup, je te conseil de réinstaller une carte Raspbian Stretch neuve, et de suivre le tuto point par point, en faisant un simple copié collé de chaque ligne.
      Normalement tout devrais fonctionner.

  7. Kilian dit :

    Bonjour j’essaie de suivre tuto seulement à chaque fois je tombe sur ça lors de l’installation de phpmyadmin « ERROR 1045 (28000): Access denied for user ‘root’@’localhost’ (using password: NO) »
    Merci de votre aide.

    1. Salut, il faut dire à PHPMyAdmin de ne pas utiliser common-dbconfig.

  8. Hoffbeck thierry dit :

    Bonjour,
    tout va bien jusqu’à l’installation de phpmyadmin et la:

    ERROR 1045 (28000): Access denied for user ‘root’@’localhost’ (using
    │ password: NO)

    I need help please…

    Arthus

    1. C’est parce-qu’au début de l’installation de PHPMyAdmin, il faut dire « no » quand il demande si on veux configurer la base avec dbconfig-common.

  9. Clément Vtrd dit :

    Bonjour,
    Tout d’abord : merci pour le tutoriel qui est très clair.

    J’ai réussi à suivre toute la partie « obligatoire » pour un serveur web, cependant je rencontre un problème lors de l’installation de PHPMyAdmin.

    Plus précisément, lors que l’utilitaire dbconfig-common me demande différente informations. Voici ce que j’ai réalisé :

    nom de la base de données : phpmyadmin (par défaut)
    Nom d’utilisateur : root@localhost
    Mot de passe : [password root]

    Peut-être ai-je mal compris l’une des étapes, auriez-vous une idée du problème ?

    Cordialement.

    1. Il me semble que PHPMyAdmin demande d’utiliser le démon dbconfig-common que si la base n’est pas déjà installée ou un truc comme ça non 😉

      1. Clément Vtrd dit :

        Ah je vois… Et vu qu’on la paramètre plus haut justement en choisissant le mot de passe, nous n’avons pas besoin d’utiliser le démon ? 🙂
        En tout cas merci d’avoir pris le temps de me répondre ! 🙂 Je n’ai plus qu’à me lancer dans la création de mon site web. 🙂

  10. Jonathan dit :

    Excellent tuto ! J’ai eu un petit soucis lors de la connexion a php my admin. Une erreur me disant que mbstring manquait.
    Du coup il suffit d’exécuter ces commandes:
    sudo apt-get install phpmyadmin php-mbstring php-gettext
    sudo service apache2 restart
    Et le tour est joué 🙂

  11. tend dit :

    Bonjour , tout d’abord je veux vous dire que j’adore votre article .
    Cependant j’ai un problème . Quand j’essaye de me connecter a MySQL , je reçois le message « ERROR 1045 (28000):access denied for user ‘root’@’localhost'(using password: YES )
    Je précise que mon mot de passe fonctionnait il y a encore deux jours , et que je n’ai pas installé phpadmin .
    Et je suis pourtant sur que c’est le bon , car j’ai pu en faire une photo il y a deux jours .
    Merci par avance de votre réponse .

    1. Salut, cela viens d’un changement dans le fonctionnement de MySQL (ils ont privilégiés la sécurité à la simplicité). Nous avons mis à jour le tutoriel, ça devrait régler le problème.

      1. tenr dit :

        Bonjour ,
        j’ai un petit problème sur l’interface phpmyadmin , j’ai un message du type « MySQL_real_connect(): (HY000/1045): access denied for user ‘phpmyadmin’@’localhost’ (using password:YES).
        Et cependant j’ai accès a ma base de donnée .
        Est ce qu’il y a un réel problème ou non ?
        Merci d’avance pour votre réponse , bonne soirée à vous .

        1. Salut, reconfigure PHPMyAdmin (dpkg --reconfigure phpmyadmin je pense) et dis lui ne pas utiliser db-common ou quelque chose comme ça.

  12. Vincent Ollivier dit :

    Merci pour ce tuto excellent !

    Tout s’est très bien déroulé, jusqu’à la vérification de l’installation de PHPMyAdmin. Lorsque je tente d’y accéder, j’ai ce message d’erreur :
    « phpMyAdmin – Error
    The mbstring extension is missing. Please check your PHP configuration. »
    J’ai pourtant essayé la commande « sudo ln -s /usr/share/phpmyadmin /var/www/html/phpmyadmin »
    mais cela ne change rien.
    Merci d’avance !

    1. Ah, il faut exécuter la commande suivante : sudo apt install php-mbstring

Partager
Inscription à la Newsletter
Inscrivez-vous à la Newsletter.
Vous avez aimé cet article ?
Inscrivez-vous et restez informé !