« Apache/Installation Linux » : différence entre les versions

Aller à la navigation Aller à la recherche
m
JackPotte a déplacé la page LAMP vers Apache/Installation Linux
Aucun résumé des modifications
m (JackPotte a déplacé la page LAMP vers Apache/Installation Linux)
<noinclude>{{à fusionner|Apache}}</noinclude>
{{Développement web}}
===== Qu'est-ce qu'une « solution LAMP » ? =====
[[w:LAMP|LAMP]] est l’abréviation de « Linux + Apache + MySQL + PHP ».
 
En définitive, il s'agit d'installer un serveur HTTP (web), un serveur MySQL (base de donnée), le langage PHP, tout ça sous Linux.
=== LAMP ===
Logiciel tout-en-un pour Linux (Apache + MySQL + PHP), comme WAMP pour Windows.
 
====== Installer une solution LAMP sur Ubuntu ======
{{Cadre code|commande nécessitant les privilèges root|<code><!--
Pour l'installation d'une solution LAMP sous Ubuntu Dapper Drake, suivez plutôt ce tutoriel :
--># apt-get install tasksel<br
http://doc.ubuntu-fr.org//serveur/lamp_bis ou http://forum.ubuntu-fr.org/viewtopic.php?id=43410&p=1
/># tasksel install lamp-server
</code>}}
 
===== Installer le serveur MySQL =====
=== Installation manuelle ===
La dénomination des paquets mentionnés peut varier légèrement selon la version.
Dans un terminal, entrez :
$ sudo apt-get install mysql-server
et confirmez.
 
