J'explique dans cette page comment mettre en place une solution LAMP (Linux, Apache, MySQL et Php).
Je considère ici que Linux est déjà installé et configuré.
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 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
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
$ mysqladmin -u root -p'oldpassword' password 'newpass'
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 :
ServerName www.nomdomaine.fr
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 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é.
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.
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.
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>
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 :
<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) :
#!/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
# ln -s /usr/bin/mail /bin/mail
Source : http://wiki.goldzoneweb.info/evasive