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

Un livre de Wikilivres.
Contenu supprimé Contenu ajouté
DannyS712 (discussion | contributions)
m <source> -> <syntaxhighlight> (phab:T237267)
Ligne 33 : Ligne 33 :
===== PHP =====
===== PHP =====
On distingue principalement deux versions de PHP : celle dont le binaire est appelé par le serveur Web, et php-fpm qui possède son propre service daemon (aussi appelé par le serveur Web) testable ainsi :
On distingue principalement deux versions de PHP : celle dont le binaire est appelé par le serveur Web, et php-fpm qui possède son propre service daemon (aussi appelé par le serveur Web) testable ainsi :
<source lang=bash>
<syntaxhighlight lang=bash>
telnet localhost 9000
telnet localhost 9000
CTRL + ALT + ]
CTRL + ALT + ]
quit
quit
</syntaxhighlight>
</source>


PHP peut-être installé avec toutes les déclinaisons de la distribution Debian (stable, testing, unstable).
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'' :
Il suffit pour cela d'insérer vos lignes préférées dans le fichier ''/etc/apt/sources.list'' :


<source lang=bash>
<syntaxhighlight lang=bash>
deb http://ftp.fr.debian.org/debian/ stable main non-free contrib
deb http://ftp.fr.debian.org/debian/ stable main non-free contrib
deb-src http://ftp.fr.debian.org/debian/ stable main non-free contrib
deb-src http://ftp.fr.debian.org/debian/ stable main non-free contrib
</syntaxhighlight>
</source>


Ce qui suit suppose que le serveur Web a bien été installé : exécuter les commandes suivantes :
Ce qui suit suppose que le serveur Web a bien été installé : exécuter les commandes suivantes :
<source lang=bash>
<syntaxhighlight lang=bash>
sudo apt-get update && apt-get install php7.0 && apt-get install libapache2-mod-php7.0
sudo apt-get update && apt-get install php7.0 && apt-get install libapache2-mod-php7.0
</syntaxhighlight>
</source>


Une fois ces commandes exécutées, redémarrer le serveur Web. Dans le cas d'Apache cela s'effectue avec la commande suivante :
Une fois ces commandes exécutées, redémarrer le serveur Web. Dans le cas d'Apache cela s'effectue avec la commande suivante :
<source lang=bash>
<syntaxhighlight lang=bash>
/etc/init.d/apache2 restart
/etc/init.d/apache2 restart
</syntaxhighlight>
</source>


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.
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.
Ligne 68 : Ligne 68 :
====== Mise à jour ======
====== Mise à jour ======
Pour la v7.2 sur Ubuntu :
Pour la v7.2 sur Ubuntu :
<source lang=php>
<syntaxhighlight lang=php>
sudo add-apt-repository ppa:ondrej/php
sudo add-apt-repository ppa:ondrej/php
</syntaxhighlight>
</source>


Sur Debian :
Sur Debian :
<source lang=php>
<syntaxhighlight lang=php>
sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
sudo sh -c 'echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
sudo sh -c 'echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
</syntaxhighlight>
</source>


Puis :
Puis :
<source lang=php>
<syntaxhighlight lang=php>
sudo apt update
sudo apt update
sudo apt install php7.2 php7.2-common php7.2-cli php7.2-fpm
sudo apt install php7.2 php7.2-common php7.2-cli php7.2-fpm
sudo a2enmod php7.2
sudo a2enmod php7.2
sudo a2dismod php7.0
sudo a2dismod php7.0
</syntaxhighlight>
</source>


{{attention|Une fois les serveurs Web installés, ils se lancent automatiquement à chaque démarrage de la machine, ce qui est souhaitable pour un serveur, mais pas toujours pour un PC. Pour éviter cela, il suffit d'y désactiver les daemons :
{{attention|Une fois les serveurs Web installés, ils se lancent automatiquement à chaque démarrage de la machine, ce qui est souhaitable pour un serveur, mais pas toujours pour un PC. Pour éviter cela, il suffit d'y désactiver les daemons :
<source lang=bash>
<syntaxhighlight lang=bash>
sudo update-rc.d apache2 disable
sudo update-rc.d apache2 disable
sudo update-rc.d mysql disable
sudo update-rc.d mysql disable
</syntaxhighlight>
</source>
}}
}}


Ligne 113 : Ligne 113 :


En l'absence de {{w|gestionnaire de paquets}}, utiliser le .tar ainsi :
En l'absence de {{w|gestionnaire de paquets}}, utiliser le .tar ainsi :
<source lang=bash>
<syntaxhighlight lang=bash>
shell> groupadd mysql
shell> groupadd mysql
shell> useradd -r -g mysql mysql
shell> useradd -r -g mysql mysql
Ligne 126 : Ligne 126 :
shell> chown -R mysql data
shell> chown -R mysql data
shell> bin/mysqld_safe --user=mysql &
shell> bin/mysqld_safe --user=mysql &
</syntaxhighlight>
</source>


