Utiliser Gentoo et Calculate Linux

Gentoo - Calculate : Installer Apache MariaDB PHP (LAMP)

Cet article a été mis à jour, vous consultez ici une archive de cet article!
Table des matières

lamp_logo



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




Nous allons dans un premier temps vérifier l'installation des 3 éléments de LAMP, c'est à dire Apache, MariaDB et PHP.

Code BASH :
emerge -pv www-servers/apache dev-lang/php dev-db/mariadb 


On prend soin de vérifier les USE utilisés, notamment ceux d'apache et de php:

Code BASH :
[ebuild  N     ] www-servers/apache-2.2.23:2  USE="ssl -debug -doc -ldap (-selinux) -static -suexec -threads" APACHE2_MODULES="actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache cgi cgid dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias -asis -auth_digest -authn_dbd -cern_meta -charset_lite -dbd -dumpio -ident -imagemap -log_forensic -proxy -proxy_ajp -proxy_balancer -proxy_connect -proxy_ftp -proxy_http -proxy_scgi -reqtimeout -substitute -version" APACHE2_MPMS="-event -itk -peruser -prefork -worker" 63 kB


Code BASH :
[ebuild  N     ] dev-lang/php-5.4.8:5.4  USE="berkdb bzip2 cli crypt ctype fileinfo filter ftp gd gdbm hash iconv ipv6 json nls phar posix readline session simplexml ssl tokenizer truetype unicode xml zlib -apache2 -bcmath -calendar -cdb -cgi -cjk -curl -curlwrappers -debug -doc -embed -enchant -exif -firebird -flatfile -fpm -frontbase -gmp -imap -inifile -intl -iodbc -kerberos (-kolab) -ldap -ldap-sasl -libedit -mhash -mssql -mysql -mysqli -mysqlnd -oci8-instant-client -odbc -pcntl -pdo -pic -postgres -qdbm -recode (-selinux) -sharedmem -snmp -soap -sockets -spell -sqlite -sybase-ct -sysvipc -threads -tidy -wddx -xmlreader -xmlrpc -xmlwriter -xpm -xsl -zip" 10,803 kB


Code BASH :
[ebuild  N     ] dev-db/mariadb-10.2.29:0/18::gentoo  USE="backup pam perl server -bindist (-client-libs) -cracklib -debug -extraengine -galera -innodb-lz4 -innodb-lzo -innodb-snappy -jdbc -jemalloc -kerberos -latin1 -libressl (-mroonga) -numa -odbc -oqgraph -profiling -rocksdb (-selinux) -sphinx -sst-mariabackup -sst-rsync -sst-xtrabackup -static -systemd -systemtap -tcmalloc -test -tokudb -xml -yassl" 0 KiB



On peut installer apache et mariadb dans un premier temps :

Code BASH :
emerge -av www-servers/apache dev-db/mariadb


Pour PHP, il va falloir régler les USE que l'on souhaite dans le fichier /etc/portage/package.use/custom, pour ajouter les FLAG apache2 et mysql et d'autres. Voici ce que j'ai mis:

Code BASH :
echo "dev-lang/php 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


Récemment j'ai du ajouter ajouter le FLAG apache2 à eselect-php :

Code BASH :
echo "app-eselect/eselect-php apache2" >> /etc/portage/package.use/custom 


Après ceci, on vérifie les FLAG de PHP et si c'est OK on accepte l'installation :

Code BASH :
emerge -av dev-lang/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é.

Vérifier que les USE de PHP sont bien réglés, que la ligne APACHE2_OPTS ait bien été modifiée et que le service apache2 ait bien été redémarré.

Gérer plusieurs versions de PHP




On peut aussi installer plusieurs versions de PHP, en sélectionnant le slot (ici installation de PHP 7.0 et 7.1 :

Code BASH :
emerge -a dev-lang/php:7.0 dev-lang/php:7.1


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 apparait :

Code BASH :
  [1]   php7.0 *
  [2]   php7.1


Sélectionner la version souhaitée (par exemple PHP 7.1) 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