mise en ligne: 06/2024
Un serveur LAMP (dans ce tuto: Linux, Apache, MariaDB, PHP) va vous permettre d'accueillir vos sites ou vos applications web.
Apache est l'un des serveurs HTTP les plus répandus, suivi de près par NGINX. On le compile avec la variable USE 'ssl', on s'occupera des certificats plus tard.
# echo www-server/apache ssl > /etc/portage/package.use/apache
# emerge -a apache
On démarre le service
# # rc-service apache2 start
Dans Firefox, on indique l'adresse IP de notre serveur
Par défaut, Firefox vous protège des connections non sécurisées. Il faut taper 'about:config' dans la barre d'adresse et désactiver l'option 'browser.fixup.alternate.enabled'
http://ip_serveur It works! |
Ça fonctionne! On peut ajouter apache au démarage
# rc-update add apache2 default
Fork de MySQL, MariaDB est un système de gestion de base de données nécessaire pour tout un tas d'applications web
Le nom de votre machine dans /etc/hostname ne doit pas être 'localhost'. Si c'est le cas, éditez le fichier
# emerge -a mariadb
On lance la configuration initiale et on choisi le mot de passe root pour MariaDB (different du root de votre système)
# emerge --config mariadb
# rc-service mysql start
# rc-update add mysql default
PHP: Hypertext Preprocessor est un langage de programmation qui perment, entre autres, de créer des page web dynamiques
On va utiliser les variables USE 'apache2', 'mysql' et 'mysqli' pour compiler et préciser la cible PHP dans /etc/portage/make.conf
# echo dev-lang/php apache2 mysql mysqli > /etc/portage/package.use/php
# echo PHP_TARGETS="8-2" >> /etc/portage/make.conf
N'oubliez les 2 chevrons '>>' sous peine d'effacer votre make.conf ;)
La mise à jour du système avec l'option --changed-use devrait installer PHP, si ce n'est pas le cas, on l'installe à la main
# emerge -uaDU world
# emerge -a dev-lang/php
Sous Gentoo il est possible de faire tourner plusieurs versions de PHP côte à côte, on choisit celle que l'on veut avec la commande 'eselect'
# emerge -a eselect-php
# eselect php list apache2
Il faut éditer la ligne 'APACHE2_OPTS' dans le fichier de configuration d'Apache et ajouter l'option '-D PHP'
# emacs /etc/conf.d/apache2
APACHE2_OPTS="-D DEFAULT_VHOST -D INFO -D SSL -D SSL_DEFAULT_VHOST -D LANGUAGE -D PHP" |
Pour tester, on va éditer le fichier index.html et l'ouvrir avec Firefox
# cd /var/www/localhost/htdocs
# emacs index.html
<html> <body> <?php phpinfo(); ?> </body> </html> |
# mv index.html index.php
# rc-service apache2 restart
Apache utilise des hôtes virtuels pour permettre d'avoir plusieurs domaines sur un même serveur. Je n'ai qu'un nom de domaine, je vais éditer les fichier default_vhost et default_ssl_vhost (à adapter à votre configuration).
# emacs /etc/apache2/vhosts.d/00_default_vhost.conf
<VirtualHost *:80> ServerAdmin rod@rod-again.com ServerName rod-again.com Include /etc/apache2/vhosts.d/default_vhost.include <IfModule mpm_peruser_module> ServerEnvironment apache apache </IfModule> </VirtualHost> |
# emacs /etc/apache2/vhosts.d/00_default_ssl_vhost.conf
<VirtualHost _default_:443>
ServerAdmin rod@rod-again.com ServernName rod-again.com Include /etc/apache2/vhosts.d/default_vhost.include ErrorLog /var/log/apache2/ssl_error_log <IfModule log_config_module> TransferLog /var/log/apache2/ssl_access_log </IfModule> </VirtualHost> |
On donne la propriété du dossiers htdocs à Apache. Pour ne pas avoir besoin de passer en root pour mettre à jour mon site, je m'ajoute au groupe 'apache' et je donne les droits d'écriture au groupe. Je créé aussi un lien symbolique de mon dossier perso vers htdocs
# chown -R apache:apache /var/www/localhost/htdocs
# rc-service apache2 restart
# gpasswd -a rod apache
# chmod -R g+w htdocs/
$ ln -s /var/www/localhost/htdocs web
L'optention de certificats pour votre site web peut-être assez complexe. Let's Encrypt va nous y aider mais je vais lâchement vous renvoyer vers la doc Gentoo et celle de Certbot et me contenter d'expliquer comment transférer vos certificats d'une machine à une autre et les renouveler automatiquement.
https://wiki.gentoo.org/wiki/Let%27s_Encrypt
On installe certbot et certbot-apache
# emerge -a certbot certbot-apache
Copiez les fichiers /etc/apache2/vhosts.d/00_default_vhost.conf, /etc/apache2/vhosts.d/00_default_ssl_vhost.conf et le répertoire /etc/letsencrypt depuis l'ancien hôte vers le nouveau. On en aura aussi besoin pour un serveur mail.
On redémarre apache, on applique les certificats puis on édite crontab pour le renouvellement automatique (le 1er et le 15 du mois)
# rc-service apache2 restart
# certbot --apache
# crontab -e
0 0 1,15 * * certbot renew --force-renewal |
Voilà, votre site web est joignable en https!