Por que o passage-install-nginx-module não instala o Nginx nem implementa o suporte ao Passenger no Centos7, enquanto a saída indica o contrário?

2

Introdução

No momento, existem aproximadamente 100 agentes de marionetes que se conectam ao mestre de marionetes. Às vezes, leva algum tempo até que as mudanças implementadas no Puppetmaster sejam escolhidas pelos agentes. Alguma informação foi encontrada que Passenger combinado com um servidor web, por ex. Apache2 ou Nginx podem acelerar este processo. Acima de tudo, de acordo com esta documentação , é altamente recomendável usar essa funcionalidade em ambientes de produção.

Objetivo

O objetivo é instalar o Nginx e implementar suporte ao Phusion Passenger no CentOS7 usando passenger-install-nginx-module para acelerar o reconhecimento de mudanças implementadas no Puppetmaster por agentes de marionetes.

Tentativas

Tentativa 1

sudo /usr/local/share/gems/gems/passenger-4.0.56/bin/passenger-install-nginx-module --auto --auto-download foi executado e as etapas de instalação foram seguidas.

Tentativa 2

Como o serviço Nginx não foi instalado durante a tentativa 1, ele foi instalado usando yum -y install nginx .

Tentativa 3

Pesquisando: "[emerg] unknown directive passenger_enabled" indicou que o nginx foi compilado sem suporte ao Phusion Passenger . Nesse caso, isso deve ser falso, pois passenger-install-nginx-module foi executado e a saída da instalação durante a tentativa 1 indicou que o Nginx deveria ter sido instalado.

Tentativa 4

/etc/nginx/nginx.conf

passenger_root  /usr/local/share/gems/gems/passenger-4.0.56;
passenger_ruby  /usr/bin/ruby;

/etc/nginx/conf.d/puppet.conf

passenger_enabled          on;

Tentativa 5

Para testar se esse problema ocorre usando outro servidor da Web, bem como sudo /usr/local/share/gems/gems/passenger-4.0.56/bin/passenger-install-apache2-module foi executado.

Resultado esperado

A execução de passenger-install-nginx-module e a conclusão das etapas de instalação instalam o Nginx. O serviço Nginx pode ser iniciado e o suporte ao Phusion-Passenger está incluído. Verificar se a porta 8140 está no estado LISTEN deve resultar em true, pois o Nginx deve iniciar o Puppetmaster.

Resultado atual

A execução de passenger-install-nginx-module e a conclusão das etapas de instalação não instalam o Nginx, enquanto a saída indica o contrário.

Nginx with Passenger support was successfully installed.

Please edit your Nginx configuration file (probably /opt/nginx/conf/nginx.conf),
and set the passenger_root and passenger_ruby configuration options in the
'http' block, like this:

  http {
      ...
      passenger_root /usr/local/share/gems/gems/passenger-4.0.56;
      passenger_ruby /usr/bin/ruby;
      ...
  }

A instalação do Nginx usando o yum também não funciona. O problema persiste mesmo quando passenger-install-nginx-module é executado novamente.

[vagrant@vm-one ~]$ sudo systemctl status nginx.service -l                        
   nginx.service - The nginx HTTP and reverse proxy server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled)
   Active: failed (Result: exit-code) since Thu 2015-01-01 01:55:56 UTC; 
  2min 19s ago
  Process: 7963 ExecStop=/bin/kill -s QUIT $MAINPID (code=exited, status=0/
  SUCCESS)
  Process: 7935 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)
  Process: 10814 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=1/FAILURE)
 Main PID: 7937 (code=exited, status=0/SUCCESS)

Jan 01 01:55:56 vm-one.local systemd[1]: Starting The nginx HTTP and reverse 
proxy server...
Jan 01 01:55:56 vm-one.local nginx[10814]: nginx: [emerg] unknown directive
 "passenger_enabled" in /etc/nginx/conf.d/puppet.conf:5
Jan 01 01:55:56 vm-one.local nginx[10814]: nginx: configuration file /etc/nginx
 /nginx.conf test failed
Jan 01 01:55:56 vm-one.local systemd[1]: nginx.service: control process exited,
 code=exited status=1
Jan 01 01:55:56 vm-one.local systemd[1]: Failed to start The nginx HTTP and
reverse proxy server.
Jan 01 01:55:56 vm-one.local systemd[1]: Unit nginx.service entered failed state.

Tentando instalar outro servidor da web com os resultados do suporte ao passageiro em:

 * Checking for Apache 2...
      Found: no
 * Checking for Apache 2 development headers...
      Found: no

Isso indica que passenger-install-apache2-module , em contraste com passenger-install-nginx-module , parece verificar se um servidor da Web foi instalado ou não.

    
por 030 01.01.2015 / 03:36

1 resposta

5

Eu sou o autor do Phusion Passenger. Você está entendendo mal alguma coisa sobre o Nginx.

Em primeiro lugar, o Nginx não suporta módulos carregáveis dinamicamente. Isso significa que a única maneira de estender o Nginx é recompilando o Nginx do zero, com certos módulos incluídos.

Em seu modelo mental, você parece pensar que passenger-install-nginx-module instala um arquivo de módulo em algum lugar e que yum install nginx instala uma instância Nginx em algum lugar, que então carrega o módulo Passenger. Isto é falso. passenger-install-nginx-module compila um Nginx totalmente novo do zero, com o módulo Passenger habilitado e vinculado estaticamente dentro dele. Dependendo dos parâmetros que você forneceu (mais notavelmente o prefixo de instalação), você terminará com uma instalação Nginx inteiramente separada - uma que é totalmente independente daquela que você instala com o yum.

Isto está documentado extensivamente no wiki do Passenger: Por que o Passenger não pode estender meu Nginx? . Isso não é algo que nós - os autores do passageiro - decidimos. É assim que o próprio Nginx funciona fundamentalmente, e não podemos mudar isso. Instalar qualquer módulo Nginx é assim. Está em contraste com os módulos do Apache, que funcionam da maneira que você pensa que eles funcionam.

Em segundo lugar, você parece estar assumindo que a instalação do serviço Nginx é algo que o Passenger cuida. Isto é falso. As definições de serviço são completamente complementares específicas da plataforma e até mesmo específicas da distribuição, adicionadas pelos empacotadores da distribuição. As definições de serviço não são incluídas no código-fonte Nginx nem instaladas pelo Passenger. Portanto, se você instalar o Passenger / Nginx a partir da fonte (em oposição aos RPMs), você deverá instalar as definições de serviço por conta própria. Há uma seção no manual sobre isso.

    
por 01.01.2015 / 14:01