Category Archives: LAMP (manuel)

Installation manuelle d’un serveur Apache / PHP / MySQL sous GNU/Linux

LAMP – Partie 4/4 – phpMyAdmin

Si vous avez suivi le tutoriel jusque là, bravo, vous voulez monter un serveur web sous GNU/Linux, et il nous manque encore phpMyAdmin.

Qu’est ce que phpMyAdmin ?

phpMyAdmin est un logiciel web programmé en PHP. Il nous permettra de faire tout ce qu’on veut sur les bases de données MySQL sans avoir besoin d’être sur la machine qui héberge le serveur MySQL. Tout se fait à distance, comme n’importe quelle application web, c’est fait pour.

Installation de phpMyAdmin

Comme d’habitude, on se connecte en root sur la tty1, on se déplace dans notre dossier de téléchargement, puis on va naviguer chez phpMyAdmin.net :

root@tutolamp:~# cd /other/downloads
root@tutolamp:/other/downloads# lynx http://www.phpmyadmin.net

Sélectionnez un peu plus bas « Download votreversion » puis téléchargez et enregistrez le fichier sur le disque, puis quittez.

Pour ma part, c’est la version 4.6.6 de phpMyAdmin qui m’est proposée, à l’heure où j’écris ce tutoriel.

Cette fois, nous avons obtenu un fichier ZIP, mais ça n’empêche en rien de le décompresser, on a juste besoin d’un paquet supplémentaire dans mon cas :

root@tutolamp:/other/downloads# apt-get unzip
root@tutolamp:/other/downloads# unzip phpMyAdmin-votreversion-all-languages.zip

Installons maintenant phpMyAdmin dans le répertoire « htdocs » d’Apache, et changeons son nom en « phpmyadmin » pour plus de facilité d’accès :

root@tutolamp:/other/downloads# cp -R phpMyAdmin-votreversion-all-languages.zip /other/server/httpd24/htdocs
root@tutolamp:/other/downloads# cd /other/server/httpd24/htdocs
root@tutolamp:/other/server/httpd24/htdocs# mv phpMyAdmin-votreversion-all-languages phpmyadmin

Vérifions que tout se passe bien :

root@tutolamp:/other/server/httpd24/htdocs# lynx http://localhost/phpmyadmin

Tentez de vous connecter avec le compte MySQL « root » et le mot de passe que vous aviez défini (pour moi c’était « toto »).

Tout à l’air de bien se passer, on peut quitter phpMyAdmin par le lien « Log out », et lynx par la touche [Q].

Profitez-en pour quittez la console :

root@tutolamp:/other/server/httpd24/htdocs# exit

Vous possédez désormais un serveur Linux / Apache / MySQL / PHP fonctionnel de base.

LAMP – Partie 3/4 – PHP

Après MySQL, après Apache, il nous manque encore PHP. Donc allons-y, installons celui-ci.

Qu’est-ce que PHP ?

PHP Hypertext Preprocessor est un langage de script, aujourd’hui orienté objet, qui se situe du côté serveur. Il possède aussi un côté client qui permet d’écrire des scripts et de les exécuter en mode console.

Exemples de codes PHP
<?php  echo 'Hello World!';  ?>

Ce petit script affichera la chaine « Hello World! » sur votre console ou dans votre navigateur.

<?php

  $var = 'foo' . 'bar';
  echo '<b>', $var, '</b>';

?>

Cet autre script nous affichera « <b>foobar</b> » en console, cependant, s’il est exécuté par l’intermédiaire d’un serveur web (ex: Apache), il nous fournira alors la chaine « foobar » en caractères gras, le « . » servant d’opérateur de concaténation;

Je ne vais pas m’éterniser sur le sujet, d’autres tutoriaux seront présents pour apprendre la programmation.

Installation de PHP au sein d’Apache

Et on recommence encore une fois, on se connecte en root sur notre tty1, puis on navigue jusque php.net, et en changeant de répertoire courant au passage :

root@tutolamp:~# cd /other/downloads
root@tutolamp:/other/downloads# lynx http://php.net

On descend jusque « Downloads » puis on y va.

On cherche « Current Stable » et on va sélectionner « php-votreversion.tar.gz ». Au moment du tutoriel, c’est PHP 7.1.2 qui est mis à l’honneur.

On descend pour choisir un site miroir d’où télécharger PHP, j’ai choisi fr2.php.net, se situant en France, et on active le lien de téléchargement en appuyant sur [D]. Enregistrez le fichier sur le disque puis quittez avec [Q].

On décompresse PHP et on va dans son répertoire :

root@tutolamp:/other/downloads# tar zxvf php-votreversion.tar.gz
root@tutolamp:/other/downloads# cd php-votreversion

PHP a lui aussi son petit lot de dépendances, on va les installer de suite :

root@tutolamp:/other/downloads/php-votreversion# apt-get install libxml2-dev

Place à la configuration de PHP, à sa compilation, puis son installation :

root@tutolamp:/other/downloads/php-votreversion# ./configure --prefix=/other/server/php71 --with-apxs2=/other/server/httpd24/bin/apxs --enable-mbstring --with-mysql-sock=/tmp/mysql.sock --enable-embedded-mysqli --with-mysqli
root@tutolamp:/other/downloads/php-votreversion# make
root@tutolamp:/other/downloads/php-votreversion#
make install

