ubuntu-fr

Communauté francophone des utilisateurs d'Ubuntu

[[lamp]]

Piste: » lamp


Installer une solution LAMP

Cette page traite de la procédure à suivre pour installer une solution LAMP (Linux, Apache, MySQL, PHP/Perl/Python) sous Ubuntu.

La procédure traitée sur cette page est à exploiter sur un système sur lequel aucune solution LAMP n'a encore été installée*.

Cette procédure installera sur votre machine :

  • Apache2
  • Mysql-5.0
  • PHP5
  • PhpMyAdmin

Si vous modifiez vos dépôts, n'oubliez pas de recharger la liste !

* Si vous avez des doutes à ce sujet et que vous pouvez vous permettre de tout supprimer pour repartir d'un système vierge, passez alors par synaptic pour désinstaller chaque paquet en prenant soin de choisir l'option "sélection pour suppression complète". A utiliser avec précaution donc, puisque les fichiers de configuration sont supprimés !

Tout installer en un clic

Pour les plus pressés :

Si vous souhaitez y aller pas-à-pas, suivez plutôt les étapes suivantes (plus détaillées)

Installation d'Apache2

Installez les paquets apache2 apache2-doc

Ceci installera Apache2 et sa documentation. Les fichiers de configuration du serveur se trouveront dans « /etc/apache2 » et la documentation sera accessible à l'adresse : http://localhost/manual

Installation de MySQL 5.0

Installez le paquet mysql-server

plus d'informations sur le serveur MySQL ...

Depuis Gutsy, à la fin de l'installation, une fenêtre vous demande de choisir le mot de passe pour l'utilisateur root de MySQL.

Pour entrer à nouveau le mot de passe :

sudo dpkg-reconfigure mysql-server-5.0

Installation de PHP 5 (avec modules pour Apache et MySQL)

Pour installer PHP5 et quelques modules supplémentaires pour Apache2 et MySQL, installez les paquets php5 libapache2-mod-php5 php5-mysql.

Pendant l'installation, le serveur Apache2 sera redémarré et vous allez sûrement rencontrer une erreur de ce genre :

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

Ceci n'est absolument pas gênant et vous pouvez régler le problème en ajoutant la directive « ServerName » dans le fichier de configuration principal : /etc/apache2/apache2.conf.

Exemple si vous avez comme nom de domaine « www.monsite.tld » :

ServerName www.monsite.tld

Ou si vous êtes en local :

ServerName 127.0.0.1

Premières vérifications

Si vous avez modifié la configuration d'Apache2 (voir ci-dessus), vous devez d'abord recharger sa configuration :

sudo /etc/init.d/apache2 reload

Vérification du bon fonctionnement d'Apache

Ouvrez votre navigateur internet et rendez-vous à l'URL :

Si tout s'est bien passé, vous devriez voir une page Web dans laquelle l'index du répertoire Web apparait ainsi que le dossier « apache2-default ».

Attention, si vous possédez un routeur et que vous désirez pouvoir accéder à votre serveur Web en dehors de votre réseau local, n'oubliez pas d'ouvrir le port HTTP (80)
Si lorsque vous faites: http://127.0.0.1/ ou http://localhost/, il s'affiche dans le navigateur "it works!", vous devez, pour voir apparaître le contenu du répertoire Web, supprimer index.html du dossier /var/www/ en ayant les droits superutilisateur.

Vérification du bon fonctionnement de PHP5

Nous allons créer un fichier PHP : le fameux « phpinfo.php » qui est très simple mais permettra de savoir si PHP est correctement installé et fonctionnel.

Créez le fichier /var/www/phpinfo.php.

Le répertoire /var/ est un répertoire système, vous devrez donc user de vos droits d'administration.

Insérez-y le code suivant :

<?php
    phpinfo();
?>

Une fois le fichier créé (et enregistré), il devrait apparaitre sur la page d'index de votre serveur (vue tout à l'heure). Cliquez alors dessus ou entrez directement l'URL dans votre navigateur (du type http://localhost/phpinfo.php, mais pas /var/www/phpinfo.php).

