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
  • MySQL : Le serveur de Base de données
  • 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 MySQL.





Installation





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



Code BASH :
emerge -pv apache php mysql 




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 -sqlite3 -sybase-ct -sysvipc -threads -tidy -wddx -xmlreader -xmlrpc -xmlwriter -xpm -xsl -zip" 10,803 kB




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 mysql mysqli pdo cgi pam ssl xml #PHP pour LAMP" >> /etc/portage/package.use/custom




Après ceci, on vérifie les FLAG de PHP5 vla la commande :



Code BASH :
emerge -pv php




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




Pour une utilisation "classique", les USE par défaut sont parfaits.



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

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






On installe ensuite nos paquets:



Code BASH :
emerge -q apache php mysql






Configuration POST-Installation





Apache2





Pour apache2, éditer le fichier /etc/conf.d/apache2 et modifier la ligne APACHE2_OPTS en y rajoutant :

  • -D PHP5 => Ceci pour pouvoir exécuter des pages écrites en PHP5
  • -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 PHP5 -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






MySQL





On initialise les bases de données système avec le script /usr/bin/mysql_install_db



Code BASH :
/usr/bin/mysql_install_db




On ajoute ensuite le service MySQL au démarrage de la machine :



Code BASH :
rc-update add mysql default




Enfin, on lance MySQL :



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 MySQL





Pour tester mysql, 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 |          |
| ::1       | root |          |
| localhost |      |          |
+-----------+------+----------+
4 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é.