Tutorial configurar domínio no Ubuntu com servidor Apache

Objetivos

  • Entender o que é um domínio
  • Saber o que é o servidor Apache
  • Passo a passo para aprender a criar um arquivo de configuração para um novo domínio no servidor apache e Ubuntu

O que é um domínio?

Do ponto de vista prático, o domínio ou nome de domínio, muitas vezes é sua marca na internet. É um nome que direciona o usuário ao website correspondente.

Por trás deste processo, temos o nome de domínio como um apontador. Ele direciona o tráfego de usuário para um endereço IP do servidor onde o website está hospedado.

O servidor por sua vez, fica encarregado em disponibilizar as páginas do website para serem exibidas no navegador.

O que é o servidor Apache?

Genericamente definimos um servidor de internet como o responsável por exibir as páginas de um website. Mas no geral, um servidor é responsável por servir. Ele pode ser configurado para servir páginas de websites (servidor http), servir emails (servidor de emails), etc.

Temos então o aspecto físico do servidor, sendo o hardware: o computador propriamente dito. E o aspecto de software, que é o responsável por realizar sistematicamente as tarefas programadas.

Assim, o servidor Apache (Apache2), citado neste tutorial, é o software de servidor web, ou servidor http. Este mesmo serviço de servir páginas poderia ser realizado por outros softwares, como o lighttpd, nginx, etc.

Requisitos para seguir o tutorial

É esperado que já tenha um domínio registrado e que já tenha realizado as configurações DNS, apontando o domínio para o servidor. É esperado também que já tenha um servidor http configurado, neste caso, o Apache.
Então, neste tutorial, será ensinado como criar o arquivo de configuração deste domínio: especificando o local dos arquivos do website, as permissões de escrita de url, o local dos arquivos de log, etc. Com o arquivo de configuração criado e configurado corretamente, é possível então ter o domínio funcional no servidor.

Tutorial para aprender configurar um novo domínio no servidor web Apache com sistema operacional Ubuntu

Passo 1

Primeiro passo é se conectar no servidor. Caso não utilize uma chave de acesso, é possível se conectar com usuário@IP pelo prompt. Neste exemplo, nos conectamos no servidor que possui o IP 15.229.47.227, utilizando o nome de usuário ubuntu.

ssh ubuntu@15.229.47.227

Caso utilize uma chave de conexão, como as que geralmente são criadas na Amazon AWS para os servidores EC2, tenha certeza que você está no mesmo diretório da sua chave e utilize o comando:

ssh -i ChaveVPCaws.pem ubuntu@15.229.47.227

No exemplo acima, nossa chave tem o nome de ChaveVPCaws.pem, utilizamos nome de usuário ubuntu e nos conectamos no servidor que possui o IP 15.229.47.227.

Ubuntu - Conectar no servidor por ssh utilizando chave de acesso

Passo 2

Com o login no servidor realizado com sucesso, vamos caminhar até a pasta de produção de páginas do servidor web:

cd /var/www/html

Vamos dar uma olhada em quais arquivos já existem, e quais diretórios:

ls -lah

Neste exemplo temos um servidor recém criado. Não possui nenhum arquivo configurado na pasta de produção de páginas web. O arquivo de index.html, é o padrão do apache.

Ubuntu - ir para a pasta /var/www/htmlUbuntu - mostrar arquivos dentro da pasta /var/www/html

Passo 3

É interessante neste momento criar o diretório para o novo domínio. Lembre-se de trocar o nome novodominio.com.br abaixo, pelo o nome do seu novo domínio:

sudo mkdir novodominio.com.br

Gosto de utilizar o próprio nome do domínio como nome do diretório, para que fique tudo muito bem organizado.

Ubuntu - como criar uma pasta para hospedar novo website

Passo 4

Pensando agora nos responsáveis em gerenciar o website, é interessante ter um usuário independente para este processo. Vamos criar então um novo usuário chamado webmaster1:

sudo useradd -m webmaster1

Aproveitamos e criamos uma senha para o novo usuário:

sudo passwd webmaster1

Lembre-se de anotar o nome de usuário e sua senha em um local seguro.

