Apache - Installation sur Linux Ubuntu 24 LTS
Comment installer un serveur web Apache sur un système d'exploitation Linux Ubuntu v12
L'installation est bien décrite sur ce lien https://doc.ubuntu-fr.org/php
Sinon, rapidement, pour passer root, tapez cette commande et entrez votre mot de passe
sudo -i
Lien vers le fichier : cliquez ici
Installer apache, php, mysql-server avec
sudo apt install apache2 php php-fpm mysql-server php-mysql -y
Lien vers le fichier : cliquez ici
- apache2 : c'est Apache HTTP Server, le serveur web qui écoute sur le port 80/443 et qui reçoit les requêtes HTTP
- php : C’est le langage, il exécute le code dans <?php ... ?> mais il a besoin d’un moteur d’exécution
- php-fpm : c’est le moteur qui exécute PHP, qui tourne comme un service (php-fpm) et qui exécute les scripts PHP
Avant php était directement dans Apache, maintenant on sépare, d'où le service php-fpm à part.
Pour
- mysql-server : c’est le serveur de base de données
- php-mysql : c’est le connecteur entre PHP et MySQL qui permet à PHP de parler à MySQL. Il fournit les extensions mysqli et PDO_mysql
Pour connecter Apache à PHP-FPM faire
sudo a2enmod proxy_fcgi setenvif
sudo a2enconf php*-fpm
sudo systemctl restart apache2
Lien vers le fichier : cliquez ici
- a2enmod est un outil spécifique à Apache HTTP Server sous Debian/Ubuntu. Cela veut dire Apache2 Enable Module, il sert à activer un module Apache.
sudo a2enmod proxy_fcgi crée un lien symbolique /etc/apache2/mods-enabled/ → /etc/apache2/mods-available/
- a2enconf signifies Apache2 Enable Configuration. Il sert à activer un fichier de configuration Apache (et pas un module).
sudo a2enconf php8.3-fpm crée un lien symbolique /etc/apache2/conf-enabled/ → /etc/apache2/conf-available/
php8.3-fpm.conf est une règle apache qui sert à dire : tous les fichiers .php, envoie-les à PHP-FPM
On va contrôler que le processus d'apache s'est bien lancé.
Pour cela on utilise ici la commande netstat et on filtre les résultats avec la commande grep
netstat -tlnpu | grep -i "apache"
Lien vers le fichier : cliquez ici
On voit ici que le processus apache2 existe et qu'il écoute sur le port 80
Les fichiers de configuration se trouvent dans /etc/apache2
root@myubuntu:~# ls -l /etc/apache2
total 96
drwxr-xr-x 8 root root 4096 Mar 21 22:48 .
drwxr-xr-x 148 root root 12288 Mar 21 22:52 ..
-rw-r--r-- 1 root root 7178 Mar 5 18:31 apache2.conf
drwxr-xr-x 2 root root 4096 Mar 21 22:48 conf-available
drwxr-xr-x 2 root root 4096 Mar 21 22:48 conf-enabled
-rw-r--r-- 1 root root 1782 Mar 18 2024 envvars
-rw-r--r-- 1 root root 31063 Mar 18 2024 magic
drwxr-xr-x 2 root root 12288 Mar 21 22:48 mods-available
drwxr-xr-x 2 root root 4096 Mar 21 22:48 mods-enabled
-rw-r--r-- 1 root root 274 Mar 18 2024 ports.conf
drwxr-xr-x 2 root root 4096 Mar 21 22:48 sites-available
drwxr-xr-x 2 root root 4096 Mar 21 22:48 sites-enabled
Dans /etc/apache2/apache2.conf il y a des explications intéressantes ainsi que toute un tas de configurations. On voit par exemple que cela fait appel à /etc/apache2/envvars qui défini les environment variables pour apache2ctl dont APACHE_RUN_USER=www-data et APACHE_RUN_GROUP=www-data, cad qu'apache utilise le user et groupe www-data.
Dans sites-enabled on voit qu'on a la configuration du site par défaut, cad le fichier /etc/apache2/sites-enabled/000-default.conf
Il écoute sur le port 80 et l'emplacement des fichiers du site sont sous /var/www/html.
Il ne faut pas le modifier directement car il peut être écrasé ou modifié lors mises à jour.
La bonne façon de faire est de créer un répertoire pour notre site dans /var/www/ avec
sudo mkdir -p /var/www/nomdusite
Lien vers le fichier : cliquez ici
Paramétrez les droits en adaptant la commande ci-dessous, l'idée étant d'éviter d'avoir root:root
youruseraccount est à remplacer par le login de votre user
www-data lui ne bouge pas, c'est le nom du groupe utilisé par apache
sudo chown -R youruseraccount:www-data /var/www/nomdusite
sudo chmod -R 755 /var/www/nomdusite
Lien vers le fichier : cliquez ici
Créer un vhost pour votre site dans /etc/apache2/sites-available/ en adaptant
sudo nano /etc/apache2/sites-available/nomdusite.conf
Lien vers le fichier : cliquez ici
Pour le contenu on peut s'inspirer de ce qu'il y a dans
etc/apache2/sites-available/000-default.conf
ou
/etc/apache2/sites-available/default-ssl.conf
Voici un exemple à adapter pour un site en http
<VirtualHost *:80>
ServerName nomdusite.com
DocumentRoot /var/www/nomdusite
<Directory /var/www/nomdusite>
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/nomdusite_error.log
CustomLog ${APACHE_LOG_DIR}/nomdusite_access.log combined
</VirtualHost>
Lien vers le fichier : cliquez ici
Pour faire une page de test par défaut adapter cette commande
sudo nano /var/www/nomdusite/index.html
Lien vers le fichier : cliquez ici
En contenu soit vous mettez juste 'test' soit vous allez un poil plus loin et vous mettez
<!DOCTYPE html>
<html>
<head>
<title>Test Apache</title>
</head>
<body>
<h1>Mon serveur Apache fonctionne !</h1>
<p>Test OK</p>
</body>
</html>
Lien vers le fichier : cliquez ici
Pour pouvoir tester le site, sous linux déclarer l'url dans hosts avec
sudo nano /etc/hosts
Lien vers le fichier : cliquez ici
Les messages d'erreur du serveur d'Apache se voient donc ici avec la commande
tail -100 /var/log/apache2/error.log
Lien vers le fichier : cliquez ici
En bonus, si le code de votre site est sur github, pour le coller dans le répertoire créé pour l'occasion dans apache, adapter
cd /var/www/nomdusite
git init
git remote add origin https://github.com/youruser/monsite.git
git pull origin main
Lien vers le fichier : cliquez ici
Attention cependant, si vous avez fait le git pull en étant root, le owner des fichiers sera root, il faut donc réappliquer les droits en adaptant
sudo chown -R youruseraccount:www-data /var/www/nomdusite
Lien vers le fichier : cliquez ici
Au début on a installé le serveur de base de données mysql-server ainsi que le connecteur php-mysql avec
sudo apt install mysql-server php-mysql -y
Lien vers le fichier : cliquez ici
Le fichier de configuration de mysql est
/etc/mysql/my.cnf
On va vérifier que mysql est bien installé. Pour cela on va s'y connecter avec la commande
mysql -u root -p
Lien vers le fichier : cliquez ici
Pour afficher les comptes disponibles, taper
select host, user from mysql.user;
Lien vers le fichier : cliquez ici
Pour pouvoir transférer des fichiers sur votre serveur avec sftp, vous pouvez installer un service serveur ssh avec cette commande
sudo apt-get install openssh-server
Lien vers le fichier : cliquez ici
Les comptes qui existent sur votre serveur linux et que vous pouvez utiliser pour vous connecter sont visibles avec la commande
grep bash /etc/passwd | cut -f1 -d:
Lien vers le fichier : cliquez ici
Dans l'exemple ci-dessous on voit 2 comptes, cad root et myuser :
Pages Web
| Site Web | Description |
|---|---|
| ubuntu-fr.org | Guide d'installation officiel d'Apache sur Ubuntu |
Téléchargement(s)
| Nom | Site Web d origine | Description |
|---|---|---|
| Linux Ubuntu | http://ubuntu-fr.org | Distribution Ubuntu de Linux |
Article(s) suivant(s)
Article(s) précédent(s)