# How to Deploy Symfony [Source](/recipe/symfony.php) ## How to deploy a Symfony project with zero downtime? - First, [install](/docs/installation.md) the Deployer. - Second, require `recipe/symfony.php` recipe into your _deploy.php_ or _deploy.yaml_ file. - Third, now you can have a zero downtime deployment! Did you know that you can deploy **Symfony** project with a single command? Just execute `dep deploy`. Something went wrong? Just run `dep rollback` to rollback your changes. Also, you can take an advantage of the [Deployer's CLI](/docs/cli.md) to deploy your project. Another cool feature of the Deployer is [provisioning](/docs/recipe/provision.md). Take any server, and run `dep provision` command. This command will configure webserver, databases, php, https, and more. You will get everything you need to run your **Symfony** project. Deployer does next steps to [deploy](#deploy) **Symfony**: * Displays info about deployment * Prepares host for deploy * Locks deploy * Prepares release * Updates code * Creates symlinks for shared files and dirs * Makes writable dirs * Installs vendors * Clears cache * Creates symlink to release * Unlocks deploy * Cleanup old releases The symfony recipe is based on the [common](/docs/recipe/common.md) recipe. ## Configuration ### symfony_version [Source](https://github.com/deployphp/deployer/blob/master/recipe/symfony.php#L8) ### shared_dirs [Source](https://github.com/deployphp/deployer/blob/master/recipe/symfony.php#L14) Overrides [shared_dirs](/docs/recipe/deploy/shared.md#shared_dirs) from `recipe/deploy/shared.php`. ```php title="Default value" [ 'var/log', ] ``` ### shared_files [Source](https://github.com/deployphp/deployer/blob/master/recipe/symfony.php#L18) Overrides [shared_files](/docs/recipe/deploy/shared.md#shared_files) from `recipe/deploy/shared.php`. ```php title="Default value" [ '.env.local' ] ``` ### writable_dirs [Source](https://github.com/deployphp/deployer/blob/master/recipe/symfony.php#L22) Overrides [writable_dirs](/docs/recipe/deploy/writable.md#writable_dirs) from `recipe/deploy/writable.php`. ```php title="Default value" [ 'var', 'var/cache', 'var/log', 'var/sessions', ] ``` ### migrations_config [Source](https://github.com/deployphp/deployer/blob/master/recipe/symfony.php#L29) ### doctrine_schema_validate_config [Source](https://github.com/deployphp/deployer/blob/master/recipe/symfony.php#L31) ### bin/console [Source](https://github.com/deployphp/deployer/blob/master/recipe/symfony.php#L33) ```php title="Default value" '{{bin/php}} {{release_or_current_path}}/bin/console' ``` ### console_options [Source](https://github.com/deployphp/deployer/blob/master/recipe/symfony.php#L35) ## Tasks ### database:migrate [Source](https://github.com/deployphp/deployer/blob/master/recipe/symfony.php#L40) Migrates database. ### doctrine:schema:validate [Source](https://github.com/deployphp/deployer/blob/master/recipe/symfony.php#L50) Validate the Doctrine mapping files. ### deploy:cache:clear [Source](https://github.com/deployphp/deployer/blob/master/recipe/symfony.php#L55) Clears cache. ### deploy [Source](https://github.com/deployphp/deployer/blob/master/recipe/symfony.php#L64) Deploys project. This task is group task which contains next tasks: * [deploy:prepare](/docs/recipe/common.md#deployprepare) * [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) * [deploy:cache:clear](/docs/recipe/symfony.md#deploycacheclear) * [deploy:publish](/docs/recipe/common.md#deploypublish)