K

- Base de connaissances

Accueil > Système > Installation d’APACHE 2 PHP et MySQL (avec l’interface WEB PHPMyAdmin)

Installation d’APACHE 2 PHP et MySQL (avec l’interface WEB PHPMyAdmin)

mardi 6 novembre 2012, par webmestre

Lire aussi :

Installation d’Apache 2 et PHP5

Sous Distribution DEBIAN ou UBUNTU, il suffit d’exécuter la commande suivante pour installer Apache 2 :

sudo apt-get install apache2

Si l’installation d’Apache 2 s’est correctement déroulée, le retour de la commande suivante :

wget -qO- http://localhost

Il devrait afficher :

<html><body><h1>It works!</h1>
<p>This is the default web page for this server.</p>
<p>The web server software is running but no content has been added, yet.</p>
</body></html>

Ensuite, la commande qui suit, permet d’installer PHP5 :

sudo apt-get install libapache2-mod-php5

A ce moment et après un re-démarrage du serveur WEB Apache 2 via la commande suivante :

sudo /etc/init.d/apache2 restart

ou :

sudo service apache2 restart

Il est alors possible d’utiliser le langage de scripts PHP (Hypertext Preprocessor). Et, l’exemple ci-dessous implémente un fichier de test test.php pour vérifier que notre installation fonctionne correctement.

Dans le répertoire /var/www, on crée le fichier index.php qui contient le code suivant :

<?php
echo "Hello PHP !!!";

De même pour tester, on exécute la commande suivante :

wget -qO-  http://localhost/index.php

Qui devrait nous retourner :

Hello PHP !!!

Cacher la version d’Apache et autres informations sensibles

Par défaut, Apache affiche la version que vous utilisez, votre système d’exploitation, et d’autres informations. Une personne malveillante peut utiliser ces informations pour mieux cibler son attaque sur votre serveur, nous allons donc les cacher.

Par exemple, dans un navigateur WEB taper une URL inexistante sur votre serveur WEB, par exemple : http://localhost/fichier_qui_existe_pas.php
Le retour sera :

<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL /ezr was not found on this server.</p>
<hr>
<address>Apache/2.2.22 (Ubuntu) Server at ............. Port 80</address>
</body></html>

On constate que dans le retour nous avons la distribution hébergeant le serveur WEB ainsi que la version d’Apache.

Pour faire disparaître ces informations, éditons le fichier /etc/apache2/apache2.conf ou dans les versions supérieures à Apache 2.2.11 ces directives sont à placer dans /etc/apache2/conf.d/security.

On modifie ou ajoute les lignes suivantes à notre fichier de configuration :

ServerSignature Off
ServerTokens Prod

Configurer SSL (HTTPS) pour Apache 2

Dans ce chapitre, nous allons expliquer comment activer le protocole HTTPS.

On active le mod SSL :

sudo a2enmod ssl
sudo /etc/init.d/apache2 restart

Puis il faut générer ce que nous appelons un certificat SSL qui va permettre de signer et crypter les communications du serveur :

sudo apt-get install openssl
sudo mkdir /etc/apache2/ssl
sudo openssl req -x509 -nodes -days 365 -newkey rsa:1024 -out /etc/apache2/ssl/server.crt -keyout /etc/apache2/ssl/server.key
sudo chmod 440 /etc/apache2/ssl/server.key

NB : Une série de questions vous est posée pour créer les certificats d’authentification.

Il suffit ensuite de créer un virtualHost SSL, et pour ce faire on va s’appuyer sur la configuration par défaut d’Apache 2. Si nous regardons les fichiers dans le répertoire /etc/apache2/sites-available/, nous constaterons que par défaut à l’installation d’Apache2, nous avons un paramétrage de virtualhost SSL tout prêt via le fichier default-ssl, il suffit juste de l’activer :

sudo a2ensite default-ssl
sudo /etc/init.d/apache2 restart

Théoriquement, via un navigateur WEB supportant le SSL, vous devriez pouvoir vous connecter à votre serveur WEB via SSL en tapant l’URL : https://localhost

Nous allons modifier ce fichier de configuration, default-ssl, pour y ajouter les certificats que nous avons généré précédemment, éditons donc le fichier /etc/apache2/sites-available/default-ssl pour modifier les lignes SSLCertificateFile et SSLCertificateKeyFile, tel que :

SSLEngine On
SSLCertificateFile /etc/apache2/ssl/server.crt
SSLCertificateKeyFile /etc/apache2/ssl/server.key

Si vous retentez une connexion SSL avec votre navigateur WEB (ctrl-F5, pour rafraîchir le cash), vous devriez voir vos informations renseignées dans le certificat transmis par le serveur WEB, celles misent lors de la génération des certificats.