Si votre navigateur vous demande de télécharger le fichier « phpinfo.php », cela peut venir d'un problème de module mal chargé. Dans ce cas, vous pouvez tenter de résoudre cette « erreur » en activant le module PHP5 :

sudo a2enmod php5

et

sudo /etc/init.d/apache2 restart

puis videz le cache de votre navigateur (Ctrl+Maj+Suppr. sous Firefox).

Si tout s'est bien passé, vous devriez voir apparaître une page Web dans laquelle se trouvent plusieurs informations, notamment celles liées à la version de PHP utilisée sur votre système, sur le système en lui-même, etc...

Installation de quelques modules supplémentaires pour PHP5

Vous pourriez avoir besoin de quelques modules supplémentaires pour PHP5, afin d'ajouter certaines fonctionnalités à votre serveur.

Pour connaitre les différents modules disponibles, visitez la section dédiée aux modules pour PHP.

Sécurisation de MySQL

Pour l'instant, on peut accéder aux bases de données MySQL avec le login « root » et sans mot de passe. Nous allons donc sécuriser un peu le serveur.

Si vous avez une erreur comme celle-là :

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

il suffit de lancer MySQL avant de faire ces manipulations :

sudo /etc/init.d/mysql start

Ouvrez un terminal et tapez :

mysql_secure_installation

Le script de sécurisation du serveur MySQL démarre.

Si vous êtes à l'aise avec l'anglais, les questions posées sont assez simples et il suffit d'y répondre puis de passer à la suite.
Depuis Gutsy, le mot de passe demandé précédemment en fin d'installation de mysql est le mot de passe root, il faut donc entrer celui-ci dans l'étape suivante.
Enter current password for root (enter for none):

Validez avec « Entrée ». En effet, pour l'instant, il n'y a pas de mot de passe.

Setting the root password ensures that nobody can log into the MySQL root user without the proper authorisation.
Set root password? [Y/n]

Faites « Entrée » pour choisir un mot de passe.

New password:

Entrez le mot de passe de votre choix et validez par « Entrée ».

By default, a MySQL installation has an anonymous user, allowing anyone
to log into MySQL without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n]

Faites « Entrée » pour supprimer l'utilisateur anonyme créé lors de l'installation.

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n]

Si vous n'avez pas besoin d'administrer votre base de données à distance, ce qui devrait être le cas de la plupart des utilisateurs, validez par « Entrée ». Ainsi, l'utilisateur « root » ne pourra se connecter qu'en local. Sinon tapez « n ».

Remove test database and access to it? [Y/n]

Validez par « Entrée » pour supprimer la base de données de test créée lors de l'installation.

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n]

Validez par « Entrée » pour prendre en compte les changements que vous venez de faire et les appliquer immédiatement.

Préserver ses bases de données

La meilleure façon de protéger ses bases de données est certainement de mettre en oeuvre une politique de sauvegarde

FIXME Pas certain que la manipulation inverse fonctionne (MySQL refuse de démarrer)

Les bases de données gérées par phpmyadmin ou faites en ligne de commande, sont stockées sur : /var/lib/mysql/ Le problème ici c'est qu'en cas de re-installation du système vous perdez toutes vos bases de données. Voici une petite astuce, qui va permettre de conserver vos données sur une partition "à part" sans pour autant casser le système et ses mises à jour. Dans notre exemple, nous allons placer le répertoire des bases de données dans /home/mysql (à vous de choisir :) ).

Arrêter mysql :

sudo /etc/init.d/mysql stop