Ubuntu - como criar um novo usuário para gerenciar um website

Passo 5

Agora vamos dar permissão de “dono” para o diretório que criamos para o novo usuário. E a permissão de grupo para o servidor apache (www-data):

sudo chown webmaster1:www-data /var/www/html/nomedominio.com.br -R

Lembre de alterar o comando acima, substituindo o nomedominio.com.br pelo seu novo domínio.

Ubuntu - definir usuário e grupo responsável por pastas e arquivos de um website

Passo 6

Importante também definir a permissão geral do diretório raiz do website, com o comando chmod.

sudo chmod 755 /var/www/html/nomedominio.com.br

Ubuntu - definir permissão de acesso a pastas de um website

Passo 7

Com o diretório de produção do site criado e configurado, juntamente com o usuário responsável, vamos agora verificar os arquivos de configuração do apache para domínios existentes no servidor:

cd /etc/apache2/sites-available

E agora verificar os arquivos existentes:

ls -lah

Como podem observar, há apenas 2 arquivos existentes, pois o servidor é recém criado. Estes são os arquivos base de configuração para o acesso ao servidor.

Ubuntu - ir para a pasta sites-available do Apache para verificar os arquivos de configuração existentes
Ubuntu - mostrar arquivos dentro da pasta sites-available do apache

Passo 8

Um passo interessante e muito útil, é a criação de 3 templates de arquivos de configuração para cada domínio. Desta forma, fica mais fácil a configuração de novos domínios, pois já teremos um modelo pronto.

Template 1: Acesso ao domínio por HTTP e alias WWW (sem SSL)

Vamos criar então o primeiro arquivo de template:

sudo nano nomedominio.com.br.http.template

Agora precisamos copiar para dentro deste arquivo o seguinte modelo de configuração:

Repare na linha de Redirect 301, ela serve para redirecionar automaticamente o acesso com www., para o acesso sem este prefixo. Se não quiser esta opção, lembre de remover esta linha.

Salve e feche o editor nano.

Ubuntu - template arquivo configuração domínio sites-available apache com acesso http e alias www

Template 2: Acesso ao domínio por HTTPS (SSL) (sem WWW)

Vamos criar então o segundo arquivo de template:

sudo nano nomedominio.com.br.ssl.template

Agora precisamos copiar o seguinte modelo de configuração para dentro do arquivo:

Perceba que este modelo não utiliza a diretiva de ServerAlias.
Lembre de salvar e fechar o editor nano.

Ubuntu - template arquivo configuração domínio sites-available apache com acesso https e sem alias www

Template 3: Acesso ao domínio por HTTPS (SSL) e com WWW (www é visto como um subdomínio)

Vamos criar então o terceiro arquivo de template, para que seja possível acessar o domínio com o prefixo www. e com SSL:

sudo nano nomedominio.com.br.www.ssl.template

Repetimos o processo de copiar as informações abaixo para dentro do arquivo no nano:

Ainda dentro do editor nano, lembre-se de salvar e fechar.

Repare que este modelo acima é muito parecido com o modelo do template 2. A única mudança é a inserção do prefixo www no ServerName. Uma explicação rápida: o prefixo www é visto como um subdomínio, e então se for gerar um certificado para acesso com prefixo, é melhor ter um arquivo de configuração independente. Repare que os demais campos nomedominio.com.br não são alterados (não precisa inserir o www), pois o www é canônico para o acesso do usuário ao site: vai mostrar as mesmas páginas do site, no mesmo diretório, ter o mesmo arquivo de log, etc…

Ubuntu - template arquivo configuração domínio sites-available apache com acesso https e www

Passo 9

Com os arquivos de template prontos, vamos seguir com o exemplo da configuração de um novo domínio no servidor. Supondo então um novo domínio com o nome de:

viniciuspaes.com.br

Precisamos agora criar os arquivos de configuração para este novo domínio. Vamos fazer uma cópia dos arquivos de template alterando o nome e a extensão para .conf

