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 Copier le code

Installer apache, php, mysql-server avec

sudo apt install apache2 php php-fpm mysql-server php-mysql -y
Lien vers le fichier : cliquez ici Copier le code
  • 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 Copier le code
Publicité
  • 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 Copier le code

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 Copier le code

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 Copier le code

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 Copier le code

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 Copier le code

Activer le site avec

sudo a2ensite nomdusite.conf
Lien vers le fichier : cliquez ici Copier le code

Désactiver celui par défaut avec

sudo a2dissite 000-default.conf
Lien vers le fichier : cliquez ici Copier le code

Prendre en compte la modif avec

sudo systemctl reload apache2
Lien vers le fichier : cliquez ici Copier le code

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 Copier le code

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 Copier le code

Pour pouvoir tester le site, sous linux déclarer l'url dans hosts avec

sudo nano /etc/hosts
Lien vers le fichier : cliquez ici Copier le code

Ajouter et adapter une ligne comme

127.0.0.1   nomdusite.com
Lien vers le fichier : cliquez ici Copier le code

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 Copier le code

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 Copier le code

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 Copier le code

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 Copier le code

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 Copier le code

Pour afficher les comptes disponibles, taper

select host, user from mysql.user;
Lien vers le fichier : cliquez ici Copier le code

Sécuriser mysql en tapant

sudo mysql_secure_installation
Lien vers le fichier : cliquez ici Copier le code

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 Copier le code

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 Copier le code

Dans l'exemple ci-dessous on voit 2 comptes, cad root et myuser :


Document de support à la vidéo

Publicité

Pages Web

Site WebDescription
ubuntu-fr.orgGuide d'installation officiel d'Apache sur Ubuntu

Téléchargement(s)

NomSite Web d origineDescription
Linux Ubuntu http://ubuntu-fr.org Distribution Ubuntu de Linux