X11 para o usuário do apache

2

Estamos usando inkscape para converter imagens SVG enviadas para nosso servidor por meio de um formulário da web. Para este inkscape oferece um modo em lote através da opção -z , mas este modo em lote tem uma falha: Quando inkscape é executado pelo usuário do apache, ele quebra dizendo

$ inkscape -z -W drawing.svg
X11 connection rejected because of wrong authentication.
The application 'inkscape' lost its connection to the display localhost:11.0;
most likely the X server was shut down or you killed/destroyed
the application.

Se você fizer o mesmo que um usuário normal, também receberá erros:

Xlib: connection to "localhost:11.0" refused by server
Xlib: PuTTY X11 proxy: MIT-MAGIC-COOKIE-1 data did not match
(inkscape:24050): Gdk-CRITICAL **: gdk_display_list_devices: assertion 'GDK_IS_DISPLAY (display)' failed
301.27942

Mas pelo menos inkscape dá a resposta correta (aqui o número informando a largura da imagem).

Alguém sabe como fazer isso funcionar também para o usuário do apache? Faz sentido autorizar apache a usar X (se sim, como)? De qualquer forma, não parece a solução certa ...

    
por fuenfundachtzig 25.10.2010 / 15:07

2 respostas

1

Esse comportamento é um bug reconhecido, vamos esperar que ele seja corrigido na próxima versão: link

Enquanto isso, meu google-fu sugere que você execute o vnc-server em vez do Xvfb. Pode ser executado ao mesmo tempo que o seu servidor X. Você pode executá-lo como usuário do apache, portanto, o apache não terá problemas para exibir aplicativos X nesse buffer.

Essa conexão é autenticada apenas por senha, portanto, não importa qual usuário está se conectando ao vncviewer. No entanto, observe que o protocolo VNC não é necessariamente seguro, portanto, certifique-se de usá-lo somente localmente e configure seu firewall apropriadamente.

Inicie o servidor vnc como usuário do apache:

vncserver :2 -geometry 1024x768 - Isso deve ser feito apenas uma vez

No script executado pelo apache, só execute o aplicativo; não inicie nenhum vncserver ou vncviewer: DISPLAY=:2.0 inkscape -z -W drawing.svg

O Google encontrou a resposta aqui: link

    
por 07.02.2011 / 15:55
0

Eu encontrei um problema semelhante, a correção é fácil, basta executar o Xvfb como um daemon e configurar o Apache usuário (em seu ambiente ou no script de inicialização) com DISPLAY e o% apropriado%.

    
por 25.10.2010 / 15:10