sudo cp nomedominio.com.br.http.template    viniciuspaes.com.br.http.conf
sudo cp nomedominio.com.br.ssl.template     viniciuspaes.com.br.ssl.conf
sudo cp nomedominio.com.br.www.ssl.template viniciuspaes.com.br.www.ssl.conf

Ubuntu - fazendo cópia dos arquivos de template para os nomes de domínio

Passo 10

Precisamos agora editar os 3 arquivos de configuração criados, alterando o nome de domínio base (nomedominio.com.br) para o novo domínio a ser configurado (viniciuspaes.com.br).

Arquivo de Configuração 1: Acesso ao domínio por HTTP e alias WWW (sem SSL)

Necessário então abrir o arquivo com o editor nano para realizar as modificações:

sudo nano viniciuspaes.com.br.http.conf

Atualizar os campos de nomedominio.com.br para viniciuspaes.com.br:

Lembrando novamente que a linha do comando “Redirect 301” serve para redirecionar o acesso com www para sem o www de prefixo. Particularmente prefiro o acesso sem www, para deixar a url a mais curta possível (ou seja, mantenho esta linha do jeito que está). Agora grave as alterações (salvar) e feche o editor nano.

Ubuntu - arquivo de configuração para um novo domínio e website no apache

Arquivo de Configuração 2: Acesso ao domínio por HTTPS (SSL) (sem WWW)

Necessário então abrir o arquivo com o editor nano para realizar as modificações:

sudo nano viniciuspaes.com.br.ssl.conf

Atualizar os campos de nomedominio.com.br para viniciuspaes.com.br:

Agora grave as alterações (salvar) e feche o editor nano.

Ubuntu - arquivo de configuração para um novo domínio e website no apache com SSL

Arquivo de Configuração 3: Acesso ao domínio por HTTPS (SSL) e com WWW (www é visto como um subdomínio)

Necessário então abrir o arquivo com o editor nano para realizar as modificações:

sudo nano viniciuspaes.com.br.www.ssl.conf

Atualizar os campos de nomedominio.com.br para viniciuspaes.com.br. Ficar atento que somente o campo ServerName deve conter o prefixo www.

Agora grave as alterações (salvar) e feche o editor nano.

Ubuntu - arquivo de configuração para um novo subdomínio canônico no apache com SSL

Passo 11

É importante ressaltar que já deixamos preparados 3 arquivos de configuração para o domínio, mas estes arquivos precisam ser ativados. Neste tutorial não vamos abordar a instalação de certificados SSL. Então só vamos ativar o arquivo de configuração do acesso ao domínio por HTTP com o alias www (arquivo de configuração 1).
Utilizamos então o comando abaixo para ativar o arquivo de configuração para o domínio viniciuspaes.com.br:

a2ensite viniciuspaes.com.br.http.conf

Ubuntu - ativando um novo domínio e website no apache

Passo 12

A etapa final deste tutorial é reiniciar o servidor apache, para que ele carregue o novo arquivo de configuração do domínio que ativamos. Utilizamos o seguinte comando:

sudo service apache2 restart

Ubuntu - reiniciando o servidor apache para que as modificações tenham efeito

Considerações Finais

Como vimos, este tutorial abordou a criação de arquivos de template para facilitar a configuração de novos domínios no servidor. Pode parecer um esforço exagerado, mas pense que vá adicionar novos domínios ao longo do tempo, ter arquivos de template já prontos, facilita bastante o processo.
O acesso ao domínio com o prefixo www é entendido como se www fosse um subdomínio. Para facilitar então a gestão de certificados SSL no futuro, evitamos utilizar o campo ServerAlias no arquivo de configuração com SSL. Desta forma, ao gerar os certificados no futuro, o próprio processo de automação tem maior facilidade em editar os arquivos de configuração quando estes estão separados.

Conclusão

O processo de criar arquivos de configuração para novos domínios é bastante simples. Tomamos um cuidado extra em já deixar pronto os arquivos de configuração para acesso ao domínio com certificado SSL. Em um próximo tutorial, vamos ensinar como instalar certificados SSL no servidor e o processo será extremamente simples com esta dinâmica adotada.
Ficou com alguma dúvida neste tutorial? Deixe sua mensagem nos comentários que farei o possível para responder!