Gentoo - Calculate : Installer Apache MariaDB PHP (LAMP)
Table des matières
LAMP est un acronyme :
Avec LAMP, on peut donc mettre en place un serveur Web, hébergeant un site web dynamique écrit en PHP, tout en allant chercher des données dans une base MariaDB.
Les 4 éléments à installer sont :
- Le serveur Web www-servers/apache
- PHP dev-lang/php
- Le moteur de base de données : dev-db/mariadb
- L'outil de sélection de version de PHP app-eselect/eselect-php
Les USE par défaut de mariadb et apache sont bons.
Pour PHP, il va falloir régler les USE que l'on souhaite dans le fichier /etc/portage/package.use/custom.
Je désactive fpm et postgres (qui va installer postgresql server que je n'utilise pas). J'active d'autres USE de modules PHP communs :
Concernant eselect-php, j'ajoute le FLAG apache2 et désactive fpm :
Après ceci, on installe les 4 paquets :
Pour apache2, éditer le fichier /etc/conf.d/apache2 et modifier la ligne APACHE2_OPTS en y rajoutant au besoin :
Ce qui donne une ligne similaire à celle-ci :
On ajoute ensuite apache2 en service à lancer au démarrage:
Enfin, lancer apache2.
On initialise MariaDB avec
On en profite pour définir un mot de passe root :
On ajoute ensuite le service MariaDB au démarrage de la machine :
Enfin, on lance MariaDB :
Pour tester le serveur web, se rendre avec un navigateur internet sur http://ip-du-serveur..
Si la page affiche "It works!" apache est bien installé.
Pour tester MariaDB, ouvrir une console en local en saisissant mysql .
Tester une commande SQL (par exemple, afficher la liste des utilisateurs créés.
Pour vérifier que l'exécution de PHP fonctionne, on va créer une page PHP à la volée, puis tenter de l'afficher avec notre navigateur web.
On vérifie que php nous retourne bien une réponse (on doit avoir un tableau avec un certain nombre de variables php.
Si la page affiche <?php phpinfo();?> php n'est pas bien initialisé.
On peut aussi installer plusieurs versions de PHP, en sélectionnant le slot (ici installation de PHP 7.3 et 7.4 :
Après pour sélectionner la version de PHP utilisée (par exemple pour apache), exécuter :
La liste apparaît :
Sélectionner la version souhaitée (par exemple PHP 7.4) avec :
Un avertissement indique :
Il faut donc redémarrer apache pour prendre en compte la modif :
On peut évidemment sélectionner une version différente de PHP sous apache, le php appelé en ligne de commande (cli) ou utilisé par fpm.
Avec eselect il est donc facile de revenir à une ancienne version de PHP en cas d'incompatibilités.
Il peut arriver, dans le cas où la machine s'appelle srv-gentoo que ce message apparaisse au lancement d'Apache : apr_sockaddr_info_get() failed for srv-gentoo
Pour résoudre cela, c'est simple, c'est que le fichier hosts n'est pas correctement configuré.
Bien mettre le nom du serveur dedans sur la ligne 127.0.0.1 :
Introduction
LAMP est un acronyme :
- Linux : Le système d'exploitation
- Apache : Le serveur Web
- MariaDB : Le serveur de Base de données (Fork de MySQL)
- PHP : Le langage de script
Avec LAMP, on peut donc mettre en place un serveur Web, hébergeant un site web dynamique écrit en PHP, tout en allant chercher des données dans une base MariaDB.
Installation
Les 4 éléments à installer sont :
- Le serveur Web www-servers/apache
- PHP dev-lang/php
- Le moteur de base de données : dev-db/mariadb
- L'outil de sélection de version de PHP app-eselect/eselect-php
Les USE par défaut de mariadb et apache sont bons.
Pour PHP, il va falloir régler les USE que l'on souhaite dans le fichier /etc/portage/package.use/custom.
Je désactive fpm et postgres (qui va installer postgresql server que je n'utilise pas). J'active d'autres USE de modules PHP communs :
Code BASH :
echo "dev-lang/php -fpm -postgres apache2 gd mysql mysqli pdo cgi pam ssl xml sysvipc bcmath xmlreader xmlwriter sockets sqlite soap curl zip #PHP pour LAMP" >> /etc/portage/package.use/custom
Concernant eselect-php, j'ajoute le FLAG apache2 et désactive fpm :
Code BASH :
echo "app-eselect/eselect-php apache2 -fpm" >> /etc/portage/package.use/custom
Après ceci, on installe les 4 paquets :
Code BASH :
emerge -av www-servers/apache dev-db/mariadb dev-lang/php app-eselect/eselect-php
Configuration POST-Installation
Apache2
Pour apache2, éditer le fichier /etc/conf.d/apache2 et modifier la ligne APACHE2_OPTS en y rajoutant au besoin :
- -D PHP => Ceci pour pouvoir exécuter des pages écrites en PHP
- -D USERDIR => Cela permet à chaque utilisateur de mettre des fichiers dans son ~/public_html pour qu'ils soient accessibles via http://ip_de_la_machine/~nom_de_l'user.
Ce qui donne une ligne similaire à celle-ci :
Code BASH :
APACHE2_OPTS="-D DEFAULT_VHOST -D INFO -D SSL -D SSL_DEFAULT_VHOST -D LANGUAGE -D PHP -D USERDIR"
On ajoute ensuite apache2 en service à lancer au démarrage:
Code BASH :
rc-update add apache2 default
Enfin, lancer apache2.
Code BASH :
/etc/init.d/apache2 start
MariaDB
On initialise MariaDB avec
Code BASH :
emerge --config dev-db/mariadb
On en profite pour définir un mot de passe root :
Code :
* Trying to get password for mysql 'root' user from 'mysql' section ...
* Trying to get password for mysql 'root' user from 'client' section ...
* Please provide a password for the mysql 'root' user now
* or through the /root/.my.cnf file.
* Avoid ["'\_%] characters in the password
>
* Retype the password
>
* Creating the mysql database and setting proper permissions on it ...
On ajoute ensuite le service MariaDB au démarrage de la machine :
Code BASH :
rc-update add mysql default
Enfin, on lance MariaDB :
Code BASH :
/etc/init.d/mysql start
Test de l'installation
Tester apache
Pour tester le serveur web, se rendre avec un navigateur internet sur http://ip-du-serveur..
Si la page affiche "It works!" apache est bien installé.
Tester MariaDB
Pour tester MariaDB, ouvrir une console en local en saisissant mysql .
Tester une commande SQL (par exemple, afficher la liste des utilisateurs créés.
Code BASH :
mysql
Code SQL :
MariaDB [(NONE)]> SELECT host, USER, password FROM mysql.USER; +-----------+------+----------+ | host | USER | password | +-----------+------+----------+ | localhost | root | | | 127.0.0.1 | root | | | localhost | | | +-----------+------+----------+ 3 ROWS IN SET (0.00 sec)
Tester PHP
Pour vérifier que l'exécution de PHP fonctionne, on va créer une page PHP à la volée, puis tenter de l'afficher avec notre navigateur web.
Code BASH :
echo "<?php phpinfo();?>" >>/var/www/localhost/htdocs/php.php && chmod a+r /var/www/localhost/htdocs/php.php
On vérifie que php nous retourne bien une réponse (on doit avoir un tableau avec un certain nombre de variables php.
Si la page affiche <?php phpinfo();?> php n'est pas bien initialisé.
Gérer plusieurs versions de PHP
On peut aussi installer plusieurs versions de PHP, en sélectionnant le slot (ici installation de PHP 7.3 et 7.4 :
Code BASH :
emerge -a dev-lang/php:7.3 dev-lang/php:7.4
Après pour sélectionner la version de PHP utilisée (par exemple pour apache), exécuter :
Code BASH :
eselect php list apache2
La liste apparaît :
Code BASH :
[1] php7.3 * [2] php7.4
Sélectionner la version souhaitée (par exemple PHP 7.4) avec :
Code BASH :
eselect php set apache2 2
Un avertissement indique :
Code TEXT :
Please restart apache for the changes to take effect.
Il faut donc redémarrer apache pour prendre en compte la modif :
Code BASH :
/etc/init.d/apache2 restart
On peut évidemment sélectionner une version différente de PHP sous apache, le php appelé en ligne de commande (cli) ou utilisé par fpm.
Avec eselect il est donc facile de revenir à une ancienne version de PHP en cas d'incompatibilités.
Problèmes possibles
apr_sockaddr_info_get() failed for srv-gentoo
Il peut arriver, dans le cas où la machine s'appelle srv-gentoo que ce message apparaisse au lancement d'Apache : apr_sockaddr_info_get() failed for srv-gentoo
Pour résoudre cela, c'est simple, c'est que le fichier hosts n'est pas correctement configuré.
Bien mettre le nom du serveur dedans sur la ligne 127.0.0.1 :
Code BASH :
127.0.0.1 srv-gentoo.linuxtricks.lan srv-gentoo localhost