Mettre en place un serveur MySQL et Apache PHP

Mettre en place un serveur MySQL et Apache PHP

28/03/2014

Dans​‌‍​‌​‌‍​‍ ce tutoriel nous allons voir comment installer un serveur web Apache et comment y ajouter un module PHP et le module MySQL. Nous allons par la suite installer un serveur de base de données MySQL.

Installation de Apache

Pour installer apache rien de plus simple, il vous suffit de mettre vos dépôts à jour puis d’installer le package avec la commande suivante :

1
2
sudo apt-get update
sudo apt-get install apache2

Vous pouvez vous connecter à l’adresse ip de votre serveur et admirer un message disant It Works.

Si ce n’est pas le cas vérifiez que le service apache a bien démarré en tapant la commande suivante :

1
sudo service apache2 start

Et voilà c’est terminer pour apache. Nous allons maintenant installer PHP5 et activer le module pour Apache.

Installation de PHP 5

Pour l’installation de PHP5 ça va être légèrement plus complexe car nous allons certes installer PHP5 mais aussi les différents modules indispensables tels que GD pour la gestion d’images, curl pour les appels serveurs distants, mysql pour les connexions de base de données, mcrypt et mhash pour avoir accès aux différents algorithmes de hash et cryptage etc… Entrez la commande suivante qui installera tout pour vous.

1
sudo apt-get install libapache2-mod-php5 php5 php5-common php5-curl php5-gd php5-idn php-pear php5-imagick php5-imap php5-json php5-mcrypt php5-memcache php5-mhash php5-mysql php5-ps php5-pspell php5-recode php5-snmp php5-sqlite

Maintenant pour des raisons de sécurité nous allons désactiver certaines fonctions du langage qui donnent accès au shell tel que : shell_exec, exec, proc_open, system … Pour cela ouvrez le fichier /etc/php5/apache2/php.ini et ajoutez-y la ligne suivante :

1
sudo vim /etc/php5/apache2/php.ini
1
disable_functions = symlink, shell_exec, exec, proc_close, proc_open, popen, system, dl, passthru, escapeshellarg, escapeshellcmd

Vous pouvez y ajouter toutes les fonctions que vous souhaitez interdire. Et voilà notre serveur PHP est prêt. Nous allons dans la partie suivante voir comment installer plusieurs sites sur le même serveur apache accessible depuis des domaines différents.

Les hôtes virtuels

Apache est capable de gérer des hôtes virtuels, c’est-à-dire qu’il est capable de router une requête vers un répertoire en fonction de l’adresse d’origine. Il est donc possible d’accéder à aux sites balandavid.com et clearday.fr étant sur le même serveur. Pour commencer copiez la configuration par default d’apache et donnez-lui le nom du site que vous souhaitez configurer et terminez par l’extension .conf. Le nom du fichier n’a pas réellement d’importance, il s’agit là plus d’une question d’organisation. Une fois la copier réalisée ouvrez le fichier

1
2
sudo cp /etc/apache2/sites-availlable/000-default.conf /etc/apache2/sites-availlable/my-home.conf
sudo vim /etc/apache2/sites-availlable/my-home.conf

L’option ServerName permet de définir le nom du serveur, ajoutez une ligne ServerAlias pour définir le nom de domaine de votre site, séparez les par des espace s’il y en a plusieurs. La directive suivante permet de définir l’adresse courriel du responsable du site, elle n’est pas obligatoire mais il est bien de la définir, elle apparaît dans les messages par défaut d’erreur d’apache. La directive DocumentRoot permet de définir le chemin du site dans l’arborescence du serveur. On retrouve ensuite la gestion des droits et des erreurs. Après modifications, votre fichier devrais ressembler à ceci :

1
2
3
4
5
6
7
8
9
10
11
12
13
<VirtualHost *:80>
ServerName my.home
ServerAlias my.home www.my.home www1.my.home
ServerAdmin webmaster@localhost
DocumentRoot /var/www/my.home/www/

<Directory />
AllowOverride none
</Directory>

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Il est maintenant indispensable de le déployer avant de redémarrer le serveur apache. Pour cela il faut faire un lien symbolique dans le répertoire /sites-enables de apache puis redémarrer le serveur apache :

1
2
sudo ln -s /etc/apache2/sites-availlable/my-home.conf /etc/apache2/sites-enabled
sudo service apache2 restart

Mais ce n’est pas encore terminé, vous devez maintenant créer les répertoires du site et y définir un fichier par défaut :

1
2
3
sudo mkdir /var/www/my.home
sudo mkdir /var/www/my.home/www
sudo echo “<?php echo ‘Bonjour’; ?>”>index.php

Vous pouvez maintenant vous connecter à votre site et admirer le message Bonjour sur votre écran. Si vous n’avez rien à l’écran ou qu’un message d’erreur s’affiche, c’est que vous avez réussi à foirer quelque chose, reprenez le processus et si ça ne fonctionne toujours pas, déposez votre remarque dans les commentaires et je tâcherai d’y répondre avec la célérité qui s’impose.

Le serveur MySQL

Et voilà on termine par le plus simple, l’installation de MySQL. Il est préférable de l’installer sur une machine séparée car vous pourriez avoir besoin de travailler à partir de différentes application et serveur sur les mêmes bases de données. Pour l’installation, c’est simple comme apache, sachez que pendant l’installation un mot de passe vous sera demandé, évitez de le laisser vide ou d’y mettre « root » ou « toor », utilisez votre cerveau pour en faire un correct et vous en rappeler sinon allez faire pour vous rafraîchir les méninges.

1
sudo apt-get install mysql-server

Et voilà le tour est joué.

Le par-feu

C’est bien tout ça mais personne ne peut y accéder, il vous faudra ajouter une règle d’autorisation sur votre par feu pour rediriger le trafic extérieur arrivant sur le port web (port 80) vers votre serveur web.

Ouvrez le fichier rules et ajoutez-y la ligne suivante

1
sudo vim /etc/shorewall/rules
1
DNAT            net             loc:172.20.150.1:80     tcp     80

Bilan

Ça y est, nous avons mis notre architecture serveur pour le web. Dans le prochain tutoriel nous allons voir comment sécuriser tout ça de manière à éviter quelque ennui.