Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save brunofonseca/2e5803e4155517d6966a to your computer and use it in GitHub Desktop.
Save brunofonseca/2e5803e4155517d6966a to your computer and use it in GitHub Desktop.

Configuração de subdomínios local (Apache + DNSmasq + Laravel)

Este tutorial tem como objetivo, a configuração do seu apache local para trabalhar com subdominios no laravel.

O que será utilizado:

  • Laravel
  • Servidor Apache
  • Servidor DNS/DHCP
  • Linux

1ª Etapa - Instalação do Laravel

vou partir do princípio que você não é um arigó e já sabe instalar o laravel ;), eu criei minha pasta com o nome de multi-tenant, dê o nome que quiser a sua

2ª Etapa - Instalar um servidor DNS para uso local

execute no seu terminal

	sudo apt-get install dnsmasq

edite o arquivo /etc/dnsmasq.conf e adicione o seguinte conteúdo:

	address=/multi.app/127.0.0.1

3ª Etapa - Configurar um virtual host no apache

Crie um arquivo em /etc/apache2/sites-enabled com qualquer nome, dei ao meu o nome de multi-tenant-hosts.conf com o seguinte conteúdo:

	# Host Principal e Subdominios devem apontar para a public do laravel
	# o roteamento dos subdominios ficará a cargo do laravel
	<VirtualHost *:80>
		DocumentRoot "/home/daniel/Projetos/multi-tenant/public"
		ServerName multi.app
		DirectoryIndex index.php
		ServerAlias multi.app
		ServerAlias *.multi.app
		<Directory "/home/daniel/Projetos/multi-tenant/public">
			Require all granted 
		</Directory>
	</VirtualHost>

4ª Etapa - colocar no .env a entrada do dominio que será utilizado

	APP_DOMAIN=multi.app

5ª Etapa - Criar um grupo de rotas apontando para o seu dominio

	// Rotas que pertencem a um subdominio deverão ser registradas dentro do grupo
	// Rotas para subdominio devem sempre ser declaradas antes das outras
	Route::group(['domain' => '{account}.' . env('APP_DOMAIN')], function () {
	    Route::get('do-something', function ($account) {
	        //
	    });
	});

	// As demais rotas, registra-se normal
	Route::get('/', function(){
		return view('welcome');
	});

6ª Etapa - (e última) restartar seu apache e servidor dns

Abra seu terminal e execute:

	sudo /etc/init.d/dnsmasq restart
	sudo service apache2 restart

neste momento, você já pode acessar o dominio principal http://multi.app e seus subdominios http://teste.multi.app, http://outro-teste.multi.app que o laravel já vai estar roteando tudo certinho. Fica aqui minha experiência e aprendizado, espero que gostem!

Author: Daniel Lima!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment