Tutorial
Como Instalar o Nginx no Ubuntu 20.04
Introdução
O Nginx é um dos servidores Web mais populares no mundo e é responsável por hospedar alguns dos sites de maior tráfego na Internet. Ele é uma escolha leve que pode ser usado como servidor web ou proxy reverso.
Neste guia, vamos discutir como instalar o Nginx em seu servidor Ubuntu 20.04, ajustar o firewall, gerenciar o processo do Nginx e configurar os blocos de servidor para hospedar mais de um domínio em um único servidor.
Pré-requisitos
Antes de iniciar este guia, você deve ter um usuário regular e não-root com privilégios sudo configurado no seu servidor. Você pode aprender como configurar uma conta de usuário regular seguindo nosso Guia de configuração inicial de servidor para o Ubuntu 20.04.
Quando tiver uma conta disponível, faça login com seu usuário não-root para começar.
Passo 1 - Instalando o Nginx
Como o Nginx está disponível nos repositórios padrão do Ubuntu, é possível instalá-lo a partir desses repositórios usando o sistema de pacotes do apt
.
Como essa é nossa primeira interação com o sistema de pacotes do apt
nesta sessão, também vamos atualizar nosso índice de pacotes local para que tenhamos acesso às listagens de pacotes mais recentes. Depois disso, podemos instalar o nginx
:
- sudo apt update
- sudo apt install nginx
Depois de aceitar o procedimento, o apt
instalará o Nginx e quaisquer dependências necessárias no seu servidor.
Passo 2 — Como ajustar o Firewall
Antes de testar o Nginx, o software de firewall precisa ser ajustado para permitir o acesso ao serviço. O Nginx registra-se como um serviço com o ufw
após a instalação, tornando-simples permitir o acesso ao Nginx
Liste as configurações do aplicativo com as quais o ufw
sabe trabalhar digitando:
- sudo ufw app list
Você deve obter uma lista dos perfis dos aplicativos:
OutputAvailable applications:
Nginx Full
Nginx HTTP
Nginx HTTPS
OpenSSH
Como indicado pela saída, há três perfis disponíveis para o Nginx:
- Nginx Full: Este perfil abre ambas as portas 80 (tráfego Web normal, não criptografado) e 443 (tráfego TLS/SSL criptografado)
- Nginx HTTP: Este perfil abre apenas a porta 80 (tráfego Web normal, não criptografado)
- Nginx HTTPS: Este perfil abre apenas a porta 443 (tráfego TLS/SSL criptografado)
É recomendável que você habilite o perfil mais restritivo que ainda assim permitirá o tráfego que você configurou. Agora, precisaremos apenas permitir o tráfego na porta 80.
Permita isso isso digitando:
- sudo ufw allow 'Nginx HTTP'
Você pode verificar a mudança digitando:
- sudo ufw status
A saída indicará qual tráfego HTTP é permitido:
OutputStatus: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Nginx HTTP ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Nginx HTTP (v6) ALLOW Anywhere (v6)
Passo 3 — Verificando seu Servidor Web
No final do processo de instalação, o Ubuntu 20.04 inicia o Nginx. O servidor Web já deve estar em funcionamento.
Podemos verificar com o sistema init systemd
para garantir que o serviço esteja funcionando digitando:
- systemctl status nginx
Output● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2020-04-20 16:08:19 UTC; 3 days ago
Docs: man:nginx(8)
Main PID: 2369 (nginx)
Tasks: 2 (limit: 1153)
Memory: 3.5M
CGroup: /system.slice/nginx.service
├─2369 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
└─2380 nginx: worker process
Como confirmado por esta saída, o serviço foi iniciado com sucesso. No entanto, a melhor maneira de realmente testar isso é solicitando uma página do Nginx.
Você pode acessar a página de inicial padrão do Apache para confirmar que o software está funcionando corretamente navegando para o endereço IP do seu servidor: Se você não sabe o endereço IP do seu servidor, você pode encontrá-lo usando a ferramenta icanhazip.com, que lhe dará o endereço IP público conforme recebido a partir de outro local na Internet:
- curl -4 icanhazip.com
Quando você tiver o endereço IP do seu servidor, digite-o na barra de endereço do seu navegador:
http://your_server_ip
Você deve receber a página inicial padrão do Nginx:
Se você estiver nesta página, seu servidor está funcionando corretamente e está pronto para ser gerenciado.
Passo 4 — Gerenciando o processo do Nginx
Agora que você tem seu servidor Web em funcionamento, vamos rever alguns comandos básicos de gerenciamento.
Para parar seu servidor Web, digite:
- sudo systemctl stop nginx
Para iniciar o servidor quando ele estiver parado, digite:
- sudo systemctl start nginx
Para parar e então iniciar o serviço novamente, digite:
- sudo systemctl restart nginx
Se você estiver simplesmente fazendo alterações de configuração, o Nginx geralmente pode recarregar sem quedas na conexão. Para fazer isso, digite:
- sudo systemctl reload nginx
Por padrão, o Nginx está configurado para iniciar automaticamente quando o servidor for iniciado. Se isso não é o que você quer, é possível desativar este comportamento digitando:
- sudo systemctl disable nginx
Para reativar o serviço para iniciar no boot, digite:
- sudo systemctl enable nginx
Agora, você aprendeu os comandos básicos de gerenciamento e deve estar pronto para configurar o site para hospedar mais de um domínio.
Passo 5 — Configurando Blocos do Servidor (Recomendado)
Ao usar o servidor Web Nginx, os server blocks (similares aos hosts virtuais no Apache) podem ser usados para encapsular detalhes de configuração e hospedar mais de um domínio de um único servidor. Vamos configurar um domínio chamado your_domain, mas você deve substituí-lo por seu próprio nome de domínio. Para aprender mais sobre como configurar um nome de domínio com a DigitalOcean, por favor, consulte nossa Introdução ao DNS da DigitalOcean.
O Nginx no Ubuntu 20.04 tem um bloco de servidor habilitado por padrão que está configurado para exibir documentos do diretório /var/www/html
. Enquanto isso funciona bem para um único site, ele pode tornar-se indevido se você estiver hospedando vários sites. Em vez de modificar o /var/www/html
, vamos criar uma estrutura de diretórios dentro do /var/www
para nosso site your_domain, deixando o /var/www/html
intacto como o diretório padrão a ser servido se um pedido de cliente não corresponder a nenhum outro site.
Crie o diretório para o your_domain da seguinte forma, utilizando o sinalizador -p
para criar quaisquer diretórios pai necessários:
- sudo mkdir -p /var/www/your_domain/html
Em seguida, atribua a posse do diretório com a variável de ambiente $USER
:
- sudo chown -R $USER:$USER /var/www/your_domain/html
As permissões dos seus web roots devem estar corretas se você não tiver modificado seu valor de umask
, que define permissões padrão de arquivos. Para garantir que suas permissões estejam corretas e permitam que o proprietário leia, escreva e execute os arquivos, enquanto concede apenas permissões de leitura e execução para grupos e outros, você pode digitar o seguinte comando:
- sudo chmod -R 755 /var/www/your_domain
A seguir, crie uma página de amostra index.html
utilizando o nano
ou seu editor favorito:
- nano /var/www/your_domain/html/index.html
Dentro, adicione a seguinte amostra HTML:
<html>
<head>
<title>Welcome to your_domain!</title>
</head>
<body>
<h1>Success! The your_domain server block is working!</h1>
</body>
</html>
Salve e feche o arquivo digitando CTRL
e X
, depois Y
e ENTER
quando você terminar.
Para que o Nginx exiba este conteúdo, é necessário criar um bloco de servidor com as diretivas corretas. Em vez de modificar o arquivo de configuração padrão diretamente, vamos fazer um novo em /etc/nginx/sites-available/example.com
:
- sudo nano /etc/nginx/sites-available/your_domain
Cole no seguinte bloco de configuração, que é similar ao padrão, mas atualizado para nosso novo diretório e nome de domínio:
server {
listen 80;
listen [::]:80;
root /var/www/your_domain/html;
index index.html index.htm index.nginx-debian.html;
server_name your_domain www.your_domain;
location / {
try_files $uri $uri/ =404;
}
}
Note que atualizamos a configuração do root
para nosso novo diretório e o server_name
para nosso nome de domínio.
Em seguida, vamos habilitar o arquivo criando um link dele para o diretório sites-enabled
, de onde o Nginx lê durante a inicialização:
- sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/
Agora, dois blocos de servidor estão habilitados e configurados para responder às solicitações baseados em suas diretivas listen
e server_name
(você pode ler mais sobre como o Nginx processa essas diretivas aqui):
your_domain
: irá responder às solicitações parayour_domain
ewww.your_domain
.default
: responderá a quaisquer pedidos na porta 80 que não correspondam aos outros dois blocos.
Para evitar um possível problema de memória de hash que possa surgir ao adicionar nomes adicionais de servidor, é necessário ajustar um valor único no arquivo /etc/nginx/nginx.conf
. Abra o arquivo:
- sudo nano /etc/nginx/nginx.conf
Encontre a diretiva server_names_hash_bucket_size
e remova o símbolo #
para descomentar a linha: Se você estiver usando o nano, você pode procurar rapidamente por palavras no arquivo pressionando CTRL
e w
.
...
http {
...
server_names_hash_bucket_size 64;
...
}
...
Salve e feche o arquivo quando você terminar.
Em seguida, teste para garantir que não haja erros de sintaxe em qualquer um dos seus arquivos do Nginx:
- sudo nginx -t
Se não houver problemas, reinicie o Nginx para habilitar suas alterações:
- sudo systemctl restart nginx
O Nginx agora deve estar exibindo seu nome de domínio. Você pode testar isso navegando para http://your_domain
, onde você deve ver algo assim:
Passo 6 — Familiarizando-se com arquivos e diretórios importantes do Nginx
Agora que sabe como gerenciar o serviço do Nginx, você deve gastar alguns minutos para familiarizar-se com alguns diretórios e arquivos importantes.
Conteúdo
/var/www/html
: O conteúdo Web em si, que por padrão apenas consiste na página Nginx padrão que você viu antes, é servido fora do diretório/var/www/html
. Isso pode ser alterado mudando os arquivos de configuração do Nginx.
Configuração do Servidor
/etc/nginx
: o diretório de configuração do Nginx. Todos os arquivos de configuração do Nginx residem aqui./etc/nginx/nginx.conf
: o arquivo de configuração principal do Nginx. Isso pode ser modificado para fazer alterações na configuração global do Nginx./etc/nginx/sites-available/
: o diretório onde os blocos de servidor de cada site podem ser armazenados. O Nginx não usará os arquivos de configuração encontrados neste diretório a menos que estejam ligados ao diretóriosites-enabled
. Normalmente, todas as configurações de blocos de servidor são feitas neste diretório e então habilitadas pela ligação a outro diretório./etc/nginx/sites-enabled/
: o diretório onde os blocos de servidor de cada site habilitados são armazenados. Normalmente, eles são criados pela ligação aos arquivos de configuração encontrados no diretóriosites-available
./etc/nginx/snippets
: este diretório contém fragmentos de configuração que podem ser incluídos em outro lugar na configuração do Nginx. Os segmentos de configuração potencialmente repetíveis são bons candidatos à refatoração em snippets.
Registros do Servidor
/var/log/nginx/access.log
: cada pedido ao seu servidor Web é registrado neste arquivo de registro a menos que o Nginx esteja configurado para fazer de outra maneira./var/log/nginx/error.log
: qualquer erro do Nginx será gravado neste registro.
Conclusão
Agora que tem seu servidor Web instalado, você tem muitas opções para o tipo de conteúdo a oferecer e as tecnologias que quiser usar para criar uma experiência mais rica.
Se você quiser construir uma pilha de aplicações mais completa, verifique o artigo Como Instalar Linux, Nginx, MySQL, PHP (pilha LEMP) no Ubuntu 20.04.