Instale o Apache no Ubuntu 18.04 Bionic Beaver Linux

Instale o Apache no Ubuntu 18.04 Bionic Beaver Linux

Objetivo

Aprenda como instalar o Apache no Ubuntu 18.04, Como configurar hosts virtuais, configurar o firewall e usar certificados SSL para uma conexão segura

Requisitos

  • Permissões de raiz

Convenções

  • # - requer que os comandos Linux sejam executados com privilégios de raiz também
    diretamente como usuário root ou por uso de sudo comando
  • $ - Requer que os comandos do Linux sejam executados como um usuário não privilegiado regular

Introdução

O servidor da Web Apache não precisa de grandes apresentações: o software de código aberto, lançado pela Apache Foundation, é um dos servidores da web mais usados ​​do mundo. Neste tutorial, veremos como instalá -lo, ajustar a configuração do firewall para permitir o tráfego HTTP e HTTPS e configurar hosts virtuais no Ubuntu 18.04.

Instalação

Instalando o servidor da Web Apache no Ubuntu 18.04 Bionic Beaver é um processo realmente direto:

$ sudo apt-get update && apt-get install apache2

Os scripts de instalação do Ubuntu cuidarão de iniciar e permitir o Apache2 serviço na inicialização.

Configuração do firewall

Para acessar o conteúdo padrão servido pelo Apache, na mesma máquina em que o servidor está em execução, teremos que iniciar um navegador da web e navegar para LocalHost Na barra de endereço. Se tudo estiver configurado corretamente, uma página deve nos receber com o “Funciona!" mensagem:

Página de boas -vindas do Apache

Se um firewall estiver ativado em nosso sistema (como deveria), para tornar o conteúdo acessível de fora de nossa máquina, precisamos permitir o tráfego de entrada na porta 80. O comando para executar depende do gerente do firewall em uso. Por exemplo, ao usar ufw (Padrão do Ubuntu), devemos executar:

$ sudo ufw permitir http

Da mesma forma, se estiver usando Firewalld, Podemos correr:

$ sudo firewall-cmd --permanent --add-service = http && firewall-cmd--reload

Observe que o comando acima terá seu efeito na zona de firewalld padrão. Se quisermos operar em outro, devemos especificá -lo com o --zona opção.



Configurando um host virtual

O servidor da Web Apache tem a capacidade de executar mais de um site na mesma máquina. Cada site (um host virtual na terminologia do Apache) que deve ser servido deve ter sua própria configuração. Um host virtual pode ser IP ou nomeado baseado.

Neste tutorial, focaremos no segundo tipo, pois é mais fácil de configurar e não requer vários endereços IP (hosts virtuais baseados em nomes permitem que muitos sites compartilhem o mesmo endereço).

O host virtual padrão

No Ubuntu, o host virtual padrão é definido no /etc/Apache2/sites-Audência diretório, dentro do 000-default.conf arquivo. Vamos dar uma olhada:

 [… .] Serveradmin webmaster@localhost documentroot/var/www/html [… .] ErrorLog $ apache_log_dir/erro.Log CustomLog $ apache_log_dir/acesso.log combinado [… .]  
cópia de

O A diretiva na linha 1 é usada para agrupar as configurações usadas pelo Apache para um host virtual específico. A primeira coisa que vimos definida nele é o *: 80 instrução. Isso indica o endereço IP e a porta usados ​​pelo host virtual.

Vários hosts virtuais podem ser definidos no mesmo arquivo ou seguindo o esquema "Um host virtual por arquivo". Nos dois casos, a primeira definição é considerada o padrão, se nenhum outro host virtual for correspondido pela solicitação do cliente.

O ServerAdmin Diretiva na linha 3is opcional e é usado para especificar o endereço de contato que o servidor da Web será exibido em caso de mensagens de erro. Normalmente, queremos fornecer um endereço de e -mail válido como argumento desta diretiva, pois o servidor da web usará Mailto: nele, para facilitar o contato com o administrador.

Documentroot na linha 4is obrigatório e é essencial para a configuração do host virtual. O argumento desta instrução deve ser um caminho de sistema de arquivos válido. O diretório fornecido será considerado o diretório raiz do host virtual e não deve conter um '/' à direita '/'. Nesse caso, o diretório raiz do documento é /var/www/html. Se dermos uma olhada em seu conteúdo, vemos que ele contém o índice.html página usada como a página de boas -vindas do servidor que vimos antes.

As duas últimas instruções na linha 8 - 9 fornecidas neste virtualhost são ErrorLog e CustomLog. Ao usar o primeiro, definimos o arquivo para o qual o servidor registrará os erros ocorridos. O segundo, em vez disso, é usado para registrar as solicitações enviadas ao servidor no formato especificado (você pode usá-lo como uma referência para um conhecimento profundo sobre os formatos de log).



Crie um novo host virtual

Vimos como o VirtualHost padrão é definido; Agora, suponha que queremos servir outro site usando nosso servidor da web: devemos definir um novo host virtual para poder alcançar nosso objetivo.

