Set up your local development environment

Use the CLI

Use the CLI to get a copy of your project, so that you can start working locally.

In order to copy your project locally, you'll need to know its project ID. The command platform projects will list all of the projects in your account.

~/htdocs $ platform projects
  Your projects are:
  +---------------+----------------------------+------------------------------------------------+
  | ID            | Name                       | URL                                            |
  +---------------+----------------------------+------------------------------------------------+
  | [project-id]  | New Platform Project       | https://eu.platform.sh/#/projects/[project-id] |
  +---------------+----------------------------+------------------------------------------------+

  Get a project by running platform get [id].
  List a project's environments by running platform environments.

Download a project

Once you know the project ID you need to use, copying the project to your local system is simple. Navigate to the folder you want to copy the project to and then run platform get [project-id] [folder-name]. You can then choose which branch you want to clone first.

~/htdocs $ platform get [project-id] my-project
  Enter a number to choose which environment to checkout:
  [0] : Master
  [1] : Sprint1
  [2] : test
  1
  Cloning into 'my-project/repository'...
  remote: counting objects: 11, done.
  Receiving objects: 100% (11/11), 1.36 KiB | 0 bytes/s, done.
  Checking connectivity... done.

You should now have a repository folder, based on what you used for [folder-name] in the platform get command above.

Local site structure

Inside the new folder, you will see your repository contents, along with one or two new hidden files. They are:

  • .platform/local - This directory contains builds and any local metadata about your project needed by the CLI.
  • _www This is a symlink to the currently active build in the .platform/local/builds folder. It should be used as the document root for your local web server.

Build the local site

Now that you have a copy of your project locally, you can run platform build to pull it all together.

~/htdocs/my-project $ platform build
Building application myapp (runtime type: php)
  Beginning to build ~/htdocs/my-project/project.make.
  drupal-7.38 downloaded.
  drupal patched with install-redirect-on-empty-database-728702-36.patch.
  Generated PATCHES.txt file for drupal
  platform-7.x-1.3 downloaded.
Running post-build hooks
Symlinking files from the 'shared' directory to sites/default

Build complete for application myapp
Web root: ~/htdocs/my-project/_www
~/htdocs/my-project $

Other commands

Run platform list to see the other commands provided by the CLI.

seealso

SSH tunneling

Use SSH tunneling to connect your local development site to Platform.sh services.

$ platform tunnel:open
SSH tunnel opened on port 30000 to relationship: redis
SSH tunnel opened on port 30001 to relationship: database
Logs are written to: ~/.platformsh/tunnels.log

List tunnels with: platform tunnels
View tunnel details with: platform tunnel:info
Close tunnels with: platform tunnel:close

note platform tunnel: requires the pcntl and posix PHP extensions. Run php -m | grep -E 'posix|pcntl' to check if they're there.

Now you can connect to the remote database normally, as if it were local.

$ mysql --host=127.0.0.1 --port=30001 --user='user' --pass='' --database='main'

After the tunnel(s) are opened, you can confirm their presence:

platform tunnel:list

You can show more information about the open tunnel(s) with:

platform tunnel:info

and you can close tunnels with:

platform tunnel:close