Installer et paramétrer un environnement LAMP sous linux (serveur web et base de données)

Un grand classique des installations sous une distribution linux, un serveur web LAMP (Linux Apache Mysql PHP).

C'est très facile de l'installer et celui ci fonctionne avec un minimum de configuration.

Nous allons vous faire changer certains paramètres dans ce tutoriel pour optimiser la sécurité de votre serveur web.

Installer les paquets LAMP

sudo su
apt-get update
apt-get upgrade
apt-get install -y apache2 mysql-server php5 php5-gd php5-mysql

Dans cette installation, il faudra indiquer un mot de passe pour l'utilisateur root pour votre MySQL.

Configuration Apache

Nous allons préciser que le serveur apache est bien sur la même machine :

echo ServerName 127.0.0.1 >> /etc/apache2/apache2.conf && /etc/init.d/apache2 reload

Installer Phpmyadmin

Tapez cette commande dans votre console (Terminal)

apt-get install -y phpmyadmin

Lors de l'installation plusieurs questions vous seront demandées sur une interface graphique affichée dans votre console,

  1. Choisir Apache2 en serveur web
  2. Configurez votre base avec dbconfig-common
  3. Renseigner le mot de passe administrateur

Ajouter un alias dans apache pour accéder a phpmyadmin

Editer le fichier de configuration d'apache en utilisant:

nano /etc/phpmyadmin/apache.conf

Puis ajoutez cette ligne :

Alias /pma /usr/share/phpmyadmin

Chemin d’accès par exemple http://www.example.com/pma

Ajouter un nouveau site à Apache

Nous allons créer un nouveau site sur notre serveur LAMP, le chemin par défaut est /var/www/ mais tout autre répertoire peut être utilisé (si vous changez de repertoire il faudra veillez à ce que l'utilisateur www-data possède les permissions nécessaires sur le dossier).

mkdir /var/www/monsite && echo '<?php phpinfo(); ?>' > /var/www/monsite/index.php

Puis il faut créer le vhost apache

nano /etc/apache2/sites-available/monsite

Et y insérer ces lignes :

<VirtualHost *:80>
    ServerName www.monsite.fr
    DocumentRoot /var/www/monsite
    CustomLog /var/log/apache2/monsite.log combined
    ErrorLog /var/log/apache2/monsite-err.log
    LogLevel warn
    <Directory />
        Order Allow,Deny
        Allow from all
        Options +Indexes -ExecCGI +FollowSymLinks
        AllowOverride All
    </Directory>
</VirtualHost>

Puis activez le et relancez apache

a2ensite monsite && service apache2 reload

Facultatif: Remplacement de l'utilisateur root sur MySQL

Pour des mesures de sécurité (tentatives d'intrusions ou autre) vous pouvez remplacer le nom de l'utilisateur root par un autre nom, cela vous evitera un grand nombre de tentative d'attaque brute force sur cet utilisateur:

mysql -u root -p
GRANT ALL PRIVILEGES ON *.* TO usersql@'%' IDENTIFIED BY 'mdpusersql' WITH GRANT OPTION;
DELETE FROM mysql.user WHERE user = 'root';
FLUSH PRIVILEGES;
quit;

N'oubliez pas de remplacer les variables usersql et mdpusersql par celles de votre choix.

Pour l'installation de Phpmyadmin

L'installation n'a pas du fonctionner si vous avez effectué l'étape au dessus.

C'est normal, l'installateur à essayé d'utiliser le compte root de votre mysql, supprimé auparavant, il faut donc relancer la configuration de phpmyadmin qui demandera davantage d'informations,

dpkg-reconfigure phpmyadmin

Faut-il réinstaller la base de données pour phpmyadmin ? oui

Méthode de connexion pour la base de données MySQL de phpmyadmin: TCP/IP

Nom d'hôte du serveur MySQL pour phpmyadmin : => 127.0.0.1

Numéro de port pour le service MySQL : => 3306

Nom de l'administrateur de la base de données : => usersql

Mot de passe de l'administrateur de la base de données : => mdpusersql

Identifiant MySQL pour phpmyadmin : => phpmyadmin

Nom de la base de données MySQL pour phpmyadmin : => phpmyadmin

Serveur web à reconfigurer automatiquement : => apache2

Edition du fichier de configuration de phpmyadmin

Editer le fichier de configuration de PhpMyAdmin en utilisant:

nano /etc/phpmyadmin/config.inc.php

Modifiez ces 2 lignes :

 $cfg['Servers'][$i]['controluser'] = 'adminsql';
 $cfg['Servers'][$i]['controlpass'] = 'mdpsql';

Vous avez une question ou une suggestion ? N'hésitez pas à réagir dans les commentaires !