Ubuntu Server : installer un serveur LAMP (Linux Apache MySQL PHP)

Un serveur LAMP est un serveur utilisant 4 composants particuliers, destiné dans la plupart des cas à la publication de sites Web :

  • Linux : le système d'exploitation
  • Apache : le serveur Web
  • MySQL : le serveur de base de données
  • PHP : le langage de script

Le but ici est d'installer ces différents composants à partir des paquetages de la distribution Ubuntu Server 13.10 qui utilise actuellement les versions suivantes des composants :

  • Linux v3.10.23
  • Apache v2.4.6
  • MySQL v5.5.37
  • PHP v5.5.3

L'installation de l'ensemble est aisé grâce aux paquetages fournis par la distribution Ubuntu Server, le tout étant de les installer dans le bon ordre 🙂

Les étapes seront les suivantes :

  1. Installer le serveur Apache
  2. Installer le module PHP pour Apache
  3. Installer le serveur MySQL
  4. Installer le module MySQL pour PHP

Article mis à jour pour Ubuntu Server 13.10

1 – Installer le serveur Apache

Nous installerons ici le serveur Apache en mode prefork (mode recommandé pour l'utilisation de PHP).

Installation du paquetage apache2-mpm-prefork :

# aptitude install apache2-mpm-prefork

Commande de test rapide pour vérifier que le serveur Apache est installé :

# apache2 -v
Server version: Apache/2.4.6 (Ubuntu)
Server built:   Mar 19 2014 20:56:01

Envoi d'une requête HTTP sur la page par défaut pour vérifier que le serveur répond via cURL (ou via un navigateur Web) :

# curl "http://localhost"

<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>

C'est bon, le serveur Apache est installé et fonctionnel !

Pour aller plus loin … :

La configuration Apache se trouve dans le répertoire /etc/apache2/

On y trouvera le fichier de configuration principal : apache2.conf

Cette configuration utilise des variables définies dans le fichier envvars et inclus les autres fichiers de configuration suivants

  • httpd.conf : vide par défaut, permet d'ajouter d'autres directives Apache
  • ports.conf : directives de configuration des ports d'écoute du serveur (ex: Listen)
  • mods-enabled/*.load : modules à charger (liens symboliques vers ../mods-available)
  • mods-enabled/*.conf : configuration des modules (liens symboliques vers ../mods-available)
  • conf.d/* : fichiers de configuration supplémentaires (ex: charset)
  • sites-enabled/* : configuration des hôtes virtuels (liens symboliques vers ../sites-available)

2 – Installer le module PHP pour Apache

Installer le paquetage libapache2-mod-php5 (installera PHP avec le patch Suhosin + l'interface ligne de commande + le module Apache)

# aptitude install libapache2-mod-php5

Commande de test rapide pour vérifier que PHP est installé :

# php5 -v
PHP 5.5.3-1ubuntu2.6 (cli) (built: Jul  7 2014 16:54:32)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2013 Zend Technologies
    with Zend OPcache v7.0.3-dev, Copyright (c) 1999-2013, by Zend Technologies

Un rechargement du serveur Apache pour prise en compte du module sera fait automatiquement par l'installeur.

On peut maintenant créer notre première page PHP pour tester que l'ensemble Apache + PHP fonctionne :

# vim /var/www/phpinfo.php

Mettre ce script dans le fichier :

<?php
phpinfo();
?>

Enregistrer et quitter VIm :

:wq

On teste l'affichage de la page PHP via Apache avec cURL (ou via un navigateur Web) :

# curl "http://localhost/phpinfo.php"

Si ça fonctionne, beaucoup d'informations concernant PHP s'afficheront à l'écran.

Pour aller plus loin … :

La configuration PHP se trouve dans le fichier /etc/php5/apache2/php.ini.

La configuration des modules additionnels se trouvent dans /etc/php5/apache2/conf.d/ (ex : configuration du module PHP MySQL)

L'installation du module PHP pour Apache active celui-ci directement au serveur Apache :

# ls -l /etc/apache2/mods-enabled/ | grep php
php5.conf -> ../mods-available/php5.conf => configuration PHP (ajout du SetHandler par exemple)
php5.load -> ../mods-available/php5.load => instruction LoadModule

3 – Installer le serveur MySQL

Installer le paquetage mysql-server (meta-package regroupant le serveur dans sa dernière version ainsi que le client) :

# aptitude install mysql-server

Une fenêtre apparaitra pour choisir un mot de passe à l'utilisateur root, et le confirmer.

Même s'il est possible de ne pas mettre de mot de passe, il est vivement conseillé d'en mettre un !

Une fois que MySQL est installé, on peut faire une petite vérification en se connectant :

# mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 34
Server version: 5.5.37-0ubuntu0.13.10.1 (Ubuntu)

Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

Une fois connecté, on peut exécuter une requête lambda, par exemple pour voir la version du serveur MySQL :

mysql> select version();
+-----------------+
| version()       |
+-----------------+
| 5.5.37-0ubuntu0 |
+-----------------+
1 row in set (0.00 sec)

C'est bon ! On peut quitter :

mysql> exit
Bye

4 – Installer le module MySQL pour PHP

La dernière étape est d'installer le module MySQL pour PHP.

Pour cela, très simple, on installe le package … php5-mysql !

# aptitude install php5-mysql

Un rechargement du serveur Apache s'impose pour prendre en compte le nouveau module PHP :

# service apache2 reload

On peut maintenant créer un nouveau script PHP pour tester que l'ensemble Apache + PHP + MySQL fonctionne :

# vim /var/www/mysqlinfo.php

Mettre ce script dans le fichier (remplacer password par le mot de passe de l'utilisateur root MySQL) :

<?php

$db = mysql_connect( 'localhost', 'root', 'password' );
mysql_select_db( 'mysql', $db );
$sql = 'SELECT version();';
$req = mysql_query( $sql ) or die( 'Erreur SQL !<br />'.$sql.'<br />'.mysql_error() );

while( $data = mysql_fetch_assoc( $req ) )
{
        print '<b>Version: '.$data['version()'].'</b>';
}

mysql_close();

?>

On teste l'affichage de la page PHP via Apache avec cURL (ou via un navigateur Web) :

# curl "http://localhost/mysqlinfo.php"
<b>Version: 5.5.37-0ubuntu0.13.10.1</b>

Si la version MySQL s'affiche, c'est bon, le serveur Apache a exécuté une requête pour un script PHP qui requête le serveur MySQL.

La combinaison Apache + PHP + MySQL fonctionne : le serveur LAMP est opérationnel !

Pour aller plus loin … :

L'installation du module MySQL pour PHP l'active directement via l'ajout de fichiers au répertoire de configuration additionnel PHP (ajout de la directive extension=) :

# ls /etc/php5/apache2/conf.d
mysqli.ini
mysql.ini
pdo_mysql.ini

Le module est quant à lui ajouté directement dans le répertoire des modules PHP :

# ls /usr/lib/php5/20090626/ | grep mysql
mysqli.so
mysql.so
pdo_mysql.so

6 réflexions sur « Ubuntu Server : installer un serveur LAMP (Linux Apache MySQL PHP) »

  1. Tout a bien fonctionné, super, jusqu'à

    PRE.ctl { font-family: « Lohit Hindi »,monospace; }P { margin-bottom: 0.21cm; }
    mysqlinfo.php Echec à l'affichage :

    PRE.ctl { font-family: « Lohit Hindi »,monospace; }P { margin-bottom: 0.21cm; }
    <b>Fatal error</b>: Call to undefined function mysql_connect() in <b>/var/www/mysqlinfo.php</b> on line <b>3</b><br />

    En ligne 3, à la place de password, j'avais copié celui défini à l'install de mysql-server. Quelle erreur ai-je commise ?

    Lorsque je modifie mysqlinfo.php = Gtk-WARNING **: Calling Inhibit failed: GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name org.gnome.SessionManager was not provided by any .service files

    Le problème est-il là ?

    Merci.

  2. merci beaucoup boncoindunet, c’est très clair et facile à suivre,
    j’aimerai vous posteriez plus des tutos sur l’autre langage, par exemple java, android, J2ee …
    merci encore

Laisser un commentaire