Instalação e Gerenciamento do Nginx via YUM e Compilação de Código-Fonte

Instalação do Nginx via YUM

1. Preparativos

Antes de instalar, verifique o status do firewall e o SELinux. É recomendado desativar o firewall ou liberar as portas 80 e 443.


# Verificar firewall
systemctl status firewalld.service
# Verificar SELinux
getenforce
   

Se necessário, libere as portas:


firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --add-port=443/tcp
   

2. Configuração do Repositório YUM

Crie um arquivo de repositório para o Nginx:


cat > /etc/yum.repos.d/nginx.repo <<EOF
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/\$releasever/\$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/\$releasever/\$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
EOF
   

3. Instalação do Nginx

Instale o pacote do Nginx usando YUM. Por padrão, a versão estável mais recente será instalada.


yum -y install nginx
# Verificar a versão instalada
nginx -v
   

Para instalar a versão de desenvolvimento (mainline), habilite o repositório correspondente antes da instalação (yum-config-manager --enable nginx-mainline). No entanto, não é recomendado para ambientes de produção.

Inicie e habilite o serviço Nginx para iniciar na inicialização do sistema:


systemctl start nginx
systemctl enable nginx
   

4. Teste de Acesso

Acesse o Nginx através do navegador, utilizando o IP do seu servidor (ex: http://172.24.8.71/).

5. Informações Adicionais

Visualize os detalhes de compilação e os módulos incluídos:


# Ver detalhes da compilação e módulos
nginx -V
# Listar arquivos instalados pelo pacote Nginx
rpm -ql nginx
# Listar arquivos de configuração do pacote Nginx
rpm -qc nginx
   

Instalação do Nginx via Compilação de Código-Fonte

1. Dependências

Instale os pacotes de desenvolvimento necessários:


yum -y install gcc gcc-c++ wget autoconf pcre pcre-devel openssl openssl-devel net-tools vim ntp screen lrzsz bash-completion bash-completion-extras lvm2 make automake epel-release tree zlib zlib-devel libtool
   

Observação: Bibliotecas como zlib são essenciais para o módulo ngx_http_gzip_module (compressão), e openssl é necessário para o módulo ngx_http_ssl_module (suporte HTTPS).

2. Compilação e Instalação

Crie um usuário para o Nginx, baixe o código-fonte, descompacte e configure os parâmetros de compilação antes de compilar e instalar.


# Criar usuário e grupo
useradd -s /sbin/nologin -M nginx
# Baixar código-fonte (exemplo com versão 1.17.8)
wget http://nginx.org/download/nginx-1.17.8.tar.gz
# Descompactar
tar -xvf nginx-1.17.8.tar.gz
# Entrar no diretório
cd nginx-1.17.8/
# Configurar parâmetros de compilação
./configure \
   --conf-path=/usr/local/nginx/conf/nginx.conf \
   --error-log-path=/var/log/nginx/error.log \
   --group=nginx \
   --http-client-body-temp-path=/var/cache/nginx/client_temp \
   --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp \
   --http-log-path=/var/log/nginx/access.log \
   --http-proxy-temp-path=/var/cache/nginx/proxy_temp \
   --http-scgi-temp-path=/var/cache/nginx/scgi_temp \
   --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp \
   --lock-path=/var/run/nginx.lock \
   --pid-path=/var/run/nginx.pid \
   --prefix=/usr/local/nginx \
   --sbin-path=/usr/local/bin/nginx \
   --user=nginx \
   --with-http_gzip_static_module \
   --with-http_realip_module \
   --with-http_ssl_module \
   --with-http_stub_status_module \
   --with-http_sub_module \
   --with-http_v2_module \
   --with-stream \
   --with-stream_realip_module \
   --with-stream_ssl_module
# Compilar e instalar
make && make install
# Verificar instalação e estrutura de diretórios
nginx -V
tree /usr/local/nginx/
   

Estrutura de diretórios após compilação:

conf Diretório de arquivos de configuração do Nginx
html Diretório para arquivos de páginas estáticas
logs Diretório para logs
sbin Diretório para o executável do Nginx

3. Gerenciamento do Serviço

Certifique-se de que o diretório de binários do Nginx esteja no PATH do sistema ou adicione-o. Crie o diretório de cache se não existir.


# Exibir PATH atual
echo $PATH
# Criar diretório de cache
mkdir -p /var/cache/nginx/
# Verificar o executável
ll /usr/local/bin/nginx
   

Comandos para gerenciar o serviço Nginx:


# Iniciar
nginx
# Parar (graceful shutdown)
nginx -s stop
# Recarregar configuração
nginx -s reload
# Reiniciar (não recomendado, prefira reload)
nginx -s reopen
# Parar (imediato)
nginx -s quit
# Testar sintaxe da configuração
nginx -t
# Testar com um arquivo de configuração específico
nginx -t -c 【file】
# Verificar processos Nginx
ps aux | grep nginx
# Verificar porta 80
netstat -ano | grep 80
   

4. Inicialização Automática na Inicialização

Crie um arquivo de serviço systemd para o Nginx:


vi /usr/lib/systemd/system/nginx.service
# Conteúdo do arquivo nginx.service:
# [Unit]
# Description=nginx - high performance web server
# Documentation=http://nginx.org/en/docs/
# After=network-online.target remote-fs.target nss-lookup.target
# Wants=network-online.target
#
# [Service]
# Type=forking
# PIDFile=/var/run/nginx.pid
# ExecStart=/usr/local/bin/nginx -c /usr/local/nginx/conf/nginx.conf
# ExecReload=/bin/kill -s HUP $MAINPID
# ExecStop=/bin/kill -s TERM $MAINPID
#
# [Install]
# WantedBy=multi-user.target

# Recarregar o systemd para reconhecer o novo serviço
systemctl daemon-reload
# Iniciar o serviço Nginx
systemctl start nginx.service
# Habilitar inicialização automática
systemctl enable nginx.service
   

Comandos de gerenciamento do serviço via systemd:


systemctl start nginx.service		# Iniciar
systemctl stop nginx.service		# Parar
systemctl enable nginx.service	# Habilitar inicialização automática
systemctl disable nginx.service	# Desabilitar inicialização automática
systemctl status nginx.service	# Verificar status
systemctl restart nginx.service	# Reiniciar
systemctl list-units --type=service	# Listar todos os serviços
   

5. Teste de Acesso

Acesse o Nginx através do navegador, utilizando o IP do seu servidor (ex: http://172.24.8.71/).

6. Opções de Compilação

Visualize as opções de compilação disponíveis com:


./configure --help
   

Opções comuns de compilação:

--prefix=/etc/nginx Diretório de instalação do programa
--sbin-path=/usr/sbin/nginx Nome do executável Nginx
--modules-path=/usr/lib64/nginx/modules Caminho para os módulos do Nginx
--conf-path=/etc/nginx/nginx.conf Caminho do arquivo de cnofiguração principal do Nginx
--error-log-path=/var/log/nginx/error.log Caminho do log de erros
--http-log-path=/var/log/nginx/access.log Caminho do log de acesso
--pid-path=/var/run/nginx.pid Caminho do arquivo PID
--lock-path=/var/run/nginx.lock Caminho do arquivo de lock
--http-client-body-temp-path=/var/cache/nginx/client_temp Cache temporário para corpo de requisição do cliente
--http-proxy-temp-path=/var/cache/nginx/proxy_temp Cache temporário para proxy
--http-fastcgi-temp-path=/var/cache/nginx/proxy_temp Cache temporário para FastCGI
--http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp Cache temporário para uWSGI
--http-scgi-temp-path=/var/cache/nginx/scgi_temp Cache temporário para SCGI
--user=nginx Usuário para execução do processo Nginx
--group=nginx Grupo para execução do proecsso Nginx
--with-cc-opt Opções adicionais para o compilador C (CFLAGS)
--with-ld-opt Opções adicionais para o linker (LDFLAGS)

Diretórios e Módulos do Nginx

1. Diretórios Relevantes

Estrutura de diretórios comum após instalação via YUM:

/etc/nginx, /etc/nginx/nginx.conf, /etc/nginx/conf.d Arquivos de configuração do Nginx
/etc/nginx/fastcgi_params, /etc/nginx/scgi_params, /etc/nginx/uwsgi_params Configurações para FastCGI, SCGI, uWSGI
/etc/nginx/mime.types Mapeamento de tipos MIME para HTTP
/usr/sbin/nginx Comando executável do Nginx
/var/cache/nginx Diretório de cache do Nginx
/var/log/nginx Diretório de logs do Nginx
/usr/share/nginx/html Diretório padrão para a página web

2. Módulos do Nginx

Os módulos do Nginx podem ser oficiais ou de terceiros. Eles adicionam funcionalidades ao servidor.

ngx_http_core_module Funcionalidades básicas do HTTP
ngx_http_access_module Controle de acesso
ngx_http_gzip_module Compressão de conteúdo (gzip)
ngx_http_fastcgi_module Interface com aplicações FastCGI (ex: PHP)
ngx_http_proxy_module Módulo de proxy reverso
ngx_http_upstream_module Balanceamento de carga e health checks
ngx_http_rewrite_module Reescrita de URLs
ngx_http_limit_conn_module Limitação de conexões simultâneas
ngx_http_limit_req_module Limitação da taxa de requisições
ngx_http_log_module Registro de logs de acesso
ngx_http_auth_basic_module Autenticação básica HTTP (usuário/senha)
ngx_http_ssl_module Suporte a conexões HTTPS

Variáveis e Códigos de Status HTTP do Nginx

1. Variáveis do Nginx

Variáveis são usadas para acessar informações sobre a requisição e o servidor.

  • $uri: URI da requisição atual (sem parâmetros).
  • $request_uri: URI completa da requisição (com parâmetros).
  • $host: Cabeçalho Host da requisição.
  • $remote_addr: Endereço IP do cliente.
  • $request_filename: Caminho do arquivo local mapeado pela URI.
  • $request_method: Método da requisição (GET, POST, etc.).
  • $server_addr: Endereço IP do servidor.
  • $server_name: Nome do servidor virtual.
  • $server_port: Porta do servidor.
  • $scheme: Protocolo (http ou https).
  • $http_HEADER: Valor de um cabeçalho específico da requisição HTTP.

2. Códigos de Status HTTP

Indicam o resultado de uma requisição HTTP:

  • 301: Movido Permanentemente
  • 302: Movido Temporariamente
  • 400: Requisição Inválida
  • 403: Proibido Acesso
  • 404: Não Encontrado
  • 413: Entidade da Requisição Muito Grande
  • 500: Erro Interno no Servidor
  • 502: Bad Gateway (Gateway Inválido)
  • 504: Gateway Timeout (Tempo Limite do Gateway)

Tags: nginx Instalação yum compilacao código-fonte

Publicado em 7-17 10:10