Files
Ferme/DEPLOYMENT.md
tristan ac5a3493e7
All checks were successful
Auto Tag Develop / tag (push) Successful in 5s
Build Release Artefact / build (push) Successful in 1m10s
fix : doc et script de déploiement
2026-01-22 16:36:46 +01:00

2.9 KiB
Raw Blame History

Déploiement Ferme (release Gitea)

1) Premier déploiement

Pré-requis système (Ubuntu)

  1. Mettre à jour la machine
    sudo apt update
    sudo apt install -y software-properties-common ca-certificates curl gnupg unzip git nginx
    
  2. Installer PHP 8.4 + FPM + extensions
    sudo add-apt-repository -y ppa:ondrej/php
    sudo apt update
    sudo apt install -y \
      php8.4 php8.4-fpm php8.4-cli php8.4-common \
      php8.4-mbstring php8.4-xml php8.4-curl php8.4-intl \
      php8.4-zip php8.4-gd php8.4-pgsql php8.4-opcache
    
  3. Installer PostgreSQL (si la DB est locale)
    sudo apt install -y postgresql postgresql-contrib
    sudo -u postgres psql
    
    Dans psql :
    CREATE USER ferme_user WITH PASSWORD 'motdepassefort';
    CREATE DATABASE ferme OWNER ferme_user;
    \q
    

Dossier de déploiement

  1. Créer le dossier de déploiement
    sudo mkdir -p /var/www/ferme
    sudo chown -R malio:malio /var/www/ferme
    
  2. Créer le fichier denvironnement
    • Backend : /var/www/ferme/.env
      • APP_ENV=prod
      • APP_DEBUG=0
      • APP_SECRET=...
      • DATABASE_URL=postgresql://ferme_user:motdepassefort@127.0.0.1:5432/ferme?serverVersion=16&charset=utf8
      • JWT_SECRET_KEY=%kernel.project_dir%/config/jwt/private.pem
      • JWT_PUBLIC_KEY=%kernel.project_dir%/config/jwt/public.pem
      • JWT_PASSPHRASE=...
      • COOKIE_SECURE=1
      • PONT_BASCULE_BYPASS=false
  3. Générer les clés JWT
    cd /var/www/ferme
    mkdir -p config/jwt
    php bin/console lexik:jwt:generate-keypair
    
  4. Config Nginx (sous-domaine)
    Copier le fichier de conf /deploy/nginx/ferme.conf dans /etc/nginx/sites-available/ferme.conf
    sudo ln -s /etc/nginx/sites-available/ferme.conf /etc/nginx/sites-enabled/ferme.conf
    sudo nginx -t && sudo systemctl reload nginx
    
  5. Installer le script de déploiement (disponible /scripts/deploy-release.sh)
    sudo nano /usr/local/bin/deploy-ferme
    sudo chmod +x /usr/local/bin/deploy-ferme
    

2) Déployer une release

  1. Créer un tag sur develop (auto-tag v0.0.X)
  2. Attendre que la release Gitea soit publiée
  3. (Une seule fois) Donner les droits d'écriture à PHP sur var/ via ACL
    sudo apt update
    sudo apt install -y acl
    sudo setfacl -R -m u:malio:rwx,g:www-data:rwx /var/www/ferme/var
    sudo setfacl -R -m d:u:malio:rwx,d:g:www-data:rwx /var/www/ferme/var
    
  4. Déployer la release
    /usr/local/bin/deploy-ferme vX.Y.Z
    
    Notes :
    • Lancer le déploiement en tant que malio (ou sudo -u malio) pour éviter de casser les droits.
    • Le script applique umask 002 pour garder les fichiers group-writable (www-data).

Vérifications

  • Front : http://ferme.malio-dev.fr/
  • API : http://ferme.malio-dev.fr/api/users
  • Login : POST http://ferme.malio-dev.fr/api/login_check