==== APT ====
==== APT ====
<source lang=bash>
<syntaxhighlight lang=bash>
$ sudo apt-get install mysql-server mysql_secure_installation
$ sudo apt-get install mysql-server mysql_secure_installation
</syntaxhighlight>
</source>


Puis, modifier PHP pour qu'il supporte MySQL :
Puis, modifier PHP pour qu'il supporte MySQL :


<source lang=bash>
<syntaxhighlight lang=bash>
$ sudo apt-get install php4-mysql
$ sudo apt-get install php4-mysql
</syntaxhighlight>
</source>


===== Variante =====
===== Variante =====
Ligne 162 : Ligne 162 :


==== Sur Gentoo ====
==== Sur Gentoo ====
<source lang=bash>
<syntaxhighlight lang=bash>
emerge mysql
emerge mysql
</syntaxhighlight>
</source>


=== Modules ===
=== Modules ===
Ligne 170 : Ligne 170 :


Pour les lister, on utilise <code>apachectl</code> (parfois <code>apache2ctl</code>) :
Pour les lister, on utilise <code>apachectl</code> (parfois <code>apache2ctl</code>) :
<source lang=bash>
<syntaxhighlight lang=bash>
apachectl -t -D DUMP_MODULES
apachectl -t -D DUMP_MODULES
</syntaxhighlight>
</source>


Pour activer un module :
Pour activer un module :
<source lang=bash>
<syntaxhighlight lang=bash>
a2enmod Nom_du_module
a2enmod Nom_du_module
</syntaxhighlight>
</source>
Un fichier est alors créé dans /etc/apache2/mods-enabled/.
Un fichier est alors créé dans /etc/apache2/mods-enabled/.


Exemple pour la réécriture d'URL :
Exemple pour la réécriture d'URL :
<source lang=bash>
<syntaxhighlight lang=bash>
a2enmod rewrite
a2enmod rewrite
</syntaxhighlight>
</source>


Pour le désactiver :
Pour le désactiver :
<source lang=bash>
<syntaxhighlight lang=bash>
a2dismod Nom_du_module
a2dismod Nom_du_module
</syntaxhighlight>
</source>
La configuration du module reste toutefois disponible dans /etc/apache2/mods-available/.
La configuration du module reste toutefois disponible dans /etc/apache2/mods-available/.


{{remarque|Les extensions PHP nécessitent une autre commande. Ex :
{{remarque|Les extensions PHP nécessitent une autre commande. Ex :
<source lang=bash>
<syntaxhighlight lang=bash>
phpenmod mbstring
phpenmod mbstring
</syntaxhighlight>
</source>
}}
}}


=== Sites ===
=== Sites ===
Pour lister les sites du serveur :
Pour lister les sites du serveur :
<source lang=bash>
<syntaxhighlight lang=bash>
apachectl -S
apachectl -S
</syntaxhighlight>
</source>


Pour activer un site :
Pour activer un site :
<source lang=bash>
<syntaxhighlight lang=bash>
a2ensite Nom_du_site
a2ensite Nom_du_site
</syntaxhighlight>
</source>
Le fichier du site est alors visible dans /etc/apache2/sites-enabled/.
Le fichier du site est alors visible dans /etc/apache2/sites-enabled/.


Pour le désactiver :
Pour le désactiver :
<source lang=bash>
<syntaxhighlight lang=bash>
a2dissite Nom_du_site
a2dissite Nom_du_site
</syntaxhighlight>
</source>
Le site est dans /etc/apache2/sites-available/.
Le site est dans /etc/apache2/sites-available/.



Version du 16 avril 2020 à 09:59

LAMP

Logiciel tout-en-un pour Linux (Apache + MySQL + PHP), comme WAMP pour Windows.

commande nécessitant les privilèges root
# apt-get install tasksel
# tasksel install lamp-server

Installation manuelle

Apache sur Debian / Ubuntu

commande nécessitant les privilèges root
# apt-get install apache2

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 :

commande nécessitant les privilèges root
# /etc/init.d/apache2 start

On peut ensuite tester le serveur, pour voir si une page s'affiche ou s'il refuse la connexion :

commande

Cette adresse est le rebouclage, elle peut aussi être rentrée directement dans tout navigateur web.

Si Apache était déjà installé vérifier le fichier pour indiquer le démarrage automatique d'Apache 2 /etc/default/apache2 :

 # vi /etc/default/apache2
 ...
 NO_START=0
