Laravel France

Déploiement : manière de faire et droit d'accès sur les fichiers en production

Avatar de gatienddr
gatienddr

Hello :), Je souhaite automatiser le déploiement de mon back-end Laravel (php). Actuellement, j’utilise un serveur Apache hébergé sur un Ubuntu auquel j’ai accès en SSH. Jusqu’à maintenant, je ne m’embêtais pas : à chaque nouvelle fonctionnalité, je me connectais en SSH, je clonais le projet, je remplaçais l’ensemble des fichier, un petit composer install, et je set les droit d’accès au fichier. J’avais trouvé sur Stackoverflow les commandes pour set les bons droit sur les bons fichier php de Laravel (https://stackoverflow.com/questions/30639174/how-to-set-up-file-permissions-for-laravel). Maintenant, je souhaite automatiser ce processus dans une pipeline. J’ai deux questions par rapport à cela. J’ai identifié 2 manière de faire :

  • Soit je fais un gros scp qui copie colle les fichier sur mon serveur
  • Soit je fais un git pull depuis la production. J’ai l’impression qu’il n’y pas une manière de faire vraiment mieux que l’autre. Le scp semble être le plus courant quand même. J’ai un deuxième problème à gérer. Pour set les droits d’accès au fichiers en production, il me faut utiliser le super utilisateur linux (sudo). Ca m’étonnerai qu’utiliser sudo en déploiement soit une bonne pratique/une bonne chose. Mais ne pas set les droits d’accès aux fichier me parait bizarre également. Je n’ai rien trouvé par rapport à ça sur Google. Qu’en pensez vous ?
Avatar de CinquièmeDimension
CinquièmeDimension

Salut,

Le scp est carrement pas le plus courrant. Je pense que le git pull doit representer 95% des gens. Pour faire un git pull, par contre, aucun besoin d'être SU. Un simple user doit avoir accès aux fichiers. Tu dois avoir un problème de droits dans ton dossier.

Avatar de gatienddr
gatienddr

Merci pour ta réponse :) "Un simple user doit avoir accès aux fichiers." Mais par conséquent tu fais un bon chmod ugo +777 sur ton dossier Laravel en prod ? Ou tu fais ça de façon plus fine ? et dans ce cas, tu aurais un template/des commandes sous la main à me proposer pour set l'accès à mon dossier Laravel proprement, s'il te plaît ? Je te remercie :)

Avatar de CinquièmeDimension
CinquièmeDimension

Je ne connais pas exactement les droits à donner mais 777 est une porte ouverte aux hackers

Avatar de F.M.
F.M.

Salut,

Ta procédure d'automatisation elle va faire la même chose que toi mais en automatique, donc utiliser ssh... Si ce n'est pas déjà fait ajoute les clés nécessaires pour ne pas avoir de mots de passe à saisir.

Par contre n'utilise pas le git pull, notamment si tu veux du zero downtime. Le fonctionnement en gros :

  • ton serveur web pointe sur un dossier /var/www/ton_projet/production/current/public, avec current qui est un lien symbolique vers un répertoire d'une version
  • tu as un dossier partagé par toutes tes versions, qui contient notamment le .env et le dossier storage. Pour faire simple ta BDD est aussi partagée entre toutes les versions.
  • quand tu lances une mise à jour, il faut créer un nouveau dossier qui représente une nouvelle version : /var/www/ton_projet/production/versions/num_version
  • et t'y installes une version fraîche de ton appli, git clone, composer install, plus des compils si t'en as ou autres
  • quand tout est installé, tu fais pointer current vers le nouveau dossier

Tu peux par exemple utiliser deployer qui utilise PHP, avec un recipe prêt pour laravel : https://deployer.org/docs/7.x/recipe/laravel

Vous ne pouvez pas répondre à ce sujet.