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).
- A primeira coisa que você precisa é o Heroku Toolbelt ( https://toolbelt.heroku.com ).
- 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.