Symfony
Overview
This tutorial assumes that your application is based on Symfony >= 3.4 and Symfony Flex. Symfony applications almost work out of the box on Clever Cloud, you just have a few adjustments to make.
Create an application on Clever Cloud
With the web console
Refer to Quickstart for more details on application creation via the console.
With the Clever Tools CLI
- Make sure you have clever-tools installed locally or follow our CLI getting started guide.
- In your code folder, do
clever create --type <type> <app-name> --region <zone> --org <org>
where :type
is the type of technology you rely onapp-name
the name you want for your application,zone
deployment zone (par
for Paris andmtl
for Montreal)org
the organization ID the application will be created under.
Refer to clever create for more details on application creation with Clever Tools.
Setting up environment variables on Clever Cloud
With the Clever Cloud console
- Go to the Clever Cloud console, and find the app you want to fine tune under it’s organization.
- Find the Environment variables menu and select it.
- In this menu, you will see a form with VARIABLE_NAME and variable value fields.
- Fill them with the desired values then select Add.
- Don’t forget to “Update Changes” at the end of the menu.
With the Clever Tools CLI
- Make sure you have clever-tools installed locally. Refer to our CLI getting started.
- In your code folder, do
clever env set <variable-name> <variable-value>
Refer to environment variables reference for more details on available environment variables on Clever Cloud.
You can of course create custom ones with the interface we just demonstrated, they will be available for your application.
Configure your Symfony application
Configure DocumentRoot
Add a new environment variable called CC_WEBROOT
and set /public
as its value CC_WEBROOT=/public
.
Configure your application secret
APP_SECRET
environment variable is required to generate CSRF tokens. By default for symfony/framework-bundle generates one when it’s installed via Symfony Flex.
If you do not use Flex, make sure to change your APP_SECRET
. The default value is ThisTokenIsNotSoSecretChangeIt
, change it.
Configure the Symfony environment
If you’re using .env
file in your application, please don’t commit productions credentials in this file or in a .env.production
file. They are not meant to be committed alongside your applications. Clever Cloud allows you to inject environment in your app, so you can dynamically link databases and have separate environments with the same code base.
From the console, you can edit the application’s environment variables. Click on “expert mode”, you’ll be able to directly paste the contents of the .env
file.
From the CLI, it’s even simpler: clever env import < .env
.
You will also need to set the environment variable APP_ENV
to one of:
- dev
- test
- prod
You can anyway add your environment with any of the methods mentioned in Setting up environment variables on Clever Cloud.
Configure monolog to get application logs
For your application logs to be collected and available in the console and CLI, you need to configure monolog to use its error_log
output.
That does not mean that it will only output error level logs, you can set it to use any level, here is an example with the info level (and above):
monolog:
handlers:
filter_for_errors:
type: fingers_crossed
action_level: error
handler: error_log_handler
excluded_404s:
# regex: exclude all 404 errors from the logs
- ^/
error_log_handler:
type: error_log
level: info
Configure Symfony to work behind Clever Cloud reverse proxies
You can use the CC_REVERSE_PROXY_IPS
environment variable that contains a list of trusted IP addresses, separated by commas.
TRUSTED_PROXIES=127.0.0.1,${CC_REVERSE_PROXY_IPS}
framework:
# ...
trusted_proxies: '%env(TRUSTED_PROXIES)%'
For more information on configuring symfony behind a reverse proxy, you can read the official documentation.
Apache 404 error after deployment
If everything looks fine and you still get 404 errors, remember that CleverCloud works with an Apache server, so you’ll need an htaccess in the /public
directory.
Symfony got your back on this: just run composer require symfony/apache-pack
. See the official documentation of Symfony for more information.
Monitor your application with New Relic
You can use New Relic to monitor your application on Clever Cloud.
Please refer to our New Relic documentation to configure it for your application.
Environment injection
Clever Cloud injects environment variables from your application settings as mentioned in setting up environment variables and is also injecting in your application production environment, those from your linked add-ons.
Custom build configurations
On Clever Cloud you can define some build configuration: like the app folder to deploy or the path to validate your application deployment is ready To do that follow the documentation here and add the environement variable you need.
Linking a database or any other add-on to your application
By linking an application to an add-on, the application has the add-on environment variables in its own environment by default.
On add-on creation
Many add-ons do exist on Clever Cloud: refer to the full list and check add-ons dedicated pages for full instructions.
During add-on creation, an Applications screen appears, with a list of your applications. You can toggle the button to Link and click next. If you finish the process of add-on creation, the application is automatically linked to it.
Add-on already exists
In the Clever Cloud console, under the Service Dependencies menu of your application, you can use the Link add-ons dropdown menu to select the name of the add-on you want to link and use the add button to finish the process.
You can also link another application from the same page in the Clever Cloud console, using the Link applications dropdown menu.
Configure your database
Make sure you have created a database add-on in the Clever Cloud console, and that it’s linked to your application. When it’s done, you will be able to access all of your add-on environment variables from the application.
Change the default DATABASE_URL
environment variable used in your config/packages/doctrine.yaml
to <ADDON_PREFIX>_ADDON_URI
where <ADDON_PREFIX>
depending on the database addon you created (e.g. MYSQL
for MySQL, POSTGRESQL
for PostgreSQL or MONGODB
for MongoDB) or be sure to use the environment variable in your production configuration file as explained in the configuration documentation of Symfony.
Configure ProxySQL for MySQL
To manage your connection pool towards your MySQL add-on, you can set-up a ProxySQL.
Once you have activated the ProxySQL (through the environment variable), a configuration example would be:
dbal:
unix_socket: '%env(CC_MYSQL_PROXYSQL_SOCKET_PATH)%'
url: 'mysql://%env(MYSQL_ADDON_USER)%:%env(MYSQL_ADDON_PASSWORD)%@localhost/%env(MYSQL_ADDON_DB)%?serverVersion=%env(MYSQL_ADDON_VERSION)%'
Optional: run tasks after build step
If you want to have database migrations automatically run during each deployment, or frontend assets which must be built, you can write all these commands in clevercloud/post_build.sh
like this one:
# Database migrations
./bin/console doctrine:migrations:migrate --no-interaction
# Frontend build
yarn install && yarn run build
Make sure this file is executable:
chmod +x clevercloud/post_build.sh
Then, add this to the application’s environment variables CC_POST_BUILD_HOOK=./clevercloud/post_build.sh
.
Git Deployment on Clever Cloud
You need Git on your computer to deploy via this tool. Here is the official website of Git to get more information: git-scm.com
Setting up your remotes
The “Information” page of your app gives you your Git deployment URL, it looks like this:
git+ssh://git@push.clever-cloud.com/<your_app_id>.git
- Copy it in your clipboard
Locally, under your code folder, type in
git init
to set up a new git repository or skip this step if you already have oneAdd the deploy URL with
git remote add <name> <your-git-deployment-url>
Add your files via
git add <files path>
and commit them viagit commit -m <your commit message>
Now push your application on Clever Cloud with
git push <name> master
Refer to git deployments for more details.
FTP Deployment
Make sure you have Filezilla or an other FTP software installed in your machine.
When you chose to deploy your application via FTP at the application creation, the system creates a free FS Bucket with an ID matching your application’s ID.
Find the FTP credentials in the configuration tab of this particular FS Bucket.
Just follow the instructions of your FTP Software to send code to Clever Cloud.
⚠️ An FTP application automatically starts once you create the application, even if you don’t send any code yet.
Refer to Quick Start - FTP deployment for more details.
More configuration
Need more configuration? To run a script at the end of your deployment? To add your private SSH key to access private dependencies?
Go check the Common configuration page.
You may want to have an advanced usage of your application, in which case we recommend you to read the Administrate documentation section.
If you can’t find something or have a specific need like using a non supported version of a particular software, please reach out to the support.
Did this documentation help you ?