Documentação do Symfony - versão 3.1
Renderizada do repositório symfony-docs-pt-BR no Github
Este cookbook passo-a-passo descreve como implantar uma aplicação web Symfony para o Platform.sh. Você pode ler mais sobre como usar o Symfony com Platform.sh na documentação oficial do Platform.sh.
Neste guia, presume-se que sua base de código já está versionada com Git.
Você precisa se inscrever em um projeto Platform.sh. Escolha o plano de desenvolvimento e siga o processo de checkout. Uma vez que seu projeto está pronto, forneça-lhe um nome e escolha: Importar um site existente.
Para implantar sua aplicação Symfony no Platform.sh, você simplesmente precisa adicionar um
.platform.app.yaml
no raiz de seu repositório Git, que irá dizer ao
Platform.sh como implantar a sua aplicação (leia mais sobre os
arquivos de configuração do 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
# This file describes an application. You can have multiple applications
# in the same project.
# The name of this app. Must be unique within a project.
name: myphpproject
# The type of the application to build.
type: php:5.6
build:
flavor: symfony
# The relationships of the application with services or other applications.
# The left-hand side is the name of the relationship as it will be exposed
# to the application in the PLATFORM_RELATIONSHIPS variable. The right-hand
# side is in the form `<service name>:<endpoint name>`.
relationships:
database: 'mysql:mysql'
# The configuration of app when it is exposed to the web.
web:
# The public directory of the app, relative to its root.
document_root: '/web'
# The front-controller script to send non-static requests to.
passthru: '/app.php'
# The size of the persistent disk of the application (in MB).
disk: 2048
# The mounts that will be performed when the package is deployed.
mounts:
'/var/cache': 'shared:files/cache'
'/var/logs': 'shared:files/logs'
# The hooks that will be performed when the package is deployed.
hooks:
build: |
rm web/app_dev.php
bin/console --env=prod assetic:dump --no-debug
deploy: |
bin/console --env=prod cache:clear
|
Para melhor prática, você também deve adicionar um diretório .platform
no raiz
do seu repositório Git, que contém os seguintes arquivos:
1 2 3 4 5 | # .platform/routes.yaml
"http://{default}/":
type: upstream
# the first part should be your project name
upstream: 'myphpproject:php'
|
1 2 3 4 | # .platform/services.yaml
mysql:
type: mysql
disk: 2048
|
Um exemplo dessas configurações podem ser encontrado no GitHub. A lista de serviços disponíveis pode ser encontrada na documentação do Platform.sh.
O Platform.sh sobrescreve a configuração específica do banco de dados através da importação do seguinte arquivo (você é que deve adicionar este arquivo em sua base de código):
// 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', '');
}
# Store session into /tmp.
ini_set('session.save_path', '/tmp/sessions');
Certifique-se que esse arquivo está listado em seu imports:
1 2 3 | # app/config/config.yml
imports:
- { resource: parameters_platform.php }
|
Agora você precisa adicionar um remoto para o Platform.sh em seu repositório Git (copie o comando que você vê na UI Web do Platform.sh):
1 | $ git remote add platform [PROJECT-ID]@git.[CLUSTER].platform.sh:[PROJECT-ID].git
|
PROJECT-ID
kjh43kbobssae
CLUSTER
eu
ou us
Faça o commit dos arquivos específicos do Platform.sh criados na seção anterior:
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."
|
Faça o push da sua base de código para o remoto recém-adicionado:
1 | $ git push platform master
|
É isso! Sua aplicação está sendo implantada no Platform.sh e em breve você será capaz de acessá-la no seu navegador.
Para cada alteração de código que você fizer a partir de agora será feito um push para o Git, a fim de reimplantar seu ambiente no Platform.sh.
Mais informações sobre como migrar seu banco de dados e arquivos podem ser encontradas na documentação do Platform.sh.
Você pode começar um novo projeto Platform.sh. Escolha o plano de desenvolvimento e siga através do processo de checkout.
Uma vez que seu projeto está pronto, forneça-lhe um nome e escolha: Criar um novo site. Escolha a stack Symfony e um ponto de partida, como Standard.
É isso! Sua aplicação Symfony será inicializada e implantada. Em breve você poderá vê-la no seu navegador.