Get Started
Back to home
On this page
Upsun is the official Symfony PaaS. This guide provides instructions for deploying, and working with, Symfony on Upsun.
Before you begin
You need:
- Git. Git is the primary tool to manage everything your app needs to run. Push commits to deploy changes and control configuration through YAML files. These files describe your infrastructure, making it transparent and version-controlled.
- A Upsun account. If you don’t already have one, register for a trial account. You can sign up with an email address or an existing GitHub, Bitbucket, or Google account. If you choose one of these accounts, you can set a password for your Upsun account later.
- The Symfony CLI. This lets you interact with your project from the command line. You can also do most things through the Web Console, but this guide focuses on using the CLI.
Note
The Symfony CLI wraps the Upsun CLI with added features related to Symfony.
So when using Symfony, you can replace upsun <command> by symfony upsun:<command> in all of your commands.
Create your Symfony app
To get familiar with Upsun, create a new Symfony project from scratch. The present tutorial uses the Symfony Demo app as an example :
symfony new PROJECT_NAME --demo --upsun
cd PROJECT_NAMEThe --demo flag pulls the Symfony Demo skeleton.
The --upsun flag automatically generates the Upsun configuration file.
Note
Alternatively, you can deploy an existing Symfony project. To do so, follow these steps:
-
To generate a sensible default Upsun configuration, run the following command from within the project’s directory:
symfony project:init --upsunThis generates the following set of configuration files:
.upsun/config.yaml, andphp.ini. -
Commit these new files to your repository:
git add .upsun/config.yaml php.ini git commit -m "Add Upsun configuration"
Upsun manages the entire infrastructure of your project, from code to services (such as databases, queues, or search engines), all the way to email sending, cron jobs, and workers. This infrastructure is described through configuration files stored alongside your code.
Create the project
To create the project on Upsun, run the following command from within the project’s directory:
symfony upsun:create --title PROJECT_TITLE --set-remoteThe --set-remote flag sets the new project as the remote for this repository.
Tip
You can link any repository to an existing Upsun project using the following command:
symfony upsun:set-remote PROJECT_ID Deploy your project
To deploy your project, run the following command:
symfony upsun:deployTip
During deployment, the logs from the Upsun API are displayed in your terminal so you can monitor progress.
To stop the display of the logs without interrupting the deployment,
use CTRL+C in your terminal.
To go back to displaying the logs, run symfony upsun:activity:log.
Congratulations, your first Symfony app has been deployed on Upsun!
Now that your app is deployed in production mode, you can define a custom domain for your live website. To do so, see how to set up a custom domain on Upsun, or run the following command:
symfony upsun:domain:add YOUR_DOMAIN Make changes to your project
Now that your project is deployed, you can start making changes to it. For example, you might want to fix a bug or add a new feature.
In your project, the main branch always represents the production environment. Other branches are for developing new features, fixing bugs, or updating the infrastructure.
To make changes to your project, follow these steps:
-
Create a new environment (a Git branch) to make changes without impacting production:
symfony upsun:branch feat-aThis command creates a new local
feat-aGit branch based on the main Git branch and activates a related environment on Upsun. The new environment inherits the data (service data and assets) of its parent environment (the production environment here). -
Make changes to your project.
For example, if you created a Symfony Demo app, edit the
templates/default/homepage.html.twigtemplate and make the following visual changes:templates/default/homepage.html.twig{% block body %} <div class="page-header"> - <h1>{{ 'title.homepage'|trans|raw }}</h1> + <h1>Welcome to the Upsun Demo</h1> </div> <div class="row"> -
Commit your changes:
git commit -a -m "Update text" -
Deploy your changes to the
feat-aenvironment:symfony upsun:deployNote that each environment has its own domain name. To view the domain name of your new environment, run the following command:
symfony upsun:url --primary -
Iterate by changing the code, committing, and deploying. When satisfied with your changes, merge them to the main branch, deploy, and remove the feature branch:
git checkout main git merge feat-a symfony environment:delete feat-a git branch -d feat-a symfony upsun:deployNote
Deploying to production was fast because the image built for the
feat-aenvironment was reused.For a long running branch, to keep the code up-to-date with the main branch, use
git merge mainorgit rebase main. You can also keep the data in sync with the production environment by usingsymfony upsun:env:sync.
Use a third-party Git provider
When you choose to use a third-party Git hosting service, the Upsun Git repository becomes a read-only mirror of the third-party repository. All your changes take place in the third-party repository.
Add an integration to your existing third-party repository:
Next steps
Symfony integration
Learn more about the Symfony integration, a set of tools and auto-configurations that makes it easier to use Upsun for Symfony projects.
Environment variables
When you use the Symfony integration, more environment variables related to Symfony are defined.
Local development
Once Symfony has been deployed on Upsun, you might want to set up a local development environment.
Symfony CLI tips
You might find the following commands useful when using the Symfony CLI.
-
Open the web administration console:
symfony upsun:web -
Open the URL of the current environment:
symfony upsun:url -
Open an SSH connection to your environment:
symfony upsun:ssh -
Configure a project for Upsun:
symfony project:init --upsun -
Get a list of all the domains:
symfony upsun:domains -
Create a new environment:
symfony upsun:branch new-branch -
Get a list of all the environments:
symfony upsun:environments -
Push code to the current environment:
symfony upsun:push -
Get a list of all the active projects:
symfony upsun:projects -
Add a user to the project:
symfony upsun:user:add -
List variables:
symfony upsun:variables
You might find the following commands useful when using the Symfony CLI with a database.
-
Create a local dump of the remote database:
symfony upsun:db:dump --relationship database -
Run an SQL query on the remote database:
symfony upsun:sql 'SHOW TABLES' -
Import a local SQL file into a remote database:
symfony upsun:sql < my_database_backup.sql