Installer un serveur web personnel - Partie 1 - Installation standard de macOS
Lors de notre guide sur le fonctionnement d'internet, nous avions vu que votre ordinateur, équippé de son navigateur internet, était un "client" d'internet. Il était capable de récupérer des informations depuis les nombreux serveurs qui se trouvent sur internet.
Saviez vous qu'il est possible, avec quelques conditions, de transformer votre Mac en serveur internet, et donc de devenir fournisseur d'informations ?
Plus simplement, il est aussi possible de transformer votre Mac en serveur web personnel, permettant de partager des informations à l'intérieur de votre réseau local. Ainsi vous pourrez à travers quelques pages web, créer des contenus depuis votre Mac et le voir depuis les appareils de toute la famille, qu'il s'agisse d'autres Mac, de PC, mais aussi de smartphones ou tablettes.
Transformer votre Mac en serveur web n'est pas très compliqué. Comme nous l'avions vu dans la seconde partie de notre guide, un serveur web est principalement composé d'un logiciel de serveur de fichiers à travers le protocol HTTP/S, puis, pour avoir de l'intelligence comme la très grande majorité des serveurs internet, d'un logiciel de script et enfin la gestion de bases de données pour stocker les informations.
Il existe plusieurs solutions transformer un Mac en serveur web. Nous allons progresser crescendo en difficulté, à travers 3 articles. Chacun de ces 3 articles permettra d'installer un serveur web complet et permettra de lancer son premier site intranet.
macOS est un système d'exploitation parfaitement taillé pour remplir le rôle d'un serveur web. Et avec cette première solution, nous allons voir que macOS contient, de base, la plupart des logiciels pour transformer rapidement son Mac en serveur web.
Ouvrez votre terminal et commençons !
1/ Activons le serveur HTTP
macOS dispose, dès son installation, d'un serveur HTTP : Apache HTTPD. Apache HTTPD est un logiciel OpenSource de la fondation Apache, il est certainement le serveur HTTP le plus répondu au monde.
Apache n'est pas un simple logiciel, il est composé de plusieurs applications, chacune ayant un but précis.
Pour démarrer le serveur, nous utilisons la commande apachectl, avec le paramètre start. apachectl doit être lancé en tant qu'administrateur
sudo apachectl start
Note : Dès la première version Mac OS X jusqu'à 10.8 Montain Lion, il était possible de démarrer le serveur httpd d'Apache directement depuis les préférences système. Ce n'est désormais plus possible .... une nouvelle petite mesquinerie d'Apple, dommage, c'était bien pratique.
Il suffit d'ouvrir un navigateur, pour voir le résultat immédiat. Pour cela il suffit de taper l'adresse "localhost".
Si vous souhaitez y accéder depuis un autre ordinateur du réseau, voir votre iPhone ou autre appareil, il faudra soit taper l'adresse IP, soit le nom qui est indiqué dans l'onglet Partage des Préférences Système. Pour moi, il faudra que j'aille sur macpro.local
apachectl permet de contrôler le serveur web, il dispose d'autres paramètres dont voici les plus utilisés
- stop : arrête le service web
- restart : redémarre le service web
- graceful : recharge la configuration sans redémarrer le serveur web
- configtest : teste la configuration, sans arrêter le service web
- help : affiche l'aide
pour connaitre la version d'Apache, il faut questionner l'application qui enverra les pages web, avec le paramètre -v pour version.
httpd -v
Sur macOS 10.13.3, la réponse sera
Server version: Apache/2.4.28 (Unix)
Server built: Oct 9 2017 19:54:20
Comme vous pouvez le voir, la version date de fin 2017, pour Apple, ce n'est pas si mal. Nous avons connu des versions de Mac OS X ayant plusieurs années de retard sur les logiciels en lignes de commande intégrés. Pour information, la version la plus récente, à la date de cet article est la version 2.4.33 qui date de Mars 2018.
Dernier point concernant le serveur web, il faut localiser les fichiers qui sont disponibles via le serveur web. Heureusement, la configuration de base de permet d'accéder qu'à un répertoire dédié.
Ce répertoire se trouve dans la bibliothèque partagée par tous les utilisateurs, dont voici l'emplacement
/Library/WebServer/Documents/
Sur un macOS en français, ce sera dans
/Bibliothèque/WebServer/Documents/
Vous y trouverez le fichier index.html qui contient le fameux "It works!" que vous avez vu précédement. Nous pouvez écrire dans ce fichier, puis recharger la page de votre navigateur pour voir le contenu qui a changé. Vous pouvez aussi créer votre propre page, ainsi en créant, par exemple la page mon-super-test.html, vous pourrez l'afficher en indiquant à votre navigateur :
- http://localhost/mon-super-test.html
Si vous ne le connaissais pas encore, vous pouvez apprendre le HTML, ce n'est pas très compliqué, et vous permettra de déjà de structurer vos pages web. Dans le même temps, il sera judicieux d'apprendre les bases des styles CSS afin d'embellir rapidement vos pages.
Maintenant que vous disposez d'un serveur web fonctionel, vous pouvez partager des pages statiques à l'intérieur de votre réseau local. Vous pouvez vous satisfaire d'un simple serveur web, ou choisir d'ajouter des scripts côté serveur pour faire plein de choses vachement chouettes.
2/ Activons le logiciel de script
Comme nous l'avions vu dans le guide, le script côté serveur permet de donner de l'intelligence aux pages que l'on délivre.
Encore une fois, macOS dispose dès son installation du language de script le plus utilisé sur Internet : PHP.
A proprement parlé, il n'y a pas besoin de l'activer. PHP est appellé à la demande, et ne s'active qu'à ce moment la. Ainsi vous pouvez directement taper, par exemple :
php -r "echo 2+2;"
et vous obtiendrez la réponse (évidente)
4
Comme pour Apache, PHP sur macOS n'est pas la dernière version disponible, pour connaître la version de notre Mac, il suffit de taper :
php -v
pour obtenir la réponse
PHP 7.1.7 (cli) (built: Jul 15 2017 18:08:09) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies
encore une fois il s'agit d'une version de 2017 alors que nous sommes déjà à la mi-2018.
La dernière version, à l'heure où j'écris ces lignes est la 7.2.7 ou dans la même branche que la version de macOS, la 7.1.19. Avant High Sierra, Apple proposait toujours PHP dans sa version 5.
S'il n'est pas besoin d'activer PHP, il faut tout de même indiquer à Apache que nous souhaitons l'utiliser pour nos pages. Dans une configuration normale d'Apache, il existe une application pour activer rapidement, facilement, et sans risque d'erreur des modules.
Mais sur macOS, il en va autrement, il est nécessaire d'aller éditer le fichier de configuration pour activer notre module. Ouvrons le, avec les droits administrateurs avec nano, un éditeur de texte en ligne de commande
sudo nano /etc/apache2/httpd.conf
Ensuite, parcourez le fichier, pour atteindre la ligne (chez moi, 176)
#LoadModule php7_module libexec/apache2/libphp7.so
ou sur macOS 10.12 ou précédent
#LoadModule php5_module libexec/apache2/libphp5.so
Il suffit ensuite de décommenter cette ligne, en supprimant le # qui la préfixe, pour obtenir
LoadModule php7_module libexec/apache2/libphp7.so
Ensuite, enregistrer avec ctrl+O, tapez entrée, pour valider.
Enfin, quitter avec ctrl+X, vous êtes de retour sur le terminal.
Vous l'avez vu, il y a une multitude de modules disponibles pour Apache, mais il est préférable de n'activer que ce dont on a besoin.
Il faut désormais redémarrer le serveur web
sudo apachectl restart
ou réinitialiser sa configuration
sudo apachectl graceful
Pour tester, écrivons un petit fichier en PHP, que l'on peut nommer test.php, à placer à côté de l'index.html
En chargeant la page depuis le navigateur, nous obtenons
Le code PHP commence et se termine toujours par ces tags particuliers et spécifiques. Cela lui permet de s'intégrer au milieu d'une page HTML. La commande echo demande tout simplement d'afficher la chaîne de caractères qui suit.
PHP étant l'un des languages les plus utilisés sur internet, il est en constante évolution. C'est un language qui permet, au début, de faire des choses très simple, mais qui disposent d'une multitude de fonctions avancées qui lui permettent, dans un second temps, de faire aussi des choses très complexes.
J'écrirai certainement, dans le futur, et pour ceux qui le souhaitent, quelques tutoriels pour commencer avec PHP. En attendant, voici la page du manuel PHP, extrèmement complète qui vous permettra de trouver le détail de chacune des fonctions.
3/ Installation de MySQL
Maintenant que le script est fonctionnel, il faut un service de gestion de données pour enregistrer les informations que vous devrez stocker. S'il est possible d'utiliser des fichiers tout simplement, on en atteint malheureusement rapidement les limites. Les accès, mais surtout les écritures concurrentielles, peuvent poser soucis. Et finalement, l'utilisation d'une base de données, dont le rôle est justement de gérer des accès et les écritures multiples, devient une évidence.
MySQL est l'outil de gestion de base de données dont l'utilisation est la plus fréquente. C'est donc celui que nous allons installer aussi.
MySQL est seul outil dont aucune version n'est installée par défaut sur macOS. Cependant, d'autres outils de gestion de base de données le sont. C'est le cas par exemple de SQLite3, qui permet en quelques minutes de créer une petite base et y gérer des données.
MySQL dans sa version Community Server est gratuite et téléchargeable depuis le site de MySQL, il suffit de choisir la version pour macOS. Le plus simple est de prendre la première version proposée, en DMG.
(Sur la page d'après, contrairement à ce qui est marqué, il n'est pas nécessaire d'avoir un compte, il suffit de cliquer le lien "No thanks, just start my download." en bas de la page.)
Il suffit ensuite d'installer le paquet présent dans l'image disque. Utilisez l'installation par défaut, et pour le mot de passe, vous devrez trouver un mot de passe d'au minimum 8 caractères, contenant au moins un caractères spécial ou un chiffre pour pouvoir valider l'installation. Veillez à noter ce mot de passe quelque part, car la récupération du mot de passe root de MySQL n'est pas quelque chose de facile.
L'installation de MySQL founit un nouvel élément de Préférences Système, qui permet de contrôler le service MySQL. Vous pouvez ainsi démarrer et arrêter le service comme vous le souhaitez, et choisir si vous voulez démarrer le gestionnaire de base de données au démarrage.
Avoir MySQL lancé sans arrêt ne pose aucun soucis, et ne ralentira pas votre ordinateur, il ne consommera des ressources uniquement lorsqu'il sera solicité.
MySQL est une fois de plus un logiciel que l'on utilise via une interface en ligne de commandes. Evidemment, il faut que le service soit démarre pour que l'interface puisse fonctionner.
/usr/local/mysql/bin/mysql -u root -p
tapez le mot de passe défini lors de l'installation, pour accéder au shell de MySQL. Avec la commande
show databases;
vous afficherez les bases de données déjà présentes utiles à MySQL, et auxquelles il ne faut absolument pas toucher.
Pour quitter, tapez
exit
vous reviennez dans votre terminal. En quittant, vous n'éteignez pas le service MySQL, qui continue à tourner en tâche de fond, vous ne quittez que l'interface.
A noter que l'installation de MySQL via le package dédié, installe aussi la connection à PHP, ainsi, il est possible, avec les scripts d'aller lire ou écrire dans une base de données MySQL.
4/ Installation d'outils dédiés
Avec votre installation, vous pouvez désormais créer votre site internet, ou vos propres outils intranet. Mais, comme il s'agit de la configuration la plus répendue sur Internet, vous avez la possibilité d'installer une multitude d'outils disponibles sur internet.
Par exemple, vous pouvez installer PHPMyAdmin pour accéder aux bases de données qui sont gérées par MySQL, si je n'aprécie pas vraiment l'outil, il peut cependant être utile pour ceux qui ne maîtrisent pas forcément les requêtes SQL.
Pour créer un site internet, il existe des dizaines, voir des centaines, de CMS gratuits. Pour partager des informations, sans forcément créer un site internet, vous pouvez aussi vous tourner vers un wiki. Sinon, il existe aussi des outils dédiés pour gérer votre médiathèque, des calendriers partagés, etc ...
Vous disposez désormais d'un vrai serveur web intranet. Il reste du chemin pour le rendre disponible sur internet, mais cela sera l'objet d'un futur article.
- Installer un serveur web personnel - Partie 1 - Installation standard de macOS
- Installer un serveur web personnel - Partie 2 - Installation de MariaDB via Homebrew
- Installer un serveur web personnel - Partie 2b - Configurer une socket entre MariaDB et PHP
- Installer un serveur web personnel - Partie 3 - Installation d'Apache et de PHP via Homebrew
- Installer un serveur web personnel - Partie 2c - Corriger l'ERROR 23 (HY000) sur MariaDB
- Installer un serveur web personnel - Partie 3b - Configuration des vhosts sur Apache httpd via Homebrew