Instale o Apache no Ubuntu 18.04 Bionic Beaver Linux
- 3055
- 171
- Loren Botsford
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 desudo
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:
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 virtualhostConfigurando 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).
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
- « Instale o Intellij no Ubuntu 18.04 Bionic Beaver Linux
- Como sincronizar o tempo no Ubuntu 18.04 Bionic Beaver Linux »