Outils pour utilisateurs

Outils du site


lamp

À propos

J'explique dans cette page comment mettre en place une solution LAMP (Linux, Apache, MySQL et Php).

Linux

Je considère ici que Linux est déjà installé et configuré.

Apache2

Apache est un serveur Web. Il reçoit et répond directement au requête du client Web (tel que les navigateurs). Pour installer apache2 avec la documentation :

# apt-get install apache2

Pour tester qu'Apache est bien installé, il suffit d'aller avec un navigateur Web à l'URL http://adresse_IP_du_serveur. Si tous s'est bien passé, vous devrez avoir une page avec le message “It's work”.

MySQL

MySQL est un serveur de base de données. Il permet de stocker et d'organiser des données. Pour installer MySQL 5.0 :

# apt-get install mysql-server
Pour installer MariaDB, remplacer mysql-server par mariadb-server

Selon la distribution, à l'installation, il est demandé de saisir le mot de passe root de MySQL. Sinon, par défaut le mot de passe est vide. Pour changer le mot de passe, utiliser la commande suivante :

# dpkg-reconfigure mysql-server-5.0
Depuis Debian Jessie, la commande précédente ne permet plus de modifier le mot de passe root. Pour faire cela, utiliser la commande suivante :
$ mysqladmin -u root -p'oldpassword' password 'newpass'

PHP

PHP est un langage de script permettant la génération de page Web dynamique et la communication avec le serveur MySQL. Pour utiliser PHP 5 avec Apache2 et MySQL, il faut installer deux modules supplémentaires.

# apt-get install php5 libapache2-mod-php5 php5-mysql

Pendant l'installation, le serveur Apache2 sera redémarré et il y aura sûrement l'erreur suivant :

apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName

Cet erreur n'a rien de bloquant et le problème peut se résoudre en ajoutant la directive “ServerName” dans la configuration d'Apache (/etc/apache2/apache2.conf :

  • avec votre nom de domaine (si vous en possède un)
ServerName www.nomdomaine.fr
  • sinon en local
ServerName 127.0.0.1

Après la modification du fichier de configuration d'Apache2, il faut recharger sa configuration :

# /etc/init.d/apache2 reload

Pour vérifier le bon fonctionnement de PHP, créer un fichier /var/www/phpinfo.php et ajouter les lignes suivantes :

<?php
    phpinfo();
?>

Ensuite, aller à URL http://adresse_IP_du_serveur/phpinfo.php. Si le navigateur demande de télécharger le fichier, cela peut venir du module mal chargé. Dans ce cas, lancer les commandes suivantes :

# a2enmod php5
# /etc/init.d/apache2 restart

Ensuite, ré-essayer. Relancer le navigateur si besoin!

Phpmyadmin

Phpmyadmin est une interface Web permettant la gestion des bases de données mysql. Pour l'installer,

# apt-get install phpmyadmin

Aller sur http://adresse_ip/phpmyadmin . Si ça ne marche pas, lancer la commande :

# dpkg-reconfigure phpmyadmin

Et vérifier que apache2 est bien coché.

Trucs et astuces

VirtualHost overlap on port 443

Lorsqu'on active le module SSL d'Apache2, au restart, on obtient le warning suivant :

[....] Reloading web server config: apache2[Mon Apr 20 14:24:04 2015] [warn] _default_ VirtualHost overlap on port 443, the first has precedence
[Mon Apr 20 14:24:04 2015] [warn] _default_ VirtualHost overlap on port 443, the first has precedence
. ok

Ajouter simplement NameVirtualHost *:443 juste avant la ligne Listen 443 http. Relancer Apache2.

Problème d'encodage

Lorsque je teste certains outils Web (CMS, Wiki…) qui sont codés en ISO-8859-1, j'ai à chaque fois un problème de codage. J'ai remarqué que le navigateur choisi UTF8 malgré que l'encodage ISO-8859-1 est bien indiqué dans le fichier xHTML. Le “problème” vient en fait d'apache2. Il suffit d'éditer le fichier /etc/apache2/apache2.conf. Commentez la ligne suivante (normalement c'est déjà commenté) :

AddDefaultCharset ISO-8859-1

Ensuite, ajoutez la ligne suivante à la suite :

AddDefaultCharset off

Maintenant, il ne devrait plus avoir de problème d'encodage.

Directive UserDir

Le module UserDir permet au répertoire ~/public_html d'un utilisateur d'être accessible par l'adresse http://example.com/~user/. Par défaut, ce module est désactivé. Pour l'activer, il suffit d'utiliser a2enmod :

# a2enmod userdir

L'utilisateur peut publier ses pages Web dans son répertoire ~/public_html.

Pour utiliser des scripts PHP avec userdir, il faut commenter (en ajoutant un # devant) les lignes suivantes dans /etc/apache2/mods-enabled/php5.conf :

<IfModule mod_userdir.c>
    <Directory /home/*/public_html>
        php_admin_value engine Off
    </Directory>
</IfModule>

Apache2 : mod evasive

Ce module d'Apache permet de limiter les attaques Ddos. En effet, lorsqu'un IP envoie trop de requêtes au serveur, Apache renvoie un erreur HTTP 403.

Pour installer le module :

# aptitude install libapache2-mod-evasive

Créer le fichier /etc/apache2/conf.d/evasive.conf et copier les lignes suivantes :

evasive.conf
<IfModule mod_evasive20.c>
# Taille de la table.
DOSHashTableSize 2048
 
# Nombre de même pages visibles par la même IP.
DOSPageCount 2
 
# Nombre de même sites visibles par la même IP.
DOSSiteCount 50
 
# Intervalle autorisant l'affichage de la même page par la même adresse.
DOSPageInterval 1
 
# Intervalle autorisant l'affichage du même site par la même adresse.
DOSSiteInterval 1
 
# Durée de blocage.
DOSBlockingPeriod 10
 
# Adresse email de notification en cas d'attaque.
DOSEmailNotify "adresse@email.com"
 
# Liste blanche.
DOSWhiteList 127.0.0.1
</IfModule>

Créer le dossier de log :

# mkdir /var/log/evasive
# chown www-data:www-data /var/log/evasive

Ensuite, recharger Apache :

# /etc/init.d/apache2 reload

Ce script perl permet de test la configuration (il faut commenter la ligne DOSWhiteList 127.0.0.1) :

test.pl
#!/usr/bin/perl
 
# test.pl: small script to test mod_dosevasive's effectiveness
 
use IO::Socket;
use strict;
 
for(0..100) {
  my($response);
  my($SOCKET) = new IO::Socket::INET( Proto   => "tcp",
                                      PeerAddr=> "127.0.0.1:80");
  if (! defined $SOCKET) { die $!; }
  print $SOCKET "GET /?$_ HTTP/1.0\n\n";
  $response = <$SOCKET>;
  print $response;
  close($SOCKET);
}
# chmod +x test.pl
# ./test.pl
Pour envoyer un mail, le mod evasive utilise la commande /bin/mail. Or, sous Debian, la commande mail se trouve dans /usr/bin. Il suffit juste de créer le lien symbolique :
# ln -s /usr/bin/mail /bin/mail

Source : http://wiki.goldzoneweb.info/evasive

Sources

lamp.txt · Dernière modification: 2016/08/27 19:52 par TuxGasy