Voici un guide complet, étape par étape, couvrant à la fois la préparation côté Symfony et la configuration côté Render. Comme vous utilisez une base de données MySQL locale, nous aborderons aussi la migration vers une base de données cloud.
.env
.env.prod
# .env.prod APP_ENV=prod APP_DEBUG=0
.gitignore
DATABASE_URL="mysql://test:testd@db_host:3306/bibliotech?serverVersion=8.0"
(Les valeurs réelles seront configurées côté Render.)
Exécutez cette commande pour générer les dépendances optimisées pour la production :
composer install --no-dev --optimize-autoloader
Si vous utilisez des assets (CSS, JS, images), compilez-les pour la production :
npm run build # Si vous utilisez Webpack Encore
ou
yarn build
Dans config/packages/security.yaml, assurez-vous que la configuration est adaptée pour la production. Par exemple, désactivez le mode debug pour les firewalls :
config/packages/security.yaml
firewalls: main: lazy: true provider: app_user_provider # ...
Dans config/packages/doctrine.yaml, assurez-vous que la configuration est adaptée :
config/packages/doctrine.yaml
doctrine: dbal: url: '%env(resolve:DATABASE_URL)%' orm: auto_generate_proxy_classes: false # Désactivé en production proxy_dir: '%kernel.build_dir>/doctrine/orm/Proxies' query_cache_driver: array result_cache_driver: array metadata_cache_driver: array
Créez un script deploy.sh pour automatiser certaines tâches :
deploy.sh
#!/bin/bash # Installer les dépendances composer install --no-dev --optimize-autoloader # Compiler les assets npm run build # Vider le cache php bin/console cache:clear php bin/console cache:warmup
Rendez-le exécutable :
chmod +x deploy.sh
Sous Windows, vous pouvez créer un fichier .bat :
@echo off echo Installation des dépendances... call composer install --no-dev --optimize-autoloader echo Compilation des assets... call npm run build echo Nettoyage du cache... call php bin/console cache:clear call php bin/console cache:warmup echo Déploiement terminé. pause
Exportez votre base de données MySQL locale en utilisant mysqldump :
mysqldump
mysqldump -u [votre_utilisateur] -p[mot_de_passe] [nom_de_votre_base_locale] > bibliotec.sql
main
master
composer install --no-dev --optimize-autoloader && npm run build
php bin/console doctrine:migrations:migrate --no-interaction && symfony serve --port=$PORT --no-tls
Ajoutez les variables d’environnement suivantes dans Render :
APP_ENV
prod
APP_DEBUG
0
DATABASE_URL
mysql://[utilisateur]:[mot_de_passe]@[hôte]:3306/[nom_de_la_base]
Une fois votre service déployé, importez votre base de données locale :
mysql -u [utilisateur_render] -p[mot_de_passe_render] -h [hôte_render] [nom_de_la_base_render] < bibliotec.sql
(Vous pouvez le faire via un terminal local en utilisant les informations de connexion fournies par Render.)
Si vous souhaitez utiliser un domaine personnalisé :
Dans l’onglet “Logs” de votre service Render, vérifiez qu’il n’y a pas d’erreurs.
Ouvrez l’URL fournie par Render dans votre navigateur et testez les fonctionnalités principales.
Connectez-vous à votre base de données sur Render pour vérifier que les données ont bien été importées.
Si votre application ne se comporte pas comme attendu, videz le cache :
php bin/console cache:clear
Consultez les logs pour identifier la source du problème. Les erreurs courantes incluent :
Pour mettre à jour votre application après des modifications :
Build Command
Start Command
D’après la capture d’écran que vous avez partagée, voici ce que je recommande pour une application Symfony comme Bibliotec :
render.yaml
Si vous utilisez un fichier render.yaml pour configurer votre service, voici un exemple :
services: - type: web name: bibliotec env: php buildCommand: "composer install --no-dev --optimize-autoloader && npm run build" startCommand: "php bin/console doctrine:migrations:migrate --no-interaction && symfony serve --port=$PORT --no-tls" envVars: - key: APP_ENV value: prod - key: APP_DEBUG value: "0"
APP_ENV=prod APP_DEBUG=0 php bin/console server:run