Déploiement
VPS (Nginx + PHP-FPM)
Prérequis
- Ubuntu 22.04+ ou Debian 12+
- PHP 8.4 avec
php-fpm,php-cliet les extensions requises - Nginx (ou Apache)
- MySQL 8+ ou PostgreSQL 14+
- Node.js 18+ pour compiler les assets frontend
- Composer
- Supervisor (recommandé, pour les workers en arrière-plan)
Étapes
# 1. Cloner le projetcd /var/wwwgit clone https://github.com/jambostack/jambo-api.gitcd jambo-api
# 2. Installer les dépendancescomposer install --no-dev --optimize-autoloadernpm ci && npm run build
# 3. Configurer l'environnementcp .env.example .env# Éditez .env avec votre base de données, mailer et APP_SECRET
# 4. Créer la base de donnéesphp bin/console doctrine:database:createphp bin/console doctrine:migrations:migratephp bin/console app:setup
# 5. Définir les permissionssudo chown -R www-data:www-data var/ public/uploads/Configuration Nginx
server { listen 80; server_name api.exemple.com; root /var/www/jambo-api/public;
location / { try_files $uri /index.php$is_args$args; }
location ~ \.php$ { fastcgi_pass unix:/var/run/php/php8.4-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
location ~ /\.(ht|git|env) { deny all; }}Supervisor pour les workers
[program:jambo-worker]command=php /var/www/jambo-api/bin/console messenger:consume async -vvuser=www-datanumprocs=2autostart=trueautorestart=trueDocker
# Cloner et lancergit clone https://github.com/jambostack/jambo-api.gitcd jambo-apidocker compose up -d
# Lancer la configuration dans le conteneurdocker compose exec app php bin/console app:setupLe fichier compose.yaml inclus configure PHP-FPM, Nginx, MySQL et Meilisearch.
Checklist de production
- Définir
APP_ENV=prodetAPP_DEBUG=0 - Générer un
APP_SECRETrobuste (openssl rand -hex 32) - Configurer HTTPS (Let’s Encrypt recommandé)
- Mettre en place des sauvegardes de base de données
- Activer OPcache dans
php.ini - Définir les permissions correctes (
var/,public/uploads/) - Configurer un DSN mailer réel (ne pas utiliser
null://en production) - Lancer
php bin/console cache:clearaprès chaque déploiement