Falso erro iniciando o Hue

1

Eu instalei o Hue no CentOS 7 do repositório Cloudera CDH5.

Ao iniciar, ele informa um erro:

# systemctl status hue
hue.service - SYSV: Hue web server
   Loaded: loaded (/etc/rc.d/init.d/hue)
   Active: failed (Result: resources) since sob 2016-11-26 20:25:31 UTC; 6min ago
  Process: 3448 ExecStart=/etc/rc.d/init.d/hue start (code=exited, status=0/SUCCESS)

lis 26 20:25:20 node0 systemd[1]: Starting SYSV: Hue web server...
lis 26 20:25:20 node0 su[3457]: (to hue) root on none
lis 26 20:25:31 node0 hue[3448]: Starting hue: [  OK  ]
lis 26 20:25:31 node0 systemd[1]: PID file /usr/lib/hue/pids/supervisor.pid not readable (yet?) after start.
lis 26 20:25:31 node0 systemd[1]: Failed to start SYSV: Hue web server.
lis 26 20:25:31 node0 systemd[1]: Unit hue.service entered failed state.

Isso é erro falso , o Hue, na verdade, iniciou e criou o arquivo pid em um diretório diferente ( /var/run/hue/supervisor.pid ).

# ps -ef | grep hue
hue       3877     1  0 20:25 ?        00:00:00 python2.7 /usr/lib/hue/build/env/bin/supervisor -p /var/run/hue/supervisor.pid -l /var/log/hue -d
hue       3949  3877  0 20:25 ?        00:00:03 python2.7 /usr/lib/hue/build/env/bin/hue runcherrypyserver

No diretório /etc/init.d/hue pid é configurado corretamente através da variável PIDFILE ... embora tenha notado também o diretório reportado pelo systemctl como um comentário:

# pidfile: /usr/lib/hue/pids/supervisor.pid
[...]
PIDFILE=/var/run/hue/supervisor.pid

Agora, examinei todos os /etc , /usr e /var e não encontrei nenhuma configuração que disse ao systemd para procurar por pidfile nesse diretório específico. Alguma dica?

    
por Kombajn zbożowy 26.11.2016 / 21:56

1 resposta

2

I […] and cannot find any piece of configuration that told systemd to look for pidfile in that specific directory.

Vocês dois podem e fizeram. Você até coloca isso na sua pergunta:

I noticed also [the] directory reported by systemctl as a comment:

# pidfile: /usr/lib/hue/pids/supervisor.pid

Aí está. Há as informações de configuração que informaram systemd-sysv-generator onde o arquivo PID está.

Dentre os vários estilos principais de rc scripts (Mewburn rc , OpenBSD rc , LFS, Fedora / RHEL / CentOS, SUSE, Debian / Ubuntu e OpenRC) este é um dos dois que O systemd tenta importar. A oferta é o "SYSV:" que foi anexado à descrição. Quando importa o outro estilo, ele inclui "LSB:".

pid directory is correctly set via PIDFILE variable

"corretamente" é um exagero. Seu antigo script rc é autocontraditório. As informações de configuração em seu cabeçalho contradizem o que o script realmente faz.

Uma abordagem é corrigir seu script rc auto-contraditório. Um melhor é escrever uma unidade de serviço em vez disso. Usar seu script rc incorreto está resultando na execução do daemon sob dois gerenciadores de serviços aninhados, supervisor no systemd. Ironicamente, nenhum desses arquivos PID é necessário, em primeiro lugar.

Seria algo parecido com:

[Unit]
Description=Hue web server
Documentation=https://unix.stackexchange.com/a/326354/5132

[Service]
Type=simple
User=hue
WorkingDirectory=/usr/lib/hue/
Environment=PYTHON_EGG_CACHE=/tmp/.hue-python-eggs
ExecStart=/usr/bin/env build/env/bin/hue runcherrypyserver
SyslogIdentifier=hue

[Install]
WantedBy=multi-user.target

Leitura adicional

por 27.11.2016 / 13:41