''(Remarque : il semblerait qu'en installant le paquet "mysql-server-5.0", au lieu du paquet mentionné plus haut, certaines personnes rencontrent des problèmes. Il est donc préférable d'installer ce paquet, ou d'installer la dernière version 4 stable avec : $ sudo apt-get install mysql-server-4.1. Consultez le forum pour plus d'informations : [http://forum.ubuntu-fr.org/viewtopic.php?id=15352])''
==== Apache sur Debian / Ubuntu ====
 
Lancez ensuite la commande :
{{Cadre code|commande nécessitant les privilèges root|<code># apt-get install apache2</code>}}
cd && sudo mysql_secure_installation
Appuyez sur Entrée lorsqu'il vous demande le mot de passe root MySQL : pour le moment il n'y en a pas.
 
Le service peut ne pas être lancé par défaut, mais même s'il l'est on peut quand-même essayer de l'activer avec :
 
''**NB :** MySQL a ses propres utilisateurs, avec leurs propres privilèges. Le root MySQL n'est donc pas le root système. Il est conseillé de ne pas mettre les mêmes mots de passes pour les utilisateurs MySQL et les utilisateur du système.''
{{Cadre code|commande nécessitant les privilèges root|<code># /etc/init.d/apache2 start</code>}}
 
Le script vous demande alors si vous voulez mettre un mot de passe pour l'utilisateur root. Répondez Y, et entrez (2 fois le nouveau mot de passe du root MySQL).
On peut ensuite tester le serveur, pour voir si une page s'affiche ou s'il refuse la connexion :
Il vous pose ensuite une série de questions. Si vous ne savez pas quoi répondre, acceptez les choix par défaut en appuyant simplement sur Enter.
 
Votre serveur MySQL est prêt. Par défaut il se lance à chaque démarrage du système, si vous ne le souhaitez pas, il vous suffit de lancer :
{{Cadre code|commande|<code>$ lynx http://localhost/</code>}}
$ sudo dpkg-reconfigure mysql-server
et de répondre "Non" à la question du démarrage systématique de MySQL.
 
===== Installer Apache + PHP + PhpMyAdmin =====
Cette adresse est le rebouclage, elle peut aussi être rentrée directement dans tout navigateur web.
''Remarque : Vérifiez que la case "Traiter les paquets recommandés comme des dépendances" soit cochée dans synaptic, configuration, préférences.''
 
Grâce aux dépendances des paquets, cette opération peut se faire en une seule fois :
Si Apache était déjà installé vérifier le fichier pour indiquer le démarrage automatique d'Apache 2 '''/etc/default/apache2''' :
$ sudo apt-get install phpmyadmin
Cela installera automatiquement apache2 + php + modules d'apache pour [[PHP]] et [[MySQL]] + [[PhpMyAdmin]].
 
Pour accéder à PhpMyAdmin, il faut se rendre à la page [http://localhost/PhpMyAdmin].
# vi /etc/default/apache2
...
NO_START=0
 
''Note : En cas de problème d'authentification (erreur 2002 notamment) installer le paquet mysql-server peut résoudre ce dernier.''
===== PHP =====
PHP peut-être installé avec toutes les déclinaisons de la distribution Debian (stable, testing, unstable).
Il suffit pour cela d'insérer vos lignes préférées dans le fichier ''/etc/apt/sources.list'' :
 
Après l'installation, il vaut mieux modifier les droits d'accès de root, et ajouter un mot de passe pour un peu plus de sécurité. Pour cela, il faut se rendre à la page ''privilèges'' de PhpMyAdmin.
<pre>
<nowiki>deb http://ftp.fr.debian.org/debian/ stable main non-free contrib</nowiki>
<nowiki>deb-src http://ftp.fr.debian.org/debian/ stable main non-free contrib</nowiki>
</pre>
 
Remarque pour hoary :
Ce qui suit suppose que le serveur Web a bien été installé : exécuter les commandes suivantes :
Afin que cette commande fonctionne il est nécessaire d'avoir effectué les modifications suivantes :
dans /etc/apt/ éditer le fichier sources.list
supprimer les # des lignes suivantes :
 
# deb http://fr.archive.ubuntu.com/ubuntu hoary universe
sudo apt-get update && apt-get install php7.0 && apt-get install libapache2-mod-php7.0
(cette ligne est dans certain cas '# deb http://archive.ubuntu.com/ubuntu/ hoary universe main restricted multiverse')
# deb-src http://fr.archive.ubuntu.com/ubuntu hoary universe
 
''Pour la version d'Ubuntu 5.10 (Breezy), vous pouvez effectuer ces changements avec le gestionnaire de paquets synaptic (apt) : Système ---> Administration ---> Gestionnaire de paquets Synaptic
Une fois ces commandes exécutées, redémarrer le serveur Web. Dans le cas d'Apache cela s'effectue avec la commande suivante :
Catégories ---> Dépôts ----> Ajouter et ensuite, sélectionner : maintenu par la communauté universe...''
 
Lancer le chargement des nouvelles sources :
/etc/init.d/apache restart
 
$ sudo apt-get update
Si tout s'est bien passé, vous disposez maintenant d'un serveur Web qui a la capacité d'exécuter des scripts PHP dans votre navigateur.
 
Puis lancer l'installation de PhpMyAdmin comme décrit ci-dessus.
Testons :
 
===== Créer des utilisateurs MySQL =====
{{Cadre code|commande|<code>$ lynx http://localhost/test.php</code>}}
{{article détaillé|PhpMyAdmin}}
 
===== Problème d'encodage d'apache2 =====
Pour débugger :
{{Cadre code|commande|<code>$ tail /var/log/apache2/error.log</code>}}
 
Si vous rencontrez un problème d'encodage des caractères de vos pages, par exemple les caractères accentués apparaissant sous la forme "�" (<?>), c'est probablement parce qu'Apache2 déclare dans les en-têtes HTTP qui accompagnent les pages visionnées un encodage par défaut en Unicode (UTF-8) :
==== Apache sur Gentoo ====
Content-Type: text/html; charset=UTF-8
Tandis que les pages visionnées utilisent un autre encodage des caractères, comme par exemple Latin1 (ISO-8859-1). Même si vos documents indiquent le jeu de caractères utilisé, le paramètre donné par le serveur dans les en-têtes HTTP est prioritaire !
 
Pour corriger ce problème, il faudra éditer /etc/apache2/apache2.conf :
Premièrement il faut installer Apache si ce n'est pas déjà fait :
$ sudo gedit /etc/apache2/apache2.conf
emerge apache
Ensuite, il faut installer PHP :
emerge dev-lang/php
Puis il faut qu'apache utilise PHP dans sa configuration.
{{Box Code|Configuration de apache
|<pre><nowiki># nano -w /etc/conf.d/apache2
APACHE2_OPTS="-D PHP5"</nowiki></pre>
}}
 
==== MySQLEncodage seulpar défaut en Latin1 (ISO-8859-1) ====
[[MySQL]] est disponible sur http://dev.mysql.com/downloads/gui-tools/5.0.html au format :
# .msi (Windows)
# .dmg (Mac)
# .rpm (Linux)
# .tar
 
Cherchez la ligne suivante :
En l'absence de {{w|gestionnaire de paquets}}, utiliser le .tar ainsi :
#AddDefaultCharset ISO-8859-1
<source lang=bash>
Décommentez-la en enlevant le # :
shell> groupadd mysql
AddDefaultCharset ISO-8859-1
shell> useradd -r -g mysql mysql
shell> cd /usr/local
shell> tar zxvf /path/to/mysql-VERSION-OS.tar.gz
shell> ln -s full-path-to-mysql-VERSION-OS mysql
shell> cd mysql
shell> chown -R mysql .
shell> chgrp -R mysql .
shell> scripts/mysql_install_db --user=mysql
shell> chown -R root .
shell> chown -R mysql data
shell> bin/mysqld_safe --user=mysql &
</source>
 
Pour ceux qui ont la locale iso-8859-15 (sinon vous pouvez faire "sudo dpkg-reconfigure locales" pour l'ajouter) et qui désirent l'utiliser par défaut, ajoutez un 5 en fin de ligne :
==== APT ====
AddDefaultCharset ISO-8859-15
<source lang=bash>
ainsi que la ligne suivante dans le paragraphe en-dessous :
# apt-get install mysql-server mysql_secure_installation
AddCharset ISO-8859-15 .iso8859-15 .latin15 .fr
</source>
 
Il ne vous reste plus qu'à mettre "fr" en première position dans la ligne LanguagePriority (juste au-dessus), et à demander à apache de relire sa configuration :
Puis, modifier PHP pour qu'il supporte MySQL :
$ sudo /etc/init.d/apache2 reload
 
==== Aucun encodage par défaut ====
<source lang=bash>
# apt-get install php4-mysql
</source>
 
Il est également possible de s'affranchir de tout encodage par défaut, de la manière suivante :
==== Sur Gentoo ====
<source lang=bash>
emerge mysql
</source>
 
Cherchez la directive ''AddDefaultCharset'' :
=== Installer PhpMyAdmin ===
AddDefaultCharset ISO-8859-1
Depuis un tout-en-un :
Remplacez l'attribut par la valeur ''Off'' :
<source lang=bash>
AddDefaultCharset Off
sudo ln -s /usr/share/phpmyadmin /var/www/phpmyadmin
</source>
 
Là encore, on demandera à Apache de relire sa configuration :
Sinon :
$ sudo /etc/init.d/apache2 reload
<source lang=bash>
sudo apt-get install phpmyadmin php5
</source>
 
Maintenant, les en-têtes HTTP ne contiendront plus d'indication d'encodage des caractères. Attention : il faudra alors que chaque page indique l'encodage utilisé, car s'en remettre à la détection automatique par les navigateurs peut s'avérer assez aléatoire !
=== Extensions ===
Pour activer des modules complémentaires :
<source lang=bash>
a2enmod Nom_du_module # passe dans /etc/apache2/mods-enabled/
</source>
Pour les désactiver :
<source lang=bash>
a2dismod Nom_du_module # passe dans /etc/apache2/mods-available/
</source>
Pour activer des sites :
<source lang=bash>
a2ensite Nom_du_site # passe dans /etc/apache2/sites-enabled/
</source>
Pour les désactiver :
<source lang=bash>
a2dissite Nom_du_site # passe dans /etc/apache2/sites-available/
</source>
 
 
<noinclude>
 
[[Catégorie:Modèles imprimables spécifiques à plusieurs livres]]
===== Créer son site =====
</noinclude>
 
Placez vos fichiers php et html dans /var/www pour qu'ils deviennent le site de votre machine (celui disponible à l'adresse http://nom_ou_ip_de_votre_machine/)
 
===== Créer sa page utilisateur =====
 
Placez vos fichiers php et html dans un sous-répertoire "public_html" de votre répertoire utilisateur pour qu'ils deviennent votre site utilisateur (celui disponible à l'adresse http://nom_ou_ip_de_votre_machine/~votre_login/)
 
==== Permettre l'utilisation de fichiers dans le "~/public_html" ====
 
 
Il faut activer le module userdir :
 
sudo a2enmod userdir
sudo /etc/init.d/apache2 reload
 
===== Sécuriser Apache avec SSL =====
{{article détaillé|Apache/HTTPS}}
 
Une des façons de sécuriser la transmission des données est d'utiliser des protocoles d'authentification et de chiffrement tels que SSL.
 
On active le mod SSL (il s'agit d'un utilitaire Debian qui crée des liens symboliques entre mods-available/mods-enabled et sites-available/sites-enabled) :
sudo a2enmod ssl
 
On génère un certificat par la réponse à quelques question (Ceci génèrera 2 fichiers dans ****/etc/apache2/ssl**** : apache.pem et un fichier au nom aléatoire.) :
 
sudo apache2-ssl-certificate
 
On configure ssl :
 
sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/ssl
sudo ln -s /etc/apache2/sites-available/ssl /etc/apache2/sites-enabled/ssl
 
Éditez le fichier de configuration ****/etc/apache2/sites-enabled/ssl**** pour qu'il accepte les connections sur le port 443 :
 
NameVirtualHost *:443
<VirtualHost *:443>
(...les répertoires et autres configurations si désiré)
 
Éditez le fichier de configuration ****/etc/apache2/sites-available/default**** pour qu'il accepte les connections sur le port 80 :
 
NameVirtualHost *:80
<VirtualHost *:80>
(...les répertoires et autres configurations si désiré)
 
Dans le fichier ****/etc/apache2/ports.conf****, ajoutez :
Listen 443
 
et dans le milieu du fichier ****/etc/apache2/sites-available/ssl**** ajoutez :
 
SSLEngine On
SSLCertificateFile /etc/apache2/ssl/apache.pem
 
Puis redémarrez apache :
sudo /etc/init.d/apache2 restart
 
===== Utiliser l'url rewriting =====
 
Il faut activer le module rewrite :
 
sudo a2enmod rewrite
 
Puis relancer apache :
sudo /etc/init.d/apache2 reload
 
Attention, si vous n'avez pas créé de VirtualHost, un VirtualHost par défaut est utilisé par apache2 qui ignore les fichiers .htaccess
 
Pour y remédier :
 
sudo vi /etc/apache2/sites-enabled/000-default
 
et remplacez AllowOverride none par AllowOverride All (normalement 2 fois), puis relancez apache :
sudo /etc/init.d/apache2 reload

Menu de navigation