LAMP sur Centos 6.5

LAMP correspond à l’utilisation d’Apache, Php et MySQL pour créer un hébergement Web sous Linux. L’installation suivante est réalisée sur CentOS 6.5, si vous souhaitez mettre cette distribution en place, je vous redirige sur ce billet :

Installer CentOS 6.5

Serveur Web Apache

Tout d’abord, il faut installer Apache 2 et le lancer :

yum -y install httpd
/etc/init.d/httpd start
chkconfig httpd on

La configuration principale se trouve ensuite dans /etc/httpd/conf/httpd.conf, dont voici un détail des directives :

http://httpd.apache.org/docs/2.2/mod/core.html

Il faut commencer par indiquer le nom avec lequel le serveur s’identifie grâce à ServerName. S’il n’y a pas de configuration particulière comme les VirtualHosts mais un seul domaine qui pointe sur ce serveur sur le port 80 du genre www.mateuy.org, la directive ServerName devra être :

ServerName www.mateuy.org:80

Cette directive peut être placée au début du fichier de configuration.

Vers la ligne 46, la directive ServerTokens apporte des informations sur le serveur Web, en production il est préférable de la modifier comme suit :

ServerTokens Prod

Ensuite, les directives du type KeepAlive permettent d’autoriser ou non les connexions persistantes pour effectuer plusieurs requêtes lors d’une même connexion HTTP. Si vous souhaitez autoriser ceci en mettant KeepAlive à On (ligne 78), il est possible de limiter le nombre de connexion ainsi que le délai entre deux requêtes grâce à :

MaxKeepAliveRequests
KeepAliveTimeout

A l’intérieur du fichier de configuration, on trouve User et Group (ligne 244, 245) sous cette forme:

User apache
Group apache

Cet utilisateur lance le service httpd et ne doit pas avoir d’autres droits qu’en lecture sur le site Web sauf cas particuliers d’écriture pour l’upload par exemple.

La directive ServerAdmin (ligne 264) permet d’afficher un mailto sur l’email renseigné au niveau des pages d’erreur du site.

Le répertoire de stockage par défaut du site Web se trouve dans /var/www/html défini par la balise <Directory> (ligne 319) :

<Directory "/var/www/html">

Ce répertoire peut être modifié, s’il y a plusieurs sites sur le même serveur et qu’ils sont stockés dans des sous-répertoires, il peut être intéressant d’interdire l’accès au répertoire parent. Ainsi, les droits seront plus fins au niveau des sous-répertoires qui correspondent chacun à un site. Pour interdire l’accès à un répertoire, il faut se servir de Deny et Allow :

Order Deny,Allow
Deny from all

Ici, la première ligne n’est pas très parlante car il n’y a pas de Allow mais le Deny from all permet d’interdire l’accès à partir de tous les réseaux.

L’affichage du contenu du répertoire peut également être interdit en modifiant l’option Indexes en remplaçant le signe + par un signe

Options -Indexes

Vers la ligne 538, la directive ServerSignature permet de choisir les informations qui seront affichées en rapport avec le serveur Web lors d’un message d’erreur ou une liste de répertoire par exemple. Il est possible de configurer cette directive sur On pour afficher les informations, Off pour ne pas les afficher ou EMail pour ajouter l’adresse email défini dans la directive ServerAdmin (ligne 264) :

ServerSignature Off

Installation de PHP

Installation via yum (version 5.3.3, voir ci-dessous pour une version supérieure)

yum -y install php

La version de php installée sera la 5.3.3. Afin de mettre à jour ou d’installer directement une version supérieure (5.3.8 pour ownCloud notamment), voici les informations pour Php 5.5 :

http://webtatic.com/packages/php55/

Installer Php 5.5

rpm -Uvh http://mirror.webtatic.com/yum/el6/latest.rpm
yum install php55w php55w-opcache

Mise à jour vers Php 5.5 (attention à vérifier la compatibilité avec les applications)

rpm -Uvh http://mirror.webtatic.com/yum/el6/latest.rpm
yum install yum-plugin-replace
yum replace php-common --replace-with=php55w-common

Prise en compte du SGBD MySQL

yum -y install php-mysql

Installation du SGBD MySQL

Installation via yum et démarrage automatique au boot

yum -y install mysql mysql-server
/etc/init.d/mysqld start
chkconfig mysqld on

Un script est inclus pour sécuriser l’installation avec quelques paramètres notamment le changement de mot de passe root (vide par défaut) et pour supprimer la table test et les accès anonymes. Il faut donc taper le nom du script dans l’invite de commande :

mysql_secure_installation

Enter current password for root (enter for none): Entrée
Change the root password? [Y/n] Entrée
Change the root password? [Y/n] Entrée
New password: mot_de_passe
Re-enter new password: mot_de_passe
Password updated successfully!
Reloading privilege tables..
... Success!

Remove anonymous users? [Y/n] Entrée
 ... Success!

La prochaine option consiste à désactiver l’accès root à partir du réseau, si vous souhaitez le faire, vous pouvez taper n. Le fait de désactiver l’accès distant n’empêche pas la gestion via phpMyAdmin :

Disallow root login remotely? [Y/n] Entrée
 ... Success!

Remove test database and access to it? [Y/n] Entrée
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reload privilege tables now? [Y/n] Entrée
 ... Success!

Cleaning up...

Installer phpMyAdmin

PMA permet de gérer la base de données via une interface Web :

yum -y install phpmyadmin

Pour accéder à l’interface à partir de l’extérieur, il est nécessaire de modifier le fichier /etc/httpd/conf.d/phpMyAdmin.conf en ajoutant la ligne Allow from All dans le bloc <IfModule !mod_authz_core.c>

<IfModule !mod_authz_core.c>
     # Apache 2.2
     Order Deny,Allow
     Deny from All
     Allow from 127.0.0.1
     Allow from ::1
     Allow from All => il est préférable d'indiquer une IP fixe
</IfModule>

L’accès par défaut est possible à l’adresse : http://server/phpmyadmin avec l’utilisateur root (MySQL) et le mot de passe défini lors du lancement du script mysql_secure_installation.

Maintenant, il ne reste plus qu’à redémarrer le service httpd :

service httpd restart