Déplacer le dossier /var/lib/mysql/ (le -v dans la commande, permet de voir l'évolution du "déplacé" - c.f. : peut être omis ) :

sudo mv -v /var/lib/mysql /home/mysql

Créer un lien symbolique pour que le système *retrouve* le dossier mysql :

sudo ln -s /home/mysql /var/lib/mysql

Relancer mysql :

sudo /etc/init.d/mysql start

Vérifier que tout est en place via phpmyadmin. Désormais vos données seront toutes stockées dans /home/mysql.

Lors d'un Upgrade Gusty→Hardy, cette manipulation fonctionne (à prioris parfaitement).
Sous une installation neuve Hardy Heron, cette manipulation peut vous empêchez de redémarrer MySql. Si le cas se présente, voir la solution donnée ci-dessous.
(à noter que lors d'une mise à jour ces modifications peuvent demander à être refaite.)
gksudo gedit /etc/apparmor.d/usr.sbin.mysqld

Là il faut modifier le chemin /var/lib/mysql par /home/mysql, ou l'endroit où vous avez déplacé votre fichier.
Ensuite :

sudo /etc/init.d/apparmor restart
sudo /etc/init.d/mysql start

Votre MySQL devrait alors redémarrer correctement.

Source : JEDI ici http://forum.ubuntu-fr.org/viewtopic.php?id=215014

Installation de PhpMyAdmin

Installez le paquet phpmyadmin

Sous Gutsy, pendant l'installation de phpmyadmin, il vous sera demandé de choisir le serveur web à configurer. Choisissez apache2 (en appuyant sur la barre d'espace après avoir sélectionné l'entrée correspondante avec les flèches du clavier).

Si vous avez installé phpmyadmin en oubliant de sélectionner apache2, il suffit de désintaller TOTALEMENT le module phpmyadmin (via le manager Synaptic) et de le réinstaller
Il est conseillé d'installer le paquet php5-mcrypt sans quoi phpmyadmin subirait des lenteurs (ou ne marcherait pas en 64 bits). Cette fonction est en effet utilisée pour l'authentification par cookie, utilisée par défaut sous ubuntu dans phpmyadmin
Il est important d'installer PhpMyAdmin en dernier et d'avoir défini un mot de passe pour l'utilisateur « root » de MySQL avant de l'installer ou vous risqueriez de rencontrer des problèmes avec PhpMyAdmin.

Vérification du bon fonctionnement de PhpMyAdmin

Pour vérifier le bon fonctionnement de PhpMyAdmin, rendez-vous à l'URL de votre serveur web (voir plus haut) et cliquez sur le répertoire « phpmyadmin » ou tapez http://localhost/phpmyadmin/ si vous ne voyez le répertoire évoqué (voir plus bas pour les explications).

Vous arriverez alors sur la page d'authentification de PhpMyAdmin. Entrez alors votre login (« root ») et le mot de passe choisi lors de la sécurisation de MySQL. Remarque : si votre login est dupont ne pas mettre dupont comme utilisateur mais root puis le mot de passe sinon vous risquez d'avoir l'erreur #1045 - Access denied for user 'root'@'localhost' en tentant d'accéder à vos bases de données.

Si tout s'est bien passé, vous devriez être connecté à PhpMyAdmin et pouvoir créer et gérer vos bases de données.

Il existe déjà deux bases de données, n'y touchez pas. Elles servent au bon fonctionnement de MySQL.
Sous Hardy, Gutsy et Feisty, le lien dans /var/www n'est pas créé. Il suffit de faire le lien suivant pour que phpmyadmin fonctionne (uniquement si http://localhost/phpmyadmin ne fonctionne pas) :

sudo ln -s /usr/share/phpmyadmin/ /var/www/phpmyadmin

La création de liens symboliques n'est pas très propre. Ajoutez plutôt ça à votre conf d'Apache (/etc/apache2/sites-available/default) : (uniquement si http://localhost/phpmyadmin ne fonctionne pas) :

Alias   /phpmyadmin/   "/usr/share/phpmyadmin/"
<Directory "/usr/share/phpmyadmin/">
    Options None
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

Si vous n'arrivez pas sur la page d'authentification de PhpMyAdmin et que vous avez l'erreur "Wrong permission on configuration file, should not be world writable!" vous devez modifier les modes d'accès du fichier "config.inc.php" de la façon suivante :

sudo chmod 644 /usr/share/phpmyadmin/config.inc.php

Pour vérifier de nouveau que PhpMyAdmin fonctionne : utiliser l'URL de votre serveur et cliquer sur le répertoire "phpmyadmin", la page d'authentification doit s'ouvrir.

Si vous n'arrivez pas à créer des bases de données et que vous avez une erreur :

#1006 - Can't create database (errno: 13)

c'est que vous n'avez pas les bons droits sur le répertoire /var/lib/mysql. Pour y remédier vous pouvez faire la commande suivante :

chown -R mysql:mysql /var/lib/mysql 

Utiliser aisément le répertoire contenant les sites

Le répertoire contenant les sites lus par Apache est par défaut /var/www/ Ses droits par défaut sont : propriétaire=root, group=root droits rwXr-Xr-X (X signifie droit x pour les répertoires, mais pas pour les fichiers). Le serveur Apache est 'www-data'.

Pour accéder aux fichiers qu'il doit lire apache utilise donc en standart le droit 'r' de others, mais seul root peut modifier ces fichiers, ce qui n'est pas pratique.

Un ajustement de la politique des droits permet de mieux utiliser ce répertoire

$ sudo chown -R www-data.www-data /var/www  
$ sudo chmod -R u=rwX,g=rwXs,o=--- /var/www
  • permettra à apache de lire le répertoire pour produire les pages
  • permettra à tous les utilisateurs membres du groupe www-data de travailler sur les fichiers
  • permettra à tous les fichiers et répertoires créés dans ce répertoire d'avoir les mêmes propriétés au travers du groupe (GIG activé par g=s)
  • les autres utilisateurs n'ont droit à rien (correct dans un environnement avec de nombreux utilisateurs)

Il reste à

  • mettre les utilisateurs ayant le droit de travailler sur les sites dans le groupe 'www-data'
  • faire des raccourcis pour accéder plus facilement aux répertoires /var/www/... a adapter pour les utilisateurs devant travailler sur tel ou tel site.
  • dans le cas de plusieurs utilisateurs devant travailler sur des sites distincts sans possibilité d'interférence, envisager l'utilisation des "Access Control List" (acl) sur les sous répertoires de /var/www

Alternativement, vous pouvez aussi utiliser la méthode ci dessous ... chacun fait ce qu'il veut ^_^

Changer le répertoire WWW contenant mes sites Web

Tutoriel avancé : http://doc.ubuntu-fr.org/tutoriel/lamp_repertoires_de_travail

Afin de faciliter l'édition de vos fichiers (pouvoir y accéder facilement sans droits d'administration), vous pouvez créer un lien symbolique, utiliser un alias ou un serveur virtuel avec Apache.

Lien symbolique

La première solution consiste à créer dans le répertoire /var/www un lien symbolique vers votre répertoire dans votre /home qui vous servira au quotidien à positionner et modifier vos pages.

Voici le code à lancer dans votre terminal :

cd /var/www
sudo ln -s /home/votre_identifiant/répertoire_pour_votre_site mon_site 

Voilà, si vous accédez à votre http://localhost vous pouvez voir un nouveau répertoire qui porte le nom « mon_site » et qui pointe vers « /home/votre_identifiant/répertoire_pour_votre_site ».

Vérifiez bien que le dossier « répertoire_pour_votre_site » existe avant de lancer votre commande dans le terminal.
Trop tard ?
Il suffit d'effacer le fichier crée par erreur :

sudo rm /var/www/mon_site

Alias

Apache2 dispose d'une fonctionnalité pour créer un alias, une sorte de lien symbolique, qui va pointer vers un autre répertoire (dans notre cas dans votre répertoire personnel).

Afin de créer cet alias, vous devez éditer le fichier /etc/apache2/sites-available/default avec les droits d'administration.

Ajoutez-y le code suivant :

Alias /mon_site /home/votre_identifiant/répertoire_pour_votre_site
<Directory "/home/votre_identifiant/répertoire_pour_votre_site">
# vous pouvez rajouter vos options ici
</Directory>

Une fois la modification effectuée et le fichier sauvegardé, il faut recharger la configuration d'apache pour que vos modifications soient prises en compte.

sudo /etc/init.d/apache2 reload

Voilà, si vous accédez à l'adresse http://localhost vous ne verrez pas de nouveau répertoire. C'est normal, par contre si vous tentez d'accéder à http://localhost/mon_site alors vous vous retrouverez dans "/home/votre_identifiant/répertoire_pour_votre_site".

Pour pouvoir accéder à vos pages, vous devrez vous assurer que l'ensemble du chemin qui y mène dispose des permissions nécessaires (chmod 755). Dans ce cas ci :

sudo chmod -R 755 /home/votre_identifiant/répertoire_pour_votre_site

Logiquement, c'est déjà le cas. D'ailleurs, si votre lien ou votre alias fonctionne, aucune modification ne sera nécessaire, mais on ne sait jamais.

Une autre façon, semblable au lien symbolique, mais permettant de voir le dossier via http://localhost est de monter le répertoire de votre application dans un répertoire existant de /var/www:

sudo mkdir /var/www/monsite
sudo mount --bind ~/monsite /var/www/monsite

Le repertoire de développement de votre dossier personnel est maintenant accessible via /var/www/monsite. Il est aussi possible de rendre le lien permanent par /etc/fstab avec quelque chose comme ça:

/home/pascal/monsite /var/www/monsite none    bind

.htaccess

Pour que apache2 prenne en compte la présence d'un fichier .htaccess, il faut éditer le fichier /etc/apache2/sites-available/default et remplacer les deux 1ers AllowOverride None (dans les balises <Directory /> et <Directory /var/www/>) par AllowOverride All

Une fois fait, redémarrez Apache2.

Virtualhost

Suivez le tutoriel sur la création d'un VirtualHost avec le dossier de votre choix et placez-y vos fichiers.

Dépannage

php5: This module does not exist!

Si vous êtes dans ce cas:

sudo a2enmod php5
This module does not exist!

C'est juste que les fichiers php5.load et php5.conf n'existent pas. On va donc les créer ! ;)

Donc pour commencer, on va créer le fichier php5.load:

sudo gedit /etc/apache2/mods-available/php5.load

Et y taper :

LoadModule php5_module /usr/lib/apache2/modules/libphp5.so

Ensuite le fichier php5.conf:

sudo gedit /etc/apache2/mods-available/php5.conf

Et y taper:

<IfModule mod_php5.c>
  AddType application/x-httpd-php .php .phtml .php3
  AddType application/x-httpd-php-source .phps
</IfModule>

Il reste les liens à créer :

sudo ln -s /etc/apache2/mods-available/php5.load /etc/apache2/mods-enabled/php5.load
sudo ln -s /etc/apache2/mods-available/php5.load /etc/apache2/mods-enabled/php5.conf

Et on finit par redémarrer Apache:

sudo /etc/init.d/apache2 restart

Conclusion

Vous devriez maintenant avoir un serveur Apache2 gérant le PHP et les bases de données MySQL.

Pour aller plus loin dans la configuration de votre serveur, visitez la page suivante : Serveur LAMP - Aller plus loin.

ScreenCast

Installer LAMP ~ 3 minutes
- 01-LAMP_details.ogg - 3.4 Mo
- 01-LAMP_details.avi - 9 Mo

Sécuriser Apache ~ 3 minutes
- 02-Securiser_apache2_details.ogg - 5.3 Mo
- 02-Securiser_apache2_details.avi - 5 Mo

Préserver ses données MySql ~ 2 minutes
- 03-Preserver_ses_donnees_details.ogg - 3.4 Mo
- 03-Preserver_ses_donnees_details.avi - 3.5 Mo
- (add-on Hardy - Apparmor en cours )

Répertoires de travail ~ 14 minutes
- 04-Environnement_de_travail.ogg - 21 Mo
- 04-Environnement_de_travail.avi - 39 Mo

Installer SuPhp
- À venir -

Installer ZendOptimizer ~ 5 minutes
- 06_Installer_ZendOptimizer_details.ogg - 10 Mo
- 06_Installer_ZendOptimizer_details.avi - 12 Mo

Contacter : McPeter pour un problème sur les vidéos

Sécuriser son serveur


Contributeurs : M. DECLERCQ, _Enchained, rubika, McPeter, zedtux.


lamp.txt · Dernière modification: 27/09/2008, à 19:53 par 209.41.153.222, 127.0.0.1
Le contenu de ce wiki est sous double licence : CC BY-SA et GNU FDL