Como dito acima, os arquivos de hosts virtuais devem ser definidos dentro do /etc/Apache2/sites-Audência Diretório (pelo menos em distribuições baseadas em Debian): portanto, criaremos nosso arquivo lá. Antes de fazer isso, queremos criar o diretório para ser usado como nosso Raiz do documento, e crie uma página básica a ser exibida quando chegarmos ao site:

$ sudo mkdir/var/www/exemplo && echo "Bem -vindo ao exemplo!">/var/www/exemplo/index.html 

Agora podemos prosseguir ao configurar nosso host virtual:

 Documentroot/var/www/exemplo servername www.exemplo.local 

Esta é a configuração mínima necessária para executar um host virtual. Aqui podemos ver uma nova diretiva, Nome do servidor: Isso é o que define nosso host virtual. Vamos salvar este arquivo como exemplo.conf. Para ativar nosso virtualhost, usamos o A2ensite Comando: Todo esse comando faz é criar um symblink do arquivo no /etc/apache2/sites-habilitados diretório:

$ sudo a2ensite exemplo.conf

Depois disso, devemos recarregar a configuração do servidor:

$ sudo systemctl recarregar apache2.serviço

Definimos nosso virtualhost, no entanto, já que este é um teste e não temos um entrada DNS associado a ele, para verificar se a configuração funciona, devemos adicionar uma entrada no /etc/hosts Arquivo da máquina que estamos tentando alcançar o site.

$ sudo echo "192.168.122.241 www.exemplo.Local ">> /etc /hosts

Sem essa linha, (e sem uma entrada DNS) seria impossível associar o endereço do servidor ao nome do nosso VirtualHost e, usando o IP do servidor diretamente, "acionaria" o host virtual padrão.

Da máquina cliente, se agora navegarmos para “www.exemplo.local ”, devemos ver a página mínima que configuramos acima:

Exemplo de índice virtualhost

Configurando SSL

SSL, abreviação de Camada de soquetes seguros É a tecnologia que nos permite criptografar os dados envolvidos na conexão entre o cliente e o servidor. Quando os certificados SSL são usados, https (Protocolo de transferência de texto hiper seguro) substitui HTTP no URL.

Os certificados SSL são emitidos por uma autoridade de certificado, que, como terceiros confiáveis, garante que alguém é realmente que afirma estar na Internet. Os certificados SSL podem ser muito caros, no entanto, existem duas alternativas principais para obter um certificado: Crie um certificado auto -assinado ou obtenha um de Vamos criptografar.

Gerar um certificado SSL autoassinado

Embora gerar um certificado autoassinado, não é uma tarefa difícil e pode ser útil quando você deseja apenas alcançar a criptografia, não é utilizável em contextos em que o próprio certificado deve ser assinado por um terceiro confiável. Podemos gerar um certificado autoassinado usando o OpenSSL Utilitário:

$ sudo openssl req -x509 \ -Days 365 \ -sha256 \ -NewKey RSA: 2048 \ -nodes \ -Keyout Exemplo.chave \ -Out exemplo -cert.PEM 

Vamos ver o que este comando faz. A primeira opção que encontramos, -x509, Modifica o comportamento do comando para que ele gerem um certificado autoassinado em vez de uma solicitação de certificado.

Com -dias, Definimos a validade, em dias, para o certificado. A próxima opção fornecida é -Newkey: com ele criamos uma nova chave, neste caso um RSA chave, com o tamanho de 2048 bits. Para o nosso caso de teste, não queremos criptografar o arquivo de chave privado, então usamos -nós. Se essa opção for omitida, o arquivo no qual a chave for armazenada será protegida por uma senha, que seremos solicitados a inserir sempre que o servidor da web for reiniciado.

Com -Keyout e -fora Especificamos o arquivo para escrever a chave gerada e o certificado, respectivamente. Ao lançar o comando, seremos solicitados a responder a algumas perguntas e, em seguida, a chave e o certificado serão gerados.

Você está prestes a ser solicitado a inserir informações que serão incorporadas à sua solicitação de certificado. O que você está prestes a entrar é o que é chamado de nome distinto ou DN. Existem alguns campos, mas você pode deixar alguns em branco para alguns campos, haverá um valor padrão, se você entrar '.', o campo ficará em branco. ----- Nome do país (código de 2 letras) [AU]: Nome do estado ou da província (nome completo) [algum estado]: Nome da localidade (por exemplo, cidade) []: Nome da organização de Milão (por exemplo, empresa) [Internet Widgits Pty Ltd] : Dano inc. Nome da unidade organizacional (por exemplo, seção) []: Nome comum (e.g. servidor fqdn ou seu nome) []: www.exemplo.Endereço de e -mail local []: 

O próximo passo é copiar nossa chave gerada e certificado para /etc/ssl/privado e /etc/ssl/ssl-cert diretórios respectivamente:

