Развёртывание на Platform.sh

Эта пошаговая статья описывает, как развернуть веб-приложение Symfony на Platform.sh. Вы можете прочитать больше об использовании Symfony с Platform.sh в официальной документации Platform.sh.

Развёртывание существующего сайта

В этом руководстве предполагается, что ваша кодовая база уже версионирована в Git.

Получить проект на Platform.sh

Вам нужно подписаться на проект Platform.sh. Выберите план разработки и пройдите процесс извлечения рабочей копии. Как только ваш проект будет готов, дайте ему имя и выберите: Импортировать существующий сайт.

Подготовьте ваше приложение

Чтобы развернть ваше приложение Symfony на Platform.sh, вам просто нужно добавить .platform.app.yaml в корне вашего Git-хранилища, который сообщит Platform.sh, как развернуть ваше приложение (прочтите больше о файлах конфигурации Platform.sh).

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# .platform.app.yaml

# Этот файл описывает приложение. Вы можете иметь несколько приложений
# в одном проекте.

# Имя этого приложения. Должно быть уникальным в проекте.
name: myphpproject

# Тип строящегося приложения.
type: php:5.6
build:
  flavor: symfony

# Отношения приложения с сервисами или другими приложениями.
# Левая сторона - имя отношений в том виде, в котором оно будет отображено
# приложению в переменной PLATFORM_RELATIONSHIPS variable. Правая сторона -
# в форме `<service name>:<endpoint name>`.
relationships:
    database: 'mysql:mysql'

# Конфигурация приложения при отображении в сети.
web:
    # Публичный каталог приложения, относительно его корня.
    document_root: '/web'
    # Скрипт фронт контроллера для отправки нестатистических запросов.
    passthru: '/app.php'

# Размер дискового накопителя приложения (в Мб).
disk: 2048

# Монтирования, которые будут проведены при развёртывании пакета.
mounts:
    '/var/cache': 'shared:files/cache'
    '/var/logs': 'shared:files/logs'

# Приёмы, которые будут проведены при развёртывании пакета.
hooks:
    build: |
      rm web/app_dev.php
      bin/console --env=prod assetic:dump --no-debug
    deploy: |
      bin/console --env=prod cache:clear

Для лучших практик, вам также стоит добавить папку .platform в корне вашего Git хранилища, содержащую следующие файлы:

1
2
3
4
5
# .platform/routes.yaml
"http://{default}/":
    type: upstream
    # первая часть должна быть именем вашего проекта
    upstream: 'myphpproject:php'
1
2
3
4
# .platform/services.yaml
mysql:
    type: mysql
    disk: 2048

Пример этих конфигураций можно найти на GitHub. Список доступных сервисов можно найти в документации Platform.sh.

Сконфигурируйте доступ к БД

Platform.sh переопределяет специальную конфигурацию вашей БД путём импорта следующего файла (ваша роль заключается в добавлении этого файла в вашу кодовую базу):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// app/config/parameters_platform.php
<?php
$relationships = getenv("PLATFORM_RELATIONSHIPS");
if (!$relationships) {
    return;
}

$relationships = json_decode(base64_decode($relationships), true);

foreach ($relationships['database'] as $endpoint) {
    if (empty($endpoint['query']['is_master'])) {
      continue;
    }

    $container->setParameter('database_driver', 'pdo_' . $endpoint['scheme']);
    $container->setParameter('database_host', $endpoint['host']);
    $container->setParameter('database_port', $endpoint['port']);
    $container->setParameter('database_name', $endpoint['path']);
    $container->setParameter('database_user', $endpoint['username']);
    $container->setParameter('database_password', $endpoint['password']);
    $container->setParameter('database_path', '');
}

# Сохранить сессию в /tmp.
ini_set('session.save_path', '/tmp/sessions');

Убедитесь в том, что этот файл указан в ваших импортах:

1
2
3
# app/config/config.yml
imports:
    - { resource: parameters_platform.php }

Разверните ваше приложение

Теперь вам нужно добавить удалённый объект к Platform.sh в вашем Git хранилище (скопируйте команду, которую вы видите в пользовательском веб-интерфейсе Platform.sh):

1
$ git remote add platform [PROJECT-ID]@git.[CLUSTER].platform.sh:[PROJECT-ID].git
PROJECT-ID
Уникальный идентификатор вашего проекта. Что-то вроде kjh43kbobssae
CLUSTER
Локация сервера, где развёртывается ваш проект. Это может быть eu или us

Зафиксируйте специальные файлы Platform.sh, созданные в предыдущем разделе:

1
2
3
$ git add .platform.app.yaml .platform/*
$ git add app/config/config.yml app/config/parameters_platform.php
$ git commit -m "Adding Platform.sh configuration files."

Протолкните вашу кодовую базу в новосозданный удалённый объект:

1
$ git push platform master

Вот и всё! Ваше приложение развёртывается на Platform.sh и вскоре вы сможете получить доступ к нему в вашем браузере.

С этого момента, каждое внесенное вами изменение кода будет продвигаться в Git, чтобы повторно развернуть ваше окружение на Platform.sh.

Больше информации о миграции вашей БД и файлов можно найти в документации Platform.sh.

Разверните новый сайт

Вы можете начать новый проект Platform.sh. Выберите план разработки и пройдите процесс оформления заказа.

Как только ваш проект будет готов, дайте ему имя и выберите Создать новый сайт. Выберите стек Symfony с начальной точкой Стандарт.

Вот и всё! Ваше приложение Symfony будет самозагружено и развёрнуто. Вскоре вы сможете увидеть его в вашем браузере.

Эта документация является переводом официальной документации Symfony и предоставляется по свободной лицензии CC BY-SA 3.0.