blog actif depuis 774 jours.

retours d'expériences, codes sources, réflexions, humeurs... d'un webmaster

 

Mer.

29

Oct.

 
Je viens de commander un serveur avec une distribution linux seule et je profite de l'occasion pour vous donner les différentes étapes à suivre pour installer et configurer les services nécessaires à un serveur Web LAMP, avec le minimum de précautions à prendre en matière de sécurité :
- Apache 2
- Mysql 5
- PHP 5
- PhpMyAdmin 3
Le tout en ligne de commande via SSH, sous Fedora 9.

SSH

Vous venez de recevoir vos codes de connexion SSH à votre serveur. Ces codes sont les codes root. Il est fortement déconseillé de permettre à root d'avoir accès à votre machine en SSH. La première chose à faire est donc de créer un nouvel utilisateur et de bloquer l'accès SSH pour root. (l'utilisation du compte root se fera via la commande su).
Editez le fichier sshd_config et mettez PermitRootLogin à no


Installation des services

Fedora est une distribution basée sur les rpm. La fonction yum permet de gérer les paquetages installés et leurs dépendances.
Pour le serveur LAMP, il vous faudra installer les paquetages suivants :
- httpd (le démon http d'Apache)
- mysql (le client MySQL)
- mysql-server (le serveur MySQL)
- php (le moteur PHP)
- phpMyAdmin (l'interface d'administration de MySQL)

yum install httpd mysql mysql-server php phpmyadmin

Apache

La configuration d'apache se fait grâce au fichier httpd.conf (situé par défaut dans /etc/httpd/conf )
NB : Il est conseillé de copier le fichier original avant de le modifier. Pensez à redémarrer apache pour prendre en compte vos modifications.

Vérifier que le module php5 est chargé. En principe, apache charge les fichiers conf situés dans /etc/httpd/conf.d/ (grâce à la directive Include conf.d/*.conf  indiquée dans httpd.conf). Vous devez y trouver un fichier php.conf qui doit contenir ces lignes :

LoadModule php5_module modules/libphp5.so
AddHandler php5-script .php
AddType text/html .php
DirectoryIndex index.php

Vous pouvez tester qu'apache fonctionne en allant sur l'url http://monserveur (monserveur étant le nom de votre serveur ou son IP)
Pour en savoir plus sur l'utilisation et la configuration d'apache : http://httpd.apache.org/docs/2.0/


MySQL et PhpMyAdmin

Par défaut, phpMyAdmin est installé dans /usr/share/phpMyAdmin. Si vous déplacez le répertoire phpMyAdmin, veillez à configurer correctement le fichier /etc/httpd/conf.d/phpMyAdmin.conf qui contient le chemin vers phpMyAdmin.
Vérifiez également les droits d'accès à phpMyAdmin. La config par défaut est :

<Directory /usr/share/phpMyAdmin/>
   order deny,allow
   deny from all
   allow from 127.0.0.1
</Directory>

Ce qui ne donne accès qu'en local. Vous pouvez changer le allow from et le mettre à all.

L'alias phpMyAdmin
Alias /phpMyAdmin /usr/share/phpMyAdmin
permet d'accéder à phpMyAdmin via  l'adresse http://monserveur/phpMyAdmin.
Vous pouvez également changer cette adresse par souci de sécurité, en modifiant l'Alias apache. Ainsi
Alias /monphpMyAdmin /usr/share/phpMyAdmin
vous permettra d'accéder à phpMyAdmin via  l'adresse http://monserveur/monphpMyAdmin.

Connexion
L'accès doit se faire en mode http. Vous pouvez vérifier si c'est le cas en éditant le fichier config.inc.php se trouvant dans le répertoire /usr/share/phpMyAdmin

Vous devez avoir la ligne suivante :
$cfg['Servers'][$i]['auth_type'] = 'http'
Par défaut, la connexion au serveur mysql se fait avec l'utilisateur root sans mot de passe, ce qui est peu recommandé. Il faut donc créer un administrateur autre que root qui aura tous les privilèges et, après avoir testé la connexion du nouvel administrateur, supprimer le compte root. Tout cela se fait via phpMyAdmin, dans la partie privilèges.

Affichage
Vous pouvez cacher les bases mysql et information_schema, qui contiennent des infos sur les bases de données.
Pour cela, toujours dans le fichier conf.inc.php, éditez la ligne suivante :
$cfg['Servers'][$i]['hide_db']       = 'information_schema|mysql';
Si vous n'arrivez plus à vous connecter à phpMyAdmin, pas de panique, vous pouvez utiliser mysql en ligne de commande.
Pour en savoir plus sur l'installation de mysql : http://mysql2.mirrors-r-us.net/doc/refman/5.0/fr/installing.html


PHP

Là encore, quelques modifications sont à apporter au fichier de configuration /etc/php.ini :

short_open_tag = Off

force à commencer vos scripts php par < ?php et non pas < ?
asp_tags = Off 

desactive les tags <% %>

Vérifiez que
register_globals = Off
ce qui est le cas par défaut depuis php 4.2. Cette directive permet de ne pas considérer les variables EGPCS (Environment, GET, POST, Cookie, Server) comme des variables globales, ce qui pose des problèmes de vulnérabilité http://fr.php.net/manual/fr/security.globals.php.
error_reporting  =  E_ALL & ~E_NOTICE
pour éviter de surcharger vos logs avec les notifications diverses

Vérifiez également que display_errors est bien à Off. Ceci permet de ne pas afficher les erreurs sur vos pages.

Pour en savoir plus sur l'installation et la configuration de php : http://www.php.net/manual/fr/install.php

Reboot

Une fois que tous les services sont installés et configurés, il faut tester le reboot de la machine, et surtout vérifier que ces services démarrent automatiquement.
Pour avoir la liste des services qui démarrent au boot, faites
chkconfig -- list
Pour ajouter un service au démarrage du système, par exemple httpd
Chkconfig -- level 3 httpd on
3 est le niveau de boot. Vous le connaitrez grâce à la commande runlevel.
Bookmark and Share

 

Commentaires

Bonjour!
Tout d'abord merci pout ce tuto.
Lorsque j'essaie d'accéder à phpMyadmin
j'obtiens l'erreur suivante:

#2002 - Le serveur ne répond pas. (ou l'interface de connexion ("socket") vers le serveur MySQL local n'est pas correctement configurée)

Merci.

17/03/2010

Bonjour Descartiens
Vérifie bien que le serveur mysql n'est pas arrêté. S'il tourne, vois du côté de "mysql default socket" dans le fichier php.ini qui doit être le chemin vers le fichier mysql.sock

17/03/2010

 

Ajouter un commentaire

nom / pseudo :
e-mail :

(Votre e-mail ne sera ni exploité, ni divulgué.)

site (facultatif)
 

Webmaster depuis maintenant plus de 10 ans, j'ai créé ce blog pour publier mes retours d'expérience et parler du Web et du développement Web en général, mais aussi de plein d'autres choses...

romualb.com est sur Facebook
<Juillet 2010 
LunMarMerJeuVenSamDim
   01 02 03 04
05 06 07 08 09 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  

 

 

Referencement annuaire gratuit Annuaire carte postale blog,,personnel communiquer gratuit Paperblog : Les meilleurs actualités issues des blogs Classement de sites - Inscrivez le vôtre! Inscrivez-vous maintenant sur Viadeo Web Developement Blogs - BlogCatalog Blog Directory web counter