Installation et configuration Apache sous Linux Debian

Dans Synaptic rechercher Apache.
Sélectionner Apache2 pour installation, et libapache2-mod-php. Synaptic installera tout le reste.
Cliquer sur appliquer
En console
$ sudo apt-get install apache2 libapache2-mod-php
16 paquets, 23Mo sont installés

Tester http://localhost ou http://127.0.0.1 dans un navigateur.
Si tout va bien c'est l'index /var/www/html/index.html qui est servi.
Or, les fichiers de ce dossier appartiennent à root, seul root peut les éditer.

APACHE avec userdir

Chaque user a son répertoire www dans home, qu'il peut organiser à sa guise.
Créer le dossier (public_html ici www)
$ mkdir /home/joe/www
Charger le module userdir
Presser CTRL-ALT-T pour ouvrir un terminal
$ sudo a2enmod userdir
To activate the new configuration, you need to run:
systemctl restart apache2
$ systemctl restart apache2

$ sudo gedit /etc/apache2/apache2.conf
à la fin du fichier ajouter
UserDir /home/*/www
Enregistrer et fermer Gedit
Voir les sites actifs
$ grep -R "DocumentRoot" /etc/apache2/sites-enabled
/etc/apache2/sites-enabled/000-default.conf: DocumentRoot /var/www/html
Copier le nom (ici 000-default.conf) pour l'éditer
$ sudo gedit /etc/apache2/sites-enabled/000-default.conf
Dans le <virtualhost> ajouter
<Directory /home/*/www>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Require all granted
</Directory>

$ systemctl restart apache2

Tester PHP

$ gedit /home/joe/www/index.php
<?php phpinfo();?>
Enregistrer, tester avec http://localhost/~joe/index.php ou http://localhost/~joe
Le tilde indique à Apache qu'il s'agit d'un répertoire utilisateur.
Phpinfo() donne l'emplacement sur le disque du fichier ini chargé, éditer ce fichier pour ajouter d'autres extensions comme GD.

Charger le module GD

phpinfo() indique le fichier ini chargé
$ sudo gedit /etc/init.d/apache2/php.ini
CTRL-F gd décommenter gd, enregistrer fermer
$ sudo apt-get install php7.4-gd
$ sudo /etc/init.d/apache2 restart

Droits des fichiers

Chaque dossier et chaque fichier ont des droits, qui les protègent en écriture.
Cependant ils doivent avoir des droits minimaux pour pouvoir être vus et servis par le serveur web.
dossiers
dossier contenant php et css : 504
dossier contenant des images: 505
dossier contenant un fichier disponible en écriture: 705
Si de nouveaux fichiers seront créées dans un dossier, le mettre en écriture (705). Sinon en lecture seule. On ne pourra pas créer de nouveau fichier, mais on pourra éditer un fichier existant si lui-même dispose des droits en écriture. Peut comporter des sous-dossiers qui eux sont en écriture et pourront créer de nouveaux fichiers.

Si un dossier est en 505 on ne peut ni créer ni supprimer de nouveau fichier. fichiers
image, page html, script PHP: 404
fichier en écriture: 604