микрозаймы онлайн займы на карту займы по паспорту

Configurações de ambientes 10

Olá pessoal, nesse post falaremos sobre como você pode configurar diferentes ambientes na sua aplicação com Laravel. Sabemos que é um problema você ter uma configuração X na sua máquina (podendo ser de banco de dados, ou qualquer outra), e no seu servidor de produção ser outra. Ai a cada vez que for fazer um pull/push no GIT/SVN, acaba encontrando conflitos. Iremos resolver isso de uma forma simples e prática :-)

Nesse post usaremos como exemplo a configuração de banco de dados, mas podemos usar esse exemplo para qualquer outro tipo de config. que precisar.

1 – Ambientes no Laravel

O primeiro é o mais simples, e já descrito na documentação do Laravel, aqui.
Na raiz da sua app, abra o arquivo paths.php, veja que o mesmo tem um array com os ambientes existentes:

$environments = array(

	'local' => array('http://localhost*', '*.dev'),

);

Com isso, se sua url de desenvolvimento for localhost, ou caso tenha criado um virtualhost que tenha no final .dev, seu ambiente será o local (índice do array). Para utilizá-lo, crie uma pasta com o nome local em /application/config. Note que você pode criar quantos ambientes quiser.
Tudo que for colocado nessa pasta, irá substituir as configurações que estão em /application/config, caso seu ambiente seja o local.
Por exemplo, vamos configurar uma conexão de banco diferente para o ambiente local, que normalmente não será a mesma da config. de produção. Para isso, criamos o arquivo /application/config/local/database.php

<?php

return array(

	'profile' => true,

	'default' => 'mysql',

	'connections' => array(

		'mysql' => array(
			'driver'   => 'mysql',
			'host'     => 'localhost',
			'database' => 'database_name',
			'username' => 'root',
			'password' => 'root',
			'charset'  => 'utf8',
			'prefix'   => '',
		)

	)

);

Assim definimos que no ambiente local teremos essa configuração de banco. Ai no arquivo em application/config/database.php, colocamos as config de produção, deixamos o profile como false para evitar I/O, mudamos user e senha para o de produção, e etc.

2- Dados sensitivos

Caso esteja trabalhando em um projeto colaborativo, você talvez não queira deixar no seu código informações sensitivas como a conexão de banco de dados de produção.
Uma solução para isso é, no seu ambiente de produção, setar uma variável de ambiente no seu virtualhost, e colocar no seu ambiente de produção, para ler essa variável.
No seu virtualhost, teria algo como:

<VirtualHost *:80>
    ServerName mysite.com
    DocumentRoot /path/to/mysite/public
 
    SetEnv DB_PASS "my_db_pass"
 
    <Directory /path/to/mysite/public>
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

E no seu arquivo application/config/database.php, na linha em que define a senha, seria assim:

return array(

	'profile' => true,

	'default' => 'mysql',

	'connections' => array(

		'mysql' => array(
			'driver'   => 'mysql',
			'host'     => 'localhost',
			'database' => 'database_name',
			'username' => 'root',
			'password' => getenv('DB_PASS'),
			'charset'  => 'utf8',
			'prefix'   => '',
		)

	)

);

E é isso galera, espero que tenha ajudado. Caso tenham alguma dúvida, crítica, ou uma forma melhor/diferente para essas configurações, deixem um comentário logo abaixo. Abraços !

  • Flavio Zantut

    Ótimo post, outra dica sobre ambientes de desenvolvimento é usar o dnsmasq para não ter que ficar usando localhost/projeto, eu por exemplo uso projeto.dev e cada dominio aponta para uma pasta diferente.

    • http://brayanrastelli.com/ Brayan Rastelli

      Flavio, desculpe pela pergunta, mas qual a diferença de criar virtualhosts e utilizar dnsmasq?
      Obrigado pelo feedback :)

      • Flavio Zantut

        Brayan, você pode utilizar o dnsmasq em conjunto com virtualhost sem ter que adicionar manualmente um host ao seu ambiente.

        • Evandro Ribeiro

          Eu uso um script para fazer isso para mim de forma automatizada…

  • Zizaco Zizuini

    Muito bom!

    • http://brayanrastelli.com/ Brayan Rastelli

      Thanks :)

  • http://www.facebook.com/profile.php?id=1389544587 Fabio Vedovelli

    A dica de SET_ENV foi a melhor! o/

    • http://twitter.com/RILDOLHOWOW RILDO MENDES

      Muito boa, mesmo!

    • Marcel De Marchi Cunha

      Cara, essa do SET_ENV me ajudou muito. Independente de trabalhar com LARAVEL ou não, eu tinha esse problema de ter que alterar sempre a senha do banco pra publicar no GIT. Putz agora resolveu tudo. Muito bom.

  • Guest

    Pessoal, estou iniciando com o Laravel agora, e isto mudou um pouco, não encontro mais a .env e muito menos o paths.php… Como faço para setar ambiente?