Configuration

The configuration can be stored in multiple files:

  • sites.php: Legacy file and currently deprecated.
  • config/sites.yaml: New file for the sites configuration when you need only one environment.
  • config/ABC.sites.yaml: File for separated environments sites configuration.

The ABC is called the source of the configuration. For example, dev.sites.yaml for the development environment, prod.sites.yaml for the production environment, etc.

Sites Configuration

Create a YAML file and configure the sites you want to deploy using the following structure in each file:

  • A key with the site/domain name and a value with the repository URL.
  • A key with the site/domain name and a value with an array of detailed configuration options.

For example, create the file config/sites.yaml with the following content:

# Simple configuration with just the repository URL.
www.example.com: [email protected]:example/example.git

# Extended configuration with options.
www.complex-site.com:
    repository: [email protected]:example/complex-site.git
    branch: dev
    deploy_path: /var/www/custom/path/complex-site
    shared_files: ['.env', 'config/settings.php']
    shared_dirs: ['var/uploads', 'var/logs']
    writable_dirs: ['var', 'tmp', 'var/cache']
    writable_mode: chmod
    writable_use_sudo: false
    writable_recursive: true
    writable_chmod_mode: 0775

Add a site to the configuration via CLI

For simple configurations you can use:

./site-add.sh www.example.com [email protected]:example/example.git

This will always add the configuration to the config/sites.yaml file.

Using sources

You can use sources to create a configuration for multiple environments. For example, you can create a source for the development environment and a source for the production environment.

  • config/dev.sites.yaml: Development environment configuration.
  • config/prod.sites.yaml: Production environment configuration.

This file can have the same sites, but with different configuration options. Then you can use the --source option to specify the source of the configuration to select the appropriate environment for the site.

Available Configuration Options

Option Description Default
repository Git repository URL Required
branch Git branch to deploy main
deploy_path Deployment path on server /var/www/sites/[site-name]
shared_files Files to share between releases []
shared_dirs Directories to share between releases []
writable_dirs Directories to make writable [‘var’, ‘tmp’]
writable_mode Mode for writable directories chmod
writable_use_sudo Whether to use sudo for writable directories false
writable_recursive Apply writable permissions recursively true
writable_chmod_mode Chmod mode for writable directories 0777

Deployer Server Configuration

The server configuration is defined in the file deploy.php. By default, a local environment (localhost) and a remote environment (if DEPLOYER_HOST is set) are configured:

// Default local environment.
host('localhost')
    ->setRemoteUser('admin')
    ->setPort(2222)
    ->setLabels(['stage' => 'local']);

// Remote environment (only if DEPLOYER_HOST is set).
if (getenv('DEPLOYER_HOST')) {
    $stage = getenv('DEPLOYER_STAGE') ?: 'prod';
    host(getenv('DEPLOYER_HOST'))
        ->setRemoteUser(getenv('DEPLOYER_USER') ?: 'admin')
        ->setPort(getenv('DEPLOYER_PORT') ?: 2222)
        ->setLabels(['stage' => $stage]);
    set('default_selector', 'stage=' . $stage);
}

You can modify these settings or add additional environments as needed.

We recommend to use the environment variables and not to hardcode the values in the file deploy.php.

Variable Description Default
DEPLOYER_HOST Remote host
DEPLOYER_USER Remote user admin
DEPLOYER_PORT Remote port 2222
DEPLOYER_STAGE Environment stage prod

Actions (shell scripts)

Actions allow you to run custom commands during the deployment. For example, you can run a custom command to rebuild the cache after the deployment.

There are three types of actions:

  • initial: Run initial actions before the deployment, just after the code is updated.
  • final: Run final actions after the deployment, just before the symlink is created.
  • success: Run success actions after the deployment, just before the success message.

The actions are defined in the .deployer/actions directory. Each action is a Shell script file:

  • .deployer/actions/initial.sh: Initial actions script.
  • .deployer/actions/final.sh: Final actions script.
  • .deployer/actions/success.sh: Success actions script.

All the actions are optional, the deployment will continue if the action file is not present.

On this page

Last updated on 10/10/2026 by Anonymous