=============== Hébergement web =============== Transfert de fichiers --------------------- Afin de garantir la sécurité des échanges, tous les fichiers doivent être transférés via SFTP ou SSH. Veuillez vous référer à la page :ref:`generer-cle-ssh` pour générer une clé, obligatoire pour vous connecter. Attention, le port 22 utilisé par le SFTP/SSH est fermé par défaut. Pour l'ouvrir, veuillez faire une demande en indiquant votre adresse IP de sortie (visible sur https://ip.dri.fr par exemple). Le transfert direct en SFTP vers l'arborescence du site est cependant déconseillé car cela peut conduire à des problèmes de permissions. Dans ce cas l'utilisateur doit avoir l'option "webmaster" cochée et passer par la commande ``sudo -u www-deploy`` pour faire des opérations (voir la partie :ref:`les-fichiers-web` ) Pour ajouter, supprimer ou modifier une clé existante ou le profil, veuillez vous rendre sur la fiche de votre serveur en allant dans **Sites & Applications => L'application => Services => Environnement => Utilisateurs / Accès SFTP**. Pour pouvoir appliquer les droits en poussant directement dans l'arborescence, il y a deux solutions : * Utiliser rsync en appelant la commande rsync présente sur le serveur avec la commande sudo afin de changer d'utilisateur : .. code-block:: shell rsync --rsync-path="sudo -u www-deploy rsync" -e "ssh -i ~/.ssh/id_ed25519" * Utiliser WinSCP qui offre cette possibilité : https://winscp.net/eng/docs/faq_su Attention cependant, le chemin indiqué dans la documentation de WinSCP ne correspond pas à notre implémentation, il faut indiquer dans notre cas: .. code-block:: sudo -u www-deploy /usr/lib/sftp-server .. image:: images/winscp.png :alt: winscp .. _les-fichiers-web: Les fichiers "Web" ------------------ Le répertoire racine de votre hébergement se situe dans votre "home" sous ``~/www/php/``. Ce répertoire est un lien symbolique de ``/srv/php/`` sur votre VM. Une gestion des droits par ACL est présente et devrait vous permettre d'éviter tous problème d'accès. Le DocumentRoot est paramétrable si besoin via un ticket ÉVA Pilote. Certains paramètres PHP sont également modifiables sur demande par ticket ÉVA Pilote. Un utilisateur spécial ``www-deploy`` ainsi qu'un groupe ``webmasters`` est créé pour les services Web, qui a les droits sur l'arborescence du site. Les utilisateurs ayant le profil "webmaster" sont rattachés au groupe ``webmasters`` et peuvent faire des opérations avec cet utilisateur via la commande sudo. Il est fortement conseillé de procéder de cette façon pour éviter les problèmes de droits avec les fichiers gérés par l'utilisateur du serveur web (en général, ``www-data``) Exemple en lançant le script ``composer`` dans l'arborescence d'un site web pour installer les dépendances PHP : .. code-block:: shell sudo -u www-deploy composer install L'appartenance au groupe webmasters permet également l'édition de tâches planifiées ("cron") avec la commande suivante : .. code-block:: shell sudo -u www-data crontab -e Si vous obtenez un message d'erreur il est possible que votre utilisateur ne dispose pas du profil "webmaster", dans ce cas veuillez contacter le support afin qu'il procède à la mise à jour de votre compte. Du fait de ce mécanisme, il est déconseillé de transférer des fichiers directement dans l'arborescence depuis votre utilisateur, car ils risquent de ne pas être créés avec des droits suffisants. Si vous constatez de fortes incohérences dans les permissions de l'arborescence de votre site, veuillez consulter le support qui pourra remettre l'ensemble dans un état cohérent (propriétaire ``www-deploy``, groupe ``www-data``, droits d'accès à l'utilisateur ``www-deploy``, le tout suivant ce qui a été choisi soit en lecture seule, soit en lecture/écriture; attention cependant aux droits existants qui seront écrasés). Veuillez noter qu'actuellement il n'est pas facilement possible d'avoir une partie de l'arborescence en lecture seule et une autre en lecture/écriture. Usage d'une commande PHP en mode Docker ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. note:: Les anciennes versions non-supportées (inférieures à 8.0) sont proposées en mode Docker. De façon générale, une version récente de PHP sera installé en mode "natif". Pour vérifier que PHP est hébergé dans un conteneur, vous pouvez par exemple lancer la commande suivante : ``whereis php`` Le résultat dépend du chemin. Si le résultat obtenu est ``/usr/local/bin/php``, PHP est dans un conteneur. Dans le cas contraire, le résultat obtenu sera ``/usr/bin/php`` (éventuellement suivi de la version si vous en avez plusieurs) Si PHP est dans un conteneur, il faut préciser l'ensemble de la chaîne de commande pour que celle-ci s’exécute correctement, toujours via l'utilisateur ``www-deploy`` pour éviter les problèmes de droits. .. code-block:: shell sudo -u www-deploy /usr/local/bin/php /srv/www/php/// * `composer `_ ``composer`` est déjà présent dans le conteneur, on peut l'utiliser via : .. code-block:: shell sudo -u www-deploy /usr/local/bin/php /usr/local/bin/composer --working-dir=/srv/www/php/ Les fichiers de configuration de ``composer`` sont dans votre home/composer * `drush `_ Après avoir installé ``drush`` .. code-block:: shell sudo -u www-deploy /usr/local/bin/php /srv/www/php///drush.php --root=/srv/www/php/ * `wp-cli `_ Après avoir installé ``wp-cli`` .. code-block:: shell sudo -u www-deploy /usr/local/bin/php /srv/www/php///wp-cli --allow-root --path=/srv/www/php/ Problèmes possibles avec l'hébergement web ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Paramètres par défaut pouvant poser problème : * L'arborescence d'un site est créée en lecture seule, si vous avez besoin des droits d'écriture, merci de faire une demande au support. * Les paramètres indiqués après le nom d'un fichier se terminant par ``php`` sont bloqués. Si vous utilisez cette fonctionnalité (par exemple pour le `PATH_INFO `_), vous devez faire une demande au support pour l'activer.