# Sites web et certificats SSL Chaque site passe par **Nginx** (en façade, pour les fichiers statiques, le SSL et le cache), puis **Apache** (qui lit les `.htaccess`), puis **PHP-FPM**. Le PHP-FPM tourne sous l'utilisateur {{CLIENT}}, avec un pool par domaine. > [!NOTE] Prérequis > Le domaine doit déjà pointer vers le serveur (chapitre 6), sinon Let's Encrypt ne peut pas valider le certificat. Vérifiez avec `dig +short {{SITE}}` et `dig +short www.{{SITE}}` : les deux doivent répondre {{IP}}. ## Créer le site ```bash sudo v-add-web-domain {{CLIENT}} {{SITE}} ``` L'alias `www.{{SITE}}` est ajouté automatiquement. Le site se trouve dans `/home/{{CLIENT}}/web/{{SITE}}/public_html/`, avec une page d'accueil HestiaCP par défaut. ## Activer le certificat Let's Encrypt Indiquez explicitement l'alias `www`, sinon le certificat ne couvre que {{SITE}} : ```bash sudo v-add-letsencrypt-domain {{CLIENT}} {{SITE}} www.{{SITE}} ``` Forcez ensuite le HTTPS, et activez HSTS pour que les navigateurs refusent ensuite le HTTP : ```bash sudo v-add-web-domain-ssl-force {{CLIENT}} {{SITE}} sudo v-add-web-domain-ssl-hsts {{CLIENT}} {{SITE}} ``` > [!CHECK] > `curl -sI http://{{SITE}} | head -3` renvoie une redirection `301` vers `https://`, et `curl -sI https://www.{{SITE}} | head -1` renvoie `HTTP/2 200`. > [!TIP] > Le renouvellement est automatique. Dans le panel, la même chose se fait en modifiant le domaine : **Activer le SSL pour ce domaine**, **Utiliser Let's Encrypt pour obtenir un certificat SSL**, **Activer la redirection automatique en HTTPS**. ## Choisir la version de PHP du site Listez les versions disponibles, puis appliquez-en une au site : ```bash sudo v-list-sys-php sudo v-list-web-templates-backend sudo v-change-web-domain-backend-tpl {{CLIENT}} {{SITE}} PHP-8_4 ``` Pour installer une version supplémentaire plus tard (ex. 8.5) : ```bash sudo v-add-web-php 8.5 ``` > [!NOTE] Réglages PHP par site > Pour modifier une valeur PHP d'un seul site (ex. `memory_limit`), créez un fichier `.user.ini` dans le dossier servi par le web (pour Symfony : `public_html/public/`) : > > ```ini > memory_limit = 512M > upload_max_filesize = 64M > post_max_size = 64M > ``` > > Il est pris en compte après environ 5 minutes. HestiaCP règle déjà `upload_max_filesize` et `post_max_size` à 100M. ## Créer un site en sous-domaine Exemple avec `app.{{DOMAINE}}` : d'abord l'enregistrement DNS (chapitre 6), puis le site et son certificat. Pour un sous-domaine, pas d'alias `www` : ```bash sudo v-add-dns-record {{CLIENT}} {{DOMAINE}} app A {{IP}} sudo v-add-web-domain {{CLIENT}} app.{{DOMAINE}} sudo v-add-letsencrypt-domain {{CLIENT}} app.{{DOMAINE}} sudo v-add-web-domain-ssl-force {{CLIENT}} app.{{DOMAINE}} ``` ## Installer WordPress en un clic (facultatif) HestiaCP intègre un installeur d'applications : WordPress, Laravel, Symfony, Nextcloud, Joomla, Drupal, PrestaShop, entre autres. 1. **Web** › survolez le domaine › **Installer une application**. 2. Choisissez **WordPress**, remplissez le formulaire (titre, compte administrateur WordPress, e-mail, version de PHP) et laissez cochée la création de la base de données. 3. Validez : la base est créée et WordPress est installé dans `public_html`. > [!TIP] > Pour un WordPress, le modèle proxy **caching** de Nginx accélère nettement les pages publiques : `sudo v-change-web-domain-proxy-tpl {{CLIENT}} {{SITE}} caching`. ## Consulter les journaux d'un site ```bash sudo tail -f /var/log/apache2/domains/{{SITE}}.error.log sudo tail -f /var/log/nginx/domains/{{SITE}}.error.log ``` Ces journaux sont aussi visibles dans `/home/{{CLIENT}}/web/{{SITE}}/logs/` et dans le panel, via l'icône journal du domaine.