Pour installer un serveur Linux/ Apache / PHP / MySQL, on va commencer par installer le serveur MySQL.
Qu’est-ce que MySQL ?
MySQL est un système de gestion de bases de données relationnelles (SGBDR). Ca signifie qu’il va être capable d’enregistrer vos données et de vous les resservir, mais ce, via des requêtes basées sur le langage SQL (Structured Query Language).
MySQL est, du côté des performances, accentué sur le côté lecture plus que de l’écriture de données. Il nous permettra en conséquent de concevoir efficacement des sites internet, qui ont besoin de données clients, produits, ou tout autre genre d’informations qui nécessiteraient une base de données.
Quelques exemples de requêtes sous MySQL
SELECT `nom_utilisateur` FROM `table_utilisateurs` WHERE `age_utilisateur` > 18 ORDER BY `nom_utilisateur` ASC;
Cette première requête permet de récupérer dans la table « table_utilisateurs » le nom de tous les utilisateurs enregistrés qui ont un âge supérieur à 18 ans, et de les trier par ordre alphabétique.
SHOW DATABASES;
Seconde requête, qui nous permet ici de lister toutes la bases de données auxquelles l’utilisateur MySQL courant a accès.
Je ne vais pas vous détailler ici toutes les requêtes possible, je souhaitais simplement vous montrer comment on peut communiquer avec MySQL. On peut envoyer des requêtes SQL via un client dédié ou via un langage de programmation tel que le PHP, que nous installerons tout à l’heure.
Installation de MySQL sous GNU/Linux
Pour commencer, je tiens à signaler que je pars d’une installation minimale fraiche de GNU/Linux Debian 8.7.1 en 64 bits (netinst), installation effectuée sous machine virtuelle (Oracle VM VirtualBox). Elle ne contient donc aucun paquet inutile, et il faudra les installer à chaque fois que c’est utile. J’ai tout de même choisi la possibilité de télécharger des logiciels non libres via le gestionnaire de paquets, mais libre à vous de refuser ce choix. La configuration de la machine sous Debian ne contient pas de serveur graphique, car sur un serveur dédié que vous louez chez un prestataire, vous n’en aurez pas non plus. J’ai tout décocher lors de l’installation des paquets, excepté le serveur SSH, pour me retrouver dans un environnement le plus simple et minimaliste au possible.
Pour commencer, nous allons nous connecter sur une première console en super-administrateur (root / tty1).
On va de suite créer quelques répertoires à la racine. Un répertoire « other » qui contiendra lui-même deux sous-répertoires : « downloads » pour les téléchargements, et « server » pour les installations.
root@tutolamp:~# mkdir /other && cd /other
root@tutolamp:/other# mkdir downloads server
Schéma des répertoires ainsi créés :
/
+-- other
+-- downloads
+-- server
On peut maintenant se rediriger vers le répertoire « downloads » et chercher nos paquets. Nous installerons MySQL & consort depuis les sources, on devra donc les compiler soi-même, puis les installer dans le répertoire « server ».
Seconde chose à faire, c’est de récupérer un navigateur internet en console, ça pourrait nous être utile. Sous debian, on a un formidable outil pour installer des paquets, « aptitude », on va s’en servir de suite pour installer un butineur :
root@tutolamp~/other# apt-get install links lynx
Vous noterez que j’en ai installé deux, vous avez le choix entre « links » et « lynx ». J’utiliserais « lynx » personnellement dans ce tutoriel. Appuyez sur [O] ou [Y] selon votre distribution GNU/Linux et votre langue pour valider l’installation des logiciels et de leur dépendances.
Déplacez-vous maintenant dans le dossier de téléchargements :
root@tutolamp~/other# cd downloads/
Puis maintenant, on va naviguer sur http://www.mysql.com pour récupérer les sources de MySQL.
root@tutolamp~/other/downloads/# lynx http://www.mysql.com
Naviguez entre les liens avec les flèches [Haut] et [Bas] de votre clavier jusqu’à sélectionner « Downloads », puis flèche [Droite] pour continuer à la page suivante.
Sélectionnez ensuite le lien « Community », puis continuez avec flèche [Droite].
Sélectionnez ensuite « MySQL Community Server » et continuez.
Sélectionnez ensuite « Download MySQL votreversion » et continuez.
Descendez jusque « Select Platform », juste en dessous, appuyez sur [Entrée] ou flèche [Droite] pour sélectionner « Source Code », validez en appuyant encore sur [Entrée] ou flèche [Droite], sélectionnez « Select » avec la flèche du [Bas] et flèche [Droite].
Descendez jusqu’à « Generic Linux (Architecture Independent), Compressed TAR Archive Includes Boost Headers », puis sélectionnez « Download ».
Descendez maintenant jusqu’à « No thanks, just start my download » et validez (flèche [Droite]). Validez le téléchargement en appuyant sur [D] comme demandé par le navigateur.
Le fichier téléchargé, sélectionnez maintenant « Enregistrement sur disque » et validez, puis validez le nom choisi avec [Enter].
Vous pouvez désormais quittez « lynx » par la touche [Q] ou la combinaison [Ctrl]+[C] (break command).
Voila, il ne nous reste plus qu’à décompresser l’archive téléchargée par la commande tar :
root@tutolamp:/other/downloads/# tar zxvf mysql-boost-votreversion.tar.gz
Note: La version MySQL que j’ai téléchargé est la 5.7.17.
On va avoir besoin de quelques logiciels pour compiler MySQL, alors installons-les maintenant :
root@tutolamp:/other/downloads/# apt-get install cmake make g++ libncurses5
Déplacez-vous maintenant dans le dossier de MySQL :
root@tutolamp:/other/downloads/# cd mysql-votreversion
Puisque j’ai la version 5.7.17, je vais nommer le répertoire où sera installé MySQL « MySQL57 », histoire de s’y retrouver dans les différentes versions, parfois incompatibles.
root@tutolamp:/other/downloads/mysql-votreversion/# cmake . -DCMAKE_INSTALL_PREFIX=/other/server/MySQL57 -DWITH_BOOST=boost/
Une fois cette phase de configuration terminée, on peut compiler MySQL (vous avez le temps de boire un café, c’est pas mal long) :
root@tutolamp:/other/downloads/mysql-votreversion/# make
Puis, une fois MySQL compilé, on va pouvoir l’installer :
root@tutolamp:/other/downloads/mysql-votreversion/# make install
Naviguez à présent vers le répertoire d’installation de MySQL :
root@tutolamp:/other/downloads/mysql-votreversion/# cd /other/server/MySQL57
Créons maintenant un groupe et un utilisateur pour MySQL :
root@tutolamp:/other/server/MySQL57# groupadd mysql
root@tutolamp:/other/server/MySQL57# useradd -r -g mysql -s /bin/false mysql
Nous devons créer un nouveau répertoire où seront stockées nos bases de donnnées. Nommons-le « data », et changeons ses droits d’accès pour des raisons de sécurité :
root@tutolamp:/other/server/MySQL57# mkdir data
root@tutolamp:/other/server/MySQL57# chmod 750 data
Changeons maintenant le propriétaire du répertoire MySQL :
root@tutolamp:/other/server/MySQL57# chown -R mysql .
root@tutolamp:/other/server/MySQL57# chgrp -R mysql .
Initialisons maintenant les bases de données :
root@tutolamp:/other/server/MySQL57# bin/mysqld --initialize --user=mysql
Notez bien le mot de passe temporaire pour le compte « root » que MySQL vous donne, il nous servira par la suite (nous le changerons).
Nous pouvons rechanger le propriétaire de l’installation :
root@tutolamp:/other/server/MySQL57# chown -R root .
root@tutolamp:/other/server/MySQL57# chown -R mysql data
Nous pouvons désormais démarrer MySQL :
root@tutolamp:/other/server/MySQL57# support-files/mysql.server start
Une fois lancé, appuyez sur [Entrée] une fois de plus pour revenir à la console. Nous allons changer le mot de passe root immédiatement. Pour se connecter à MySQL, procédez comme suit :
root@tutolamp:/other/server/MySQL57# bin/mysql --user=root -p
A ce moment, il vous sera demandé le mot de passé généré tout à l’heure, il est temps de le taper. Attention: sous GNU/Linux, nous ne savons pas où nous en sommes dans le mot de passe, il se peut que vous vous trompiez facilement. Ne vous en faite pas, recommencez juste la commande précédente, et réessayez.
Nous voici donc dans le shell MySQL, réfléchissez à votre mot de passe, notez-le, et nous allons maintenant modifier le mot de passe root MySQL par ce nouveau mot de passe. Le mien sera « toto ». Je l’écrirais en italique pour que vous mettiez le votre à sa place. Communiquons maintenant avec MySQL par l’intermédiaire d’une requête :
mysql> ALTER USER root@localhost IDENTIFIED BY 'toto';
On peut maintenant quitter le shell MySQL et revenir à notre console :
mysql> quit;
On va maintenant procéder au démarrage automatique de MySQL avec le système. Pour ce faire, on va juste copier le fichier « support-files/mysql.server » dans « /etc/init.d », puis dire au système de le lancer automatiquement :
root@tutolamp:/other/server/MySQL57# cp support-files/mysql.server /etc/init.d
root@tutolamp:/other/server/MySQL57# systemctl enable mysql.server
On peut désormais quitter la console :
root@tutolamp:/other/server/MySQL57# exit
Voila qui conclu ce premier tutoriel LAMP. MySQL est installé, il démarre avec la machine automatiquement, s’arrête aussi automatiquement lorsque la machine s’éteint, c’est super.