Upsun User Documentation

Get started

Try Upsun for 15 days
After that, enjoy the same, game-changing Upsun features for less with the First Project Incentive!ยน A monthly $19 perk!
ยนTerms and conditions apply
Activate your 15-day trial

This guide provides instructions for deploying and working with Laravel on Upsun.

Before you begin Anchor to this heading

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 Upsun CLI. This lets you interact with your project from the command line. You can also do most things through the Web Console.

1. Create your Laravel app Anchor to this heading

  1. To create a new Laravel project, run the following commands:

    Terminal
    composer create-project laravel/laravel:^11.0 PROJECT_NAME
    cd PROJECT_NAME
    git init .

    Alternatively, you can deploy an existing Laravel project. To do so, cd into your Laravel repository root folder.

  2. To generate a sensible default Upsun configuration, run the following command from within the project’s directory:

    Terminal
    upsun project:init

    The Upsun CLI detects a PHP & Laravel stack. Follow the prompts to specify a name for your project and select the needed services. While optional, it is recommended to add Redis to your project to handle Laravel cache, queues & sessions.

    The .upsun/config.yaml and .environment configuration files are generated.

  3. Enable the PHP extensions required by the services you selected.
    For example, pdo_mysql is enabled by default, but you may need to enable others like redis or pdo_pgsql:

    .upsun/config.yaml
    applications:
      myapp:
        [...]
        runtime:
          extensions:
            - redis
            - pdo_pgsql

    See all the available PHP extensions.

  4. Laravel requires an encryption key.
    To generate the key locally, run php artisan key:generate. Copy the key from your local .env file into .environment as follows:

    .environment
    export APP_KEY="base64:APP_KEY"
  5. Add and commit your changes:

    Terminal
    git add .upsun/config.yaml .environment
    git commit -m "Add Upsun configuration"

2. Create your Upsun project Anchor to this heading

To create a project on Upsun, run the following command from within the project’s directory:

Terminal
upsun project:create --title PROJECT_TITLE --set-remote

The --set-remote flag sets the new project as the remote for this repository.

3. Deploy your project Anchor to this heading

To deploy your project, run the following command:

Terminal
upsun push

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 upsun activity:log.

Congratulations, your first Laravel app has been deployed on Upsun!

4. Configure write access Anchor to this heading

The Upsun default configuration stipulates three writable folders in .upsun/config.yaml:

  • "/.config"
  • "bootstrap/cache"
  • "storage"

If your application writes content outside of these default ones, you can set up mounts.

5. Make changes to your project Anchor to this heading

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:

  1. Create a new environment (a Git branch) to make changes without impacting production:

    Terminal
    upsun branch feat-a

    This command creates a new local feat-a Git 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).

  2. Make changes to your project.

    For example, edit the resources/views/welcome.blade.php template and make the following visual changes:

    resources/views/welcome.blade.php
    <meta name="viewport" content="width=device-width, initial-scale=1">
    -    <title>Laravel</title>
    +    <title>Laravel On Upsun</title>
    <!-- Fonts -->
  3. Add and commit your changes:

    Terminal
    add .
    git commit -a -m "Update title"
  4. Deploy your changes to the feat-a environment:

    Terminal
    upsun deploy

    Note that each environment has its own domain name. To view the domain name of your new environment, run the following command:

    Terminal
    upsun url --primary
  5. 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:

    Terminal
    git checkout main
    git merge feat-a
    upsun environment:delete feat-a
    git branch -d feat-a
    upsun deploy

    Note that deploying to production is fast because the image built for the feat-a environment is reused.

    For a long running branch, keep the code up-to-date with the main branch by using git merge main or git rebase main. Also, keep the data in sync with the production environment by using upsun env:sync.

6. Optional: Use a third-party Git provider Anchor to this heading

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:

Is this page helpful?