NB : Le fichier /etc/apache2/ports.conf permet de gérer les ports d’écoute du serveur WEB, et par défaut ils sont le port 80 pour le protocole HTTP et 443 pour le protocole HTTPS.

Installation de MySQL

De même que l’installation du serveur de base de données MySQL, se fait via la commande apt-get suivante :

sudo apt-get install mysql-server libapache2-mod-auth-mysql php5-mysql

Lors de l’installation, le mot de passe du super-utilisateur du serveur MySQL sera paramétré.

Pour valider l’installation, il suffit de taper la commande suivante :

mysql -u root -p

Installation de phpmyadmin

Installation via les dépôts :

Maintenant, que nous avons installé MySQL, il existe une petite interface WEB très conviviale pour administrer MySQL... Bien sûr, nous parlons de PHPMyAdmin (cf. site officiel http://www.phpmyadmin.net/home_page/index.php). Maintenant comme toute distribution LINUX se doit, elle intègre le meilleur de ce qui se fait (mais aussi le pire ;) ), d’où pour installer PHPMyAdmin il suffit encore une fois d’utiliser une commande apt-get :

sudo apt-get install phpmyadmin

Installation via les sources :
Certains hébergeurs de serveurs dédiés brident les dépôts des distributions qu’ils mettent à disposition pour diverses raisons, ou si vous souhaitez utiliser les dernières sources de PHPMyADMIN, ce chapitre vous propose l’installation de PHPMyADMIN via les derniers sources (site officiel : http://www.phpmyadmin.net/).

Dans un premier temps, il faut télécharger les sources et les décompresser (Au moment où est écrit cet article, la dernière version de est la 3.5.3) :

wget -O phpMyAdmin-3.5.3-all-languages.tar.bz2 http://sourceforge.net/projects/phpmyadmin/files/phpMyAdmin/3.5.3/phpMyAdmin-3.5.3-all-languages.tar.bz2/download
tar xjf phpMyAdmin-3.5.3-all-languages.tar.bz2
mv phpMyAdmin-3.5.3-all-languages/ /home/www-phpmyadmin

NB : Dans notre exemple, il est volontaire de placer les sources dans /home. Mais, les bonnes pratiques voudraient que les sources soient placées dans le répertoire /usr/share

Puis, nous créons le répertoire et donnons les bons droits au répertoire :

mkdir /home/www-phpmyadmin/config
chown www-data:www-data /home/www-phpmyadmin/ -R

Une fois fait, nous allons rendre accessible exclusivement PHPMyAdmin via un virtualhost SSL pour des raisons de sécurité et authentifier l’utilisateur WEB se connectant à cette ressource :

htpasswd -c /etc/apache2/htpasswd_user_phpmyadmin.passwd user1
htpasswd /etc/apache2/htpasswd_user_phpmyadmin.passwd user2

Pour ce faire, nous allons modifier le fichier /etc/apache2/sites-available/default-ssl en y ajoutant les lignes suivantes :

# phpMyAdmin default Apache configuration
Alias /bdd_access /home/www-phpmyadmin
<Directory /home/www-phpmyadmin>
        Options FollowSymLinks
        DirectoryIndex index.php
        <IfModule mod_php5.c>
                AddType application/x-httpd-php .php
                php_flag magic_quotes_gpc Off
                php_flag track_vars On
                php_flag register_globals Off
                php_admin_flag allow_url_fopen Off
                php_value include_path .
                php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
                php_admin_value open_basedir /home/www-phpmyadmin/
        </IfModule>
       
        <IfModule mod_authn_file.c>
                AuthType Basic
                AuthName "phpMyAdmin Setup"
                AuthUserFile /etc/apache2/htpasswd_user_phpmyadmin.passwd
        </IfModule>
        Require valid-user
</Directory>
# Authorize for setup
<Directory /home/www-phpmyadmin/setup>
    <IfModule mod_authn_file.c>
    AuthType Basic
    AuthName "phpMyAdmin Setup"
    AuthUserFile /etc/apache2/htpasswd_user_phpmyadmin.passwd
    </IfModule>
    Require valid-user
</Directory>
# Disallow web access to directories that don't need it
<Directory /home/www-phpmyadmin/libraries>
    Order Deny,Allow
    Deny from All
</Directory>
<Directory /home/www-phpmyadmin/setup/lib>
    Order Deny,Allow
    Deny from All
</Directory>

Répondre à cet article

Plan du site | Suivre la vie du site RSS 2.0 | powered by NYSTEK-EDITIONS and NYSTEK-CONSULTING