On va configurer maintenant Apache pour qu’il puisse nous servir des pages PHP, mais pour cela on va avoir besoin d’un éditeur de texte. Je vais personnellement utiliser « joe », libre à vous de choisir autre chose (« vi(m) », …) :

root@tutolamp:/other/downoads/php-votreversion#: apt-get install joe
root@tutolamp:/other/downoads/php-votreversion#: cd /other/server/httpd24/conf
root@tutolamp:/other/server/httpd24/conf# joe httpd.conf

PHP s’est permis de nous installer son module dans le fichier de configuration, c’est toujours ça de moins à faire!

Cherchez d’abord la ligne ServerName pour lui ajouter un nom comme suit:

ServerName localhost:80

Cherchons maintenant cette ligne :

DirectoryIndex index.html

Rajoutons « index.php » comme suit :

DirectoryIndex index.php index.html

Maintenant cherchons les lignes de type « AddType application/ » et ajoutons-y cette ligne :

AddType application/x-httpd-php .php

Enregistrez le fichier et quittez l’éditeur en effectuant la combinaison [Ctrl]+[K] puis [X].

Redémarrez maintenant Apache :

root@tutolamp:/other/server/httpd24/conf# /etc/init.d/apachectl restart

Créons rapidement un script de test PHP:

root@tutolamp:/other/server/httpd24/conf# cd ../htdocs
root@tutolamp:/other/server/httpd24/htdocs# joe index.php

Avec pour contenu :

<?php

  phpinfo();

?>

Enregistrez et quittez comme tout à l’heure, et regardons si cela a bien fonctionné correctement :

root@tutolamp:/other/server/httpd24/htdocs# lynx http://localhost

Parfait, tout fonctionne! Il ne nous reste plus que phpMyAdmin dans le tutoriel suivant, et notre LAMP sera complet.

LAMP – Partie 2/4 – Apache

Pour installer notre serveur LAMP, après MySQL, on va s’attaquer à Apache.

Pour ceux qui n’ont pas lu le précédent tutoriel sur LAMP MySQL, je rappelle que je suis une distribution GNU/Linux Debian 8.7.1 x64 en minimal. Nous avons dû installer quelques paquets précédemment pour installer MySQL, je vous conseille vivement d’aller y jeter un œil avant de continuer.

Qu’est-ce qu’Apache ?

Apache n’est pas un programme, mais un éditeur de logiciels (Apache Software Fundation). En réalité, nous n’allons pas installer Apache, mais le serveur httpd d’Apache, autrement appelé « Apache HTTP Server ». Il est couramment dénommé Apache, mais son nom de service se trouve pourtant être « httpd » pour « HTTP Daemon ».

Installation d’Apache sous Microsoft Windows

D’abord, connectez-vous en root sur votre tty1, et allez de suite dans notre répertoire de téléchargements :

root@tutolamp:~# cd /other/downloads

On s’apprête à télécharger Apache, naviguons donc jusque chez eux :

root@tutolamp:/other/downloads# lynx http://apache.org

Descendez jusque « By Name » et sélectionnez « HTTP Server ».

Descendez maintenant jusque « Download! » et sélectionnez « From a Mirror ».

Enfin, descendez jusque « Source: httpd-votreversion.tar.gz ». Sélectionnez le lien appuyez sur [D] pour télécharger le fichier.

Enregistrez-le sur le disque, puis quitter « lynx » via [Q].

Note: La version que j’ai téléchargé au moment du tutoriel est la version 2.4.25 d’Apache.

Décompressons immédiatement notre nouveau fichier, puis entrons dans le nouveau répertoire ainsi créé :

root@tutolamp:/other/downloads# tar zxvf httpd-votreversion.tar.gz
root@tutolamp:/other/downloads/ cd httpd-votreversion

Apache dépend de quelques petits programmes, installons-les maintenant :

root@tutolamp:/other/downloads/httpd-votreversion# apt-get install libapr1-dev libaprutil1-dev libpcre3-dev

Tout est prêt désormais pour configurer, compiler, et installer Apache. Nous l’installerons dans le répertoire « httpd24 » sous la bannière de notre répertoire dédié « /other/server », en prenant soin d’activer le chargement des librairies dynamiques (nous en aurons besoin pour PHP):

root@tutolamp:/other/downloads/httpd-votreversion# ./configure --prefix=/other/server/httpd24 --enable-so
root@tutolamp:/other/downloads/httpd-votreversion# make
root@tutolamp:/other/downloads/httpd-votreversion# make install

Changeons maintenant de répertoire, démarrons Apache, et testons s’il fonctionne :

root@tutolamp:/other/downloads/httpd-votreversion# cd /other/server/httpd24
root@tutolamp:/other/server/httpd24# bin/apachectl start
root@tutolamp:/other/server/httpd24# lynx http://localhost

Personnellement, Apache me répond: « It works ! », c’est donc que tout est ok.

Installons maintenant Apache au démarrage du système :

root@tutolamp:/other/server/httpd24# cp bin/apachectl /etc/init.d
root@tutolamp:/other/server/httpd24# update-rc.d apachectl defaults

Vous pouvez désormais quitter la console et passer au tuto suivant pour installer PHP.

root@tutolamp:/other/server/httpd24# exit

LAMP – Partie 1/4 – MySQL

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.