Implementando o Projeto Symfony usando MySQL para Heroku.

Na página oficial do Symfony você pode encontrar um tutorial de como implantar o projeto Symfony no Heroku ( http://symfony.com/doc/current/cookbook/deployment/heroku.html ). Documento semelhante você pode encontrar na página do Heroku ( https://devcenter.heroku.com/articles/getting-started-with-symfony2 ).

Esses documentos são bons, mas não consegui encontrar informações sobre como configurar corretamente as conexões de banco de dados.

Breve guia de como implantar o projeto Symfony no Heroku

Para começar, você precisa instalar algumas ferramentas necessárias (acho que você tem essas coisas, mas quero lembrar disso).

  1. A primeira coisa que você precisa é o Heroku Toolbelt ( https://toolbelt.heroku.com ).
  2. Em seguida, você precisa do Git ( http://git-scm.com ).

Depois de instalar todas as ferramentas necessárias, você pode seguir para as próximas etapas.

Abra o console e vá para o seu projeto:

$ cd ~/yourSymfonyProject

Inicialize o novo repositório Git e confirme o estado atual do seu código.

$ git init
Initialized empty Git repository in ~/yourProjectSymfony/.git/
$ git
add .
$ git commit
-m "First commit"
[master (root-commit) f432531] First commit 89 files changed, 7865 insertions(+)

Agora crie Procfile onde você pode definir seu web / diretório.

$ touch Procfile
$ echo
"web: bin/heroku-php-apache2 web/" > Procfile
$ git
add .
$ git commit
-m "Procfile for Apache and PHP"
[master 45343as] Procfile for Apache and PHP 1 file changed, 1 insertion(+)

Em seguida, você deve fazer o login no heroku toolbelt, então digite:

$ heroku login

E use suas credenciais.

Após o sucesso do login, você pode criar um novo aplicativo Heroku:

$ heroku create
Creating rusty-server-1211 in organization heroku... done, stack is xakar-15 http://rusty-server-1211.herokuapp.com/ | git@heroku.com:rusty-server-1211.git
Git remote heroku added

Sucesso? Impressionante! Você está pronto para implantar seu aplicativo:

$ git push heroku master

Se você teve algum problema relacionado às impressões digitais SSH, este artigo deve ser útil: https://devcenter.heroku.com/articles/git-repository-ssh-fingerprints .

Se você não viu nenhum erro, seu projeto foi implantado com sucesso.

Este foi um pequeno guia sobre como implantar o projeto Symfony no Heroku, se você precisar de mais informações, pode ver os documentos no início deste protocolo.

Meu problema

No meu projeto Symfony utilizo MySQL e Doctrine ORM, após o processo de deploy vi uma tela em branco e nos logs encontrei erros relacionados com a conexão do banco de dados. Foi lógico, não montei nenhum banco de dados …

Minha solução

Vá para o seu projeto no console e adicione o novo complemento Heroku: ClearDB (banco de dados MySQL). A versão gratuita tem 5 MB de armazenamento (mais informações: https://addons.heroku.com/cleardb ).

Adicione o complemento ClearDB ao seu aplicativo Heroku

Digite no console:

$ cd ~/yourSymfonyProject
$ heroku addons
:add cleardb:ignite

Verifique se a variável de ambiente do banco de dados foi definida:

$ heroku config:get CLEARDB_DATABASE_URL
mysql
://suausya5443:adf4252@us-cdbr-east.cleardb.com/heroku_db?reconnect=true

Definir arquivos de configuração em seu projeto

Você adicionou o banco de dados e a próxima etapa é configurar os arquivos de configuração.

EDITAR CONFIG.YML

Se você usar arquivos yaml para configuração, abra ~ / yourSymfonyProject / config / config.yml

Nas primeiras linhas você deverá ver a seção de importações:

imports:
- { resource: parameters.yml }
- { resource: security.yml }

Nesta seção, remova a importação de parameters.yml (você pode copiar esta linha antes de excluir). Resultado:

imports:
- { resource: security.yml }

EDITAR CONFIG_DEV.YML

Abra ~ / yourSymfonyProject / config / config_dev.yml e encontre uma seção semelhante ( importações ) neste arquivo:

imports:
- { resource: config.yml }

Adicione a linha removida de config.yml à seção antes da linha. Resultado:- { resource: config.yml }

imports:
- { resource: parameters.yml }
- { resource: config.yml }

CRIAR ARQUIVO DE PARÂMETROS PARA PRODUÇÃO

Seu ambiente de desenvolvedor está pronto para uso, mas precisamos configurar o ambiente de produção.

Crie um novo arquivo PHP para parâmetros no diretório de configuração . Eu criei o arquivo chamado parameters_production.php , caminho completo: ~ / yourSymfonyProject / config / parameters_production.php

<?php
$db
= parse_url(getenv('CLEARDB_DATABASE_URL'));

$container
->setParameter('database_driver', 'pdo_mysql');
$container
->setParameter('database_host', $db['host']);
$container
->setParameter('database_port', $db['port']);
$container
->setParameter('database_name', substr($db["path"], 1));
$container
->setParameter('database_user', $db['user']);
$container
->setParameter('database_password', $db['pass']);
$container
->setParameter('secret', getenv('SECRET'));
$container
->setParameter('locale', 'en');
$container
->setParameter('mailer_transport', null);
$container
->setParameter('mailer_host', null);
$container
->setParameter('mailer_user', null);
$container
->setParameter('mailer_password', null);

Todas as linhas acima são necessárias para iniciar o aplicativo e acho que está tudo claro.

A função obtém uma variável de ambiente do seu servidor (verificamos se essa variável existe acima no complemento Adicionar ClearDB à sua seção do aplicativo Heroku ).getenv('CLEARDB_DATABASE_URL')

A segunda linha interessante é aqui, você pode ver que precisa definir uma nova variável de ambiente no servidor. Vá para o console e digite:$container->setParameter('secret', getenv('SECRET'));

$ heroku config:set SECRET=your_super_token
Setting config vars and restarting rusty-server-1211... done, v19
SECRET
: your_super_token

APPEND arquivo com parâmetros

Quando você tiver um novo arquivo de parâmetros, poderá anexá-lo ao config.

Abra ~ / yourSymfonyProject / config / config_prod.yml e adicione seu novo arquivo à seção de importação na primeira posição.

imports:
- { resource: parameters_production.php }
- { resource: config.yml }

DEPLOY

Acho que está tudo bem, então você pode implantar suas alterações.

Vá para o console e confirme as alterações.

$ git add .
$ git commit
-m "Updated production config"
[master 46462ab] Updated production config 4 files changed, 24 insertions (+++-)

E…

$ git push heroku master

Agora, provavelmente, seu banco de dados está limpo, então você criará o banco de dados e migrará seu esquema.

$ heroku run php app/console doctrine:database:create
$ heroku run php app
/console doctrine:schema:update --force

Se tudo estiver bem feito, você verá instalar as bibliotecas necessárias e outras dependências.
Após a implantação, verifique os resultados do seu trabalho. Digite no console:

heroku open

Acho que você está vendo seu site ao vivo, muito bem!

Alguma dúvida ou problema? Escreva um comentário.