Instalação Manual do Nginx 1.10.2 no Red Hat Enterprise Linux 7

Verificação de Compatibilidade do Sistema Operacional

Antes de iniciar a instalação do Nginx a partir do código-fonte, é fundamental confirmar que seu ambiente operacional atende aos requisitos. As versões do Nginx distribuídas oficialmente suportam diverass plataformas Linux, incluindo:

  • RHEL/CentOS: Versões 5.x, 6.x e 7.x são compatíveis com arquiteturas x86_64 e, para a 7.x, também ppc64le.
  • Debian: Versões 7.x (Wheezy) e 8.x (Jessie) em x86_64 e i386.
  • Ubuntu: Versões 12.04 (Precise), 14.04 (Trusty) e 16.04 (Xenial) em várias arquiteturas.
  • SLES: Versão 12 em x86_64.

Para verificar a versão do seu sistema operacional, utilize o comando cat /etc/os-release ou cat /etc/redhat-release. Por exemplo:

[root@localhost ~]# cat /etc/os-release
NAME="Red Hat Enterprise Linux Server"
VERSION="7.0 (Maipo)"
ID="rhel"
ID_LIKE="fedora"
VERSION_ID="7.0"
PRETTY_NAME="Red Hat Enterprise Linux Server 7.0 (Maipo)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:redhat:enterprise_linux:7.0:GA:server"
HOME_URL="https://www.redhat.com/"
BUG_REPORT_URL="https://bugzilla.redhat.com/"
REDHAT_BUGZILLA_PRODUCT="Red Hat Enterprise Linux 7"
REDHAT_BUGZILLA_PRODUCT_VERSION=7.0
REDHAT_SUPPORT_PRODUCT="Red Hat Enterprise Linux"
REDHAT_SUPPORT_PRODUCT_VERSION=7.0

No exemplo acima, o sistema é um Red Hat Enterprise Linux Server 7.0, o que confirma a compatibilidade com a instalação do Nginx.

Preparação e Obtenção do Código-Fonte

É uma prática recomendada instalar as dependências necessárias antes de compilar o Nginx. Para RHEL/CentOS, isso geralmente inclui pacotes de desenvolvimento para GCC, PCRE e Zlib:

sudo yum update
sudo yum install -y gcc make pcre pcre-devel zlib zlib-devel openssl-devel

Em seguida, obtenha o pacote de código-fonte do Nginx 1.10.2. Você pode baixá-lo diretamente do site oficial usando wget ou fazer o download manual e transferir para o servidor. Recomenda-se usar um diretório como /usr/local/src para arquivos de código-fonte:

cd /usr/local/src
sudo wget http://nginx.org/download/nginx-1.10.2.tar.gz

Após o download, descompacte o arquivo:

sudo tar -zxvf nginx-1.10.2.tar.gz
cd nginx-1.10.2

Configuração do Nginx

Dentro do diretório do código-fonte descompactado, execute o script configure para definir as opções de compilação, incluindo o caminho de instalação, módulos a serem incluídos e locais de arquivos de log e configuração. A documentação completa sobre as opções de configuração está disponível em nginx.org.

Um exemplo de configuração com módulos comumente utilizados é:

./configure \
    --prefix=/usr/local/nginx \
    --sbin-path=/usr/sbin/nginx \
    --conf-path=/etc/nginx/nginx.conf \
    --error-log-path=/var/log/nginx/error.log \
    --http-log-path=/var/log/nginx/access.log \
    --pid-path=/run/nginx.pid \
    --lock-path=/run/nginx.lock \
    --with-threads \
    --with-file-aio \
    --with-http_ssl_module \
    --with-http_v2_module \
    --with-http_realip_module \
    --with-http_stub_status_module \
    --with-http_gzip_static_module \
    --with-ipv6 \
    --with-stream \
    --with-stream_ssl_module \
    --with-pcre \
    --with-zlib

Compilação e Instalação

Após a configuração bem-sucedida, compile e instale o Nginx. Certifique-se de executar esses comandos como um usuário com privilégios de root, como sudo:

sudo make
sudo make install

Gerenciamento do Serviço Nginx

Com a instalação concluída, o executável do Nginx estará disponível no caminho especificado (neste exemplo, /usr/sbin/nginx). Para iniciar o servidor pela primeira vez:

sudo /usr/sbin/nginx

Para aplicar novas configurações sem interromper o serviço, recarregue-o:

sudo /usr/sbin/nginx -s reload

Para parar o serviço:

sudo /usr/sbin/nginx -s stop

Para facilitar o gerenciamento em sistemas RHEL 7, é altamente recomendável criar um serviço systemd. Crie um arquivo /etc/systemd/system/nginx.service com o seguinte conteúdo:

[Unit]
Description=Nginx Web Server
After=network.target

[Service]
Type=forking
PIDFile=/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t
ExecStart=/usr/sbin/nginx
ExecReload=/usr/sbin/nginx -s reload
ExecStop=/usr/sbin/nginx -s quit
PrivateTmp=true

[Install]
WantedBy=multi-user.target

Em seguida, recarregue o systemd e ative o Nginx para iniciar no boot:

sudo systemctl daemon-reload
sudo systemctl enable nginx
sudo systemctl start nginx

Verificação da Operação

Para confirmar se o Nginx está em execução, você pode verificar os processos ou o status do serviço:

ps -ef | grep nginx

Você deverá ver processos mestre e de worker do Nginx. Se estiver usando o serviço systemd:

sudo systemctl status nginx

Além disso, verifique se a porta 80 (ou a porta configurada) está em escuta:

sudo netstat -tulnp | grep :80

Finalmente, acesse o servidor Nginx através de um navegador web ou usando curl para verificar a página padrão:

curl http://localhost/

Solução de Problemas Comuns

1. Compilador C Ausente (checking for C compiler ... not found)

Este erro indica que o compilador C (GCC) não está instalado no sistema. A solução é instalar o pacote gcc:

sudo yum install -y gcc

2. Problema com Caminho de Configuração ("conf/koi-win" e "/usr/local/nginx/conf/koi-win" são o mesmo arquivo)

Este erro pode ocorrer se houver um conflito ou uma configuração ambígua para os caminhos dos arquivos de configuração. Ao usar ./configure, sempre especifique explicitamente o caminho do arquivo de configuração principal usando --conf-path=/etc/nginx/nginx.conf para evitar que o Nginx procure arquivos de configuração em locais inesperados ou gere links simbólicos conflitantes.

3. Conflito de Porta (nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use))

Este erro significa que a porta padrão do Nginx (porta 80 para HTTP) já está sendo utilizada por outro processo. Primeiro, identifique qual processo está usando a porta:

sudo netstat -tulnp | grep :80

Você pode então escolher entre duas soluções:

  • Parar o serviço que está em conflito (por exemplo, Apache HTTPD, Tomcat, etc.).
  • Modificar a porta padrão do Nginx editando o arquivo /etc/nginx/nginx.conf para uma porta diferente (por exemplo, 8080) e recarregando o Nginx.

Tags: nginx rhel7 Linux WebServer Instalação

Publicado em 7-28 17:04