[[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.
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
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 ...
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 :
- http://127.0.0.1/ ou http://localhost/ si vous êtes sur la machine locale ;
- http://xxx.xxx.xxx.xxx/ où « xxx.xxx.xxx.xxx » est l'adresse IP de la machine (ou encore en utilisant un nom de domaine de la machine) si vous êtes sur une machine distante.
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 ».
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.
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.
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.
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
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.
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).
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.
sudo ln -s /usr/share/phpmyadmin/ /var/www/phpmyadmin
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'
- Si nécessaire, mettre en place les hotes virtuels pour travailler sur plusieurs sites http://doc.ubuntu-fr.org/tutoriel/virtualhosts_avec_apache2
- 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 ».
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".
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.
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 en vidéos (à diffuser sans restrictions
)
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.