$ sudo mv exemplo-cert.PEM/etc/ssl/certs

O certificado é público, portanto não precisa de permissão especial. Agora, a chave:

$ sudo MV Exemplo.chave/etc/ssl/privado

É importante que ajustemos as permissões de arquivo -chave. Se examinarmos o /etc/ssl/privado pasta, podemos ver que ela pertence ao raiz usuário e o ssl-cert grupo, e tem 710 Como permissões, o que significa que, embora o proprietário tenha privilégios completos, o proprietário do grupo só pode acessá -lo e listar seu conteúdo, e nenhuma permissão é permitida para outros:

$ ls -ld/etc/ssl/privado drwx-x --- 2 raiz ssl-cert 4096 mar 16 11:57/etc/ssl/privado 

Vamos mudar nossas permissões de arquivo-chave de acordo, dando ao proprietário lendo e escrevendo permissões e privilégios somente leitura para o grupo:

$ sudo chown root: ssl-cert/etc/ssl/privado/exemplo.chave $ sudo chmod 640/etc/ssl/privado/exemplo.chave 

Para usar nosso certificado, agora precisamos ativar o módulo SSL Apache. Nós fazemos isso usando o A2ENMOD comando:

$ sudo a2enmod ssl

Estamos quase lá. Agora é hora de modificar nosso host virtual e defini -lo desta maneira:

 Documentroot/var/www/exemplo servername www.exemplo.# Local Enable SSL Engine SSLEngine no SSLCertificatefile/etc/ssl/certs/exemplo-cert.PEM SSLCERtificateKeyFile/etc/ssl/privado/exemplo.chave 
cópia de

O Porto 443 Na linha 1, a porta usada para https (no lugar da porta 80 usada para HTTP). Nós também adicionamos o Sslengine on Instrução na linha 6, que é bastante auto-explicativa.

Finalmente, na linha 8 - 9, especificamos os caminhos para o nosso certificado e arquivos -chave, usando o SslCertificatefile e SslCertificateKeyFile instruções.

Agora, siga as instituições para abrir as portas de firewall usadas no início do tutorial, mas desta vez para permitir o https serviço:

$ sudo ufw permitir https

Finalmente, recarregue a configuração do Apache:

$ sudo systemctl recarregar apache2

Tudo feito. Agora, se do cliente, navegamos para https: // www.exemplo.local Endereço, devemos ver o servidor da web alertando -nos de que o certificado usado não é seguro (pois é confiável). Este é, no entanto, o sinal de que nossa configuração funciona e o tráfego entre o cliente e o servidor serão criptografados (você precisará adicionar uma exceção para o certificado usá -lo).

Alerta do navegador SSL

Configurando, vamos criptografar

A alternativa aos certificados comerciais e auto-autenticados é representada por "vamos criptografar". Let's Encrypt é uma autoridade de certificação gratuita, automatizada e aberta; Seu objetivo é possibilitar obter automaticamente um certificado confiável pelo navegador sem nenhuma intervenção humana.

Isso pode ser alcançado pelo uso do ACME protocolo e a Agente de gerenciamento de certificados que é executado no servidor.

Para obter um certificado, devemos demonstrar que temos controle sobre o domínio que queremos usar o certificado para. Se não tivermos acesso shell no servidor, devemos entrar em contato com nosso provedor de serviços para ativar o Let's Encrypt em nosso nome, mas provavelmente existe uma seção dedicada no painel de configuração de serviço.

Se, em vez disso, tivermos acesso de shell ao servidor em questão, antes de tudo, devemos instalar o CertBot Cliente acme. Instalando o certbot no Ubuntu 18.04 É apenas uma questão de correr:

$ sudo apt-get update && apt-get install certbot python-certbot-apache

O pacote certbot vem com um Systemd Timer unidade que executará o certbot duas vezes por dia para manter o certificado atualizado. Obter um certificado é bastante simples:

$ sudo certbot --apache -m -d 

Obviamente, para que isso funcione, o domínio deve apontar corretamente para o nosso servidor de acesso ao público IP. O CERTBOT solicitará algumas perguntas para ajustar a configuração e, se tudo correr bem, o certificado e a chave devem salvar no /etc/letSencrypt/Live/ diretório. Basta ajustar seu arquivo de host virtual para apontar para eles e você terminou!

Tutoriais do Linux relacionados:

  • Coisas para instalar no Ubuntu 20.04
  • Coisas para fazer depois de instalar o Ubuntu 20.04 fossa focal linux
  • Instale Arch Linux na estação de trabalho VMware
  • Ubuntu 20.04: WordPress com instalação nginx
  • Coisas para instalar no Ubuntu 22.04
  • Ativar/desativar o firewall no manjaro linux
  • Coisas para fazer depois de instalar o Ubuntu 22.04 Jellyfish…
  • Ubuntu 20.04 WordPress com instalação do Apache
  • Configurar servidor FTP no Linux
  • Como configurar o vsftpd no Debian