PHP

On distingue principalement deux versions de PHP : celle dont le binaire est appelé par le serveur Web, et php-fpm qui possède son propre service daemon (aussi appelé par le serveur Web) testable ainsi :

 telnet localhost 9000
 CTRL + ALT + ]
 quit

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 :

 deb http://ftp.fr.debian.org/debian/ stable main non-free contrib
 deb-src http://ftp.fr.debian.org/debian/ stable main non-free contrib

Ce qui suit suppose que le serveur Web a bien été installé : exécuter les commandes suivantes :

 sudo apt-get update && apt-get install php7.0 && apt-get install libapache2-mod-php7.0

Une fois ces commandes exécutées, redémarrer le serveur Web. Dans le cas d'Apache cela s'effectue avec la commande suivante :

 /etc/init.d/apache2 restart

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.

Testons :

commande

Pour débugger :

commande
$ tail /var/log/apache2/error.log
Mise à jour

Pour la v7.2 sur Ubuntu :

sudo add-apt-repository ppa:ondrej/php

Sur Debian :

sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
sudo sh -c 'echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'

Puis :

sudo apt update
sudo apt install php7.2 php7.2-common php7.2-cli php7.2-fpm
sudo a2enmod php7.2
sudo a2dismod php7.0

Logo

Une fois les serveurs Web installés, ils se lancent automatiquement à chaque démarrage de la machine, ce qui est souhaitable pour un serveur, mais pas toujours pour un PC. Pour éviter cela, il suffit d'y désactiver les daemons :

sudo update-rc.d apache2 disable
sudo update-rc.d mysql disable

Apache sur Gentoo

Premièrement il faut installer Apache :

emerge apache

Ensuite, il faut installer PHP :

emerge dev-lang/php

Puis il faut qu'apache utilise PHP dans sa configuration.

Code : Configuration de apache
# nano -w /etc/conf.d/apache2
APACHE2_OPTS="-D PHP5"

MySQL seul

MySQL est disponible sur http://dev.mysql.com/downloads/gui-tools/5.0.html au format :

  1. .msi (Windows)
  2. .dmg (Mac)
  3. .rpm (Linux)
  4. .tar

En l'absence de gestionnaire de paquets, utiliser le .tar ainsi :

shell> groupadd mysql
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 &

APT

$ sudo apt-get install mysql-server mysql_secure_installation

Puis, modifier PHP pour qu'il supporte MySQL :

$ sudo apt-get install php4-mysql
Variante

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 : [1])

Lancez ensuite la commande :

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.


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

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). 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 :

$ sudo dpkg-reconfigure mysql-server

et de répondre "Non" à la question du démarrage systématique de MySQL.

Sur Gentoo

 emerge mysql

Modules

De nombreux modules complémentaires peuvent être installés sur Apache.

Pour les lister, on utilise apachectl (parfois apache2ctl) :

apachectl -t -D DUMP_MODULES

Pour activer un module :

a2enmod Nom_du_module

Un fichier est alors créé dans /etc/apache2/mods-enabled/.

Exemple pour la réécriture d'URL :

a2enmod rewrite

Pour le désactiver :

a2dismod Nom_du_module

La configuration du module reste toutefois disponible dans /etc/apache2/mods-available/.

 Les extensions PHP nécessitent une autre commande. Ex :
phpenmod mbstring

Sites

Pour lister les sites du serveur :

apachectl -S

Pour activer un site :

a2ensite Nom_du_site

Le fichier du site est alors visible dans /etc/apache2/sites-enabled/.

Pour le désactiver :

a2dissite Nom_du_site

Le site est dans /etc/apache2/sites-available/.

Problème d'encodage d'Apache2

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

 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 :

 $ sudo gedit /etc/apache2/apache2.conf

Encodage par défaut en Latin1 (ISO-8859-1)

Cherchez la ligne suivante :

 #AddDefaultCharset	ISO-8859-1

Décommentez-la en enlevant le # :

 AddDefaultCharset	ISO-8859-1

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 :

 AddDefaultCharset	ISO-8859-15

ainsi que la ligne suivante dans le paragraphe en-dessous :

 AddCharset ISO-8859-15 .iso8859-15  .latin15 .fr

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 :

 $ sudo /etc/init.d/apache2 reload

Aucun encodage par défaut

Il est également possible de s'affranchir de tout encodage par défaut, de la manière suivante :

Cherchez la directive AddDefaultCharset :

 AddDefaultCharset	ISO-8859-1

Remplacez l'attribut par la valeur Off :

 AddDefaultCharset	Off

Là encore, on demandera à Apache de relire sa configuration :

 $ sudo /etc/init.d/apache2 reload

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 !