Ir para conteúdo
  • Cadastre-se

dev botao

AJUDA SERVIDOR LINUX


Ver Solução Respondido por Renato Rubinho,

Recommended Posts

  • Membros Pro
Postado

- Boa tarde, amigos estou hospedando meu sistema em um servidor LINUX e pessoal lá da nuvem é super gente fina, eu não sei nada de Linux e estou homologando a acbrLib em PHP, no local host windows/64 as dlls até onde testei estão funcionando bem, então resolvi enviar os fontes para a nuvem e testar lá, enviei essa dica: https://acbr.sourceforge.io/ACBrLib/ComoInstalarDistribuir.html que aparentemente foi feita corretamente porque na primeira tentativa de acessar os arquivos *.so dava um tipo de erro e após essa dica mudou o erro:

 

Serviço não disponível

O servidor está temporariamente impossibilitado de atender sua solicitação
devido a tempo de inatividade para manutenção ou problemas de capacidade.
Tente novamente mais tarde.

Isso na tela e no servidor linux que possue um log gera esse erro:

 

[Thu Oct 31 13:45:14.291108 2024] [proxy_fcgi:error] [pid 2569713:tid 139719530747456] [client 177.81.180.211:61013] AH01067: Failed to read FastCGI header, referer: https://...

[Thu Oct 31 13:45:14.291214 2024] [proxy_fcgi:error] [pid 2569713:tid 139719530747456] (104)Connection reset by peer: [client 177.81.180.211:61013] AH01075: Error dispatching request to : , referer: https://...

Se algum colega poder dar uma dica para SERVIDOR LINUX do porque não consigo ler as acbrlib´s agradeço.

att;

HASA

  • Fundadores
Postado

Me parece que as permissões não estão configuradas corretamente...

Mas somente acessando o Servidor para saber...

Eu não recomendo você subir um serviço em uma tecnologia que você ou sua empresa não domine...

Você poderia contratar algum Free-lancer de TI para te ajudar com isso...

Mas subir um Servidor sem conhecimento é um risco .. pode expor o Servidor a sérios problemas de segurança

  • Curtir 2
Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

  • Membros Pro
Postado

Olá Daniel, descobri que o erro da exatamente aqui:

$ffi = FFI::cdef( file_get_contents( $importsPath ), $dllPath  );

As permissões que citou tem haver pq os caminhas e nomes dos arquivos estão certinho, inclusive verifiquei a grafia por causa do MIUSCULO e MINUSCULO e tudo certo também.

Verificamos as permissões de pasta de arquivo, tudo ok.

o erro persiste:

Service Unavailable

The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later.


Apache/2.4.52 (Ubuntu) Server at sxxxxx.xxxxx.com Port 443

Qualquer dica dos colegas é bem vinda.

att;

HASA

7 horas atrás, Daniel Simoes disse:

Me parece que as permissões não estão configuradas corretamente...

Mas somente acessando o Servidor para saber...

Eu não recomendo você subir um serviço em uma tecnologia que você ou sua empresa não domine...

Você poderia contratar algum Free-lancer de TI para te ajudar com isso...

Mas subir um Servidor sem conhecimento é um risco .. pode expor o Servidor a sérios problemas de segurança

 

  • Consultores
Postado
Em 01/11/2024 at 08:23, Daniel Simoes disse:

Eu não recomendo você subir um serviço em uma tecnologia que você ou sua empresa não domine...

Primeiramente, gostaria de frisar a sugestão de procurar um suporte especializado para suporte ao cenário que você não domina.

Em 01/11/2024 at 16:14, HASA disse:

erro da exatamente aqui:

$ffi = FFI::cdef( file_get_contents( $importsPath ), $dllPath  );

Temos relatos de problemas com servidores SEM ambiente gráfico ao instânciar o FFI, pois as bibliotecas do ACBr ainda possuem dependência do ambiente gráfico devido aos motores geradores de relatórios.

Caso o seu servidor NÃO possua ambiente gráfico:

1. Será necessário instalar um emulador tipo o Xvfb

2. No PHP, para funcionar o acesso ao ambiente gráfico emulado, é necessário adicionar a linha a seguir, antes de instanciar a Lib.

putenv("DISPLAY=:1")

2.1. Segue função, experimental, para identificar se existe ambiente gráfico emulado ( verificaAmbienteGrafico ) e a função CarregaContents() atualizada com o tratamento para o cenário SEM ambiente gráfico.

function verificaAmbienteGrafico()
{
    $verificaX11 = shell_exec('pgrep Xorg 2>&1') !== null;
    $displayX11 = getenv('DISPLAY') !== false;
    if ($verificaX11 || $displayX11) {
        // Ambiente grafico X11
        return 1;
    } else {
        $verificaXVFB = shell_exec('pgrep Xvfb 2>&1') !== null;
        $displayXVFB = strpos(getenv('DISPLAY'), ':99') !== false;
        if ($verificaXVFB || $displayXVFB) {
            // Emulador XVFB    
            return 2;
        } else {
            // Sem ambiente grafico
            return 0;
        }
    }
}
function CarregaContents($importsPath, $dllPath)
{
    $modoGrafico = verificaAmbienteGrafico();
    if ( $modoGrafico === 0) {
        throw new Exception("Ambiente gráfico não identificado");
        return -10;
    }
    if ($modoGrafico === 2){
        putenv("DISPLAY=:1");
    }
    $ffi = FFI::cdef(
        file_get_contents($importsPath),
        $dllPath
    );
    return $ffi;
}

3. Favor atualizar as funções do item 2.1 na ACBrComum.php e reportar o resultado

  • Curtir 1
  • 2 semanas depois ...
  • Membros Pro
Postado

Boa tarde, está instalado, resposta do técnico:

Até onde entendo, a interface gráfica ("X") não vai ficar rodando, a menos que tenha algo a usando no momento (por exemplo uma tela de login -- que alias ficaria pública na internet), um processo que use a interface, como o Firefox, etc.).

Assim, este código abaixo está errado (na minha opinião). Ele não está verificando se existe o ambiente disponível e sim se ele está rodando no momento (o grep do linux (este pgrep do seu código) apenas mostra processos que estão ativos no momento, como o gerenciador de tarefas do Windows).

Pesquisando no forum vi algo sobre LEGACY pode ter haver com meu caso?

att;

HASA

  • Consultores
Postado
2 horas atrás, HASA disse:

Assim, este código abaixo está errado (na minha opinião).

Você tem o cenário e os fontes para testar. Se está errado, remova pois como eu disse acima, é uma função experimental, a ideia é verificar automaticamente se precisa ou não do código PHP para setar o display. 

Teste com a função conforme abaixo, apenas setando o display como 99 ao invés de 1.

function CarregaContents($importsPath, $dllPath)

{

     putenv("DISPLAY=:99");

    $ffi = FFI::cdef(

        file_get_contents($importsPath),

        $dllPath

    );

    return $ffi;

}

1.Tenha certeza que o servidor NÃO possui ambiente gráfico 

2. Tenha certeza que o emulador xvfb está instalado 

3. Confirme se está iniciando o emulador xvfb 

4. Teste uma página qualquer para verificar se o servidor de internet e o PHP estão funcionando 

5. Verifique no phpinfo se o FFI está habilitado 

  • 2 semanas depois ...
  • Membros Pro
Postado

Bom dia, resultado da opção 5

FFI

FFI support enabled
Directive Local Value Master Value
ffi.enable On On
ffi.preload no value no value

att; 

HASA

  • Membros Pro
Postado

Boa tarde, Renato tem uma dica de como posso pelo app WinSCP em meu pc testar com certeza que o emulador xvfb está instalado ?

att;

HASA

  • Consultores
Postado

Não sei lhe dizer.

Caso lhe ajude, no ambiente que montamos de teste com Ubuntu Console, bastaram os comandos a seguir para instalar:

sudo apt update
sudo apt install xvfb

...e para executar o comando a seguir, lembrando que se o servidor for reinciado, este comando deve ser executado novamente, mas você pode configurar alguma opção para executá-lo automaticamente na inicialização.

Xvfb :99 -screen 0 1280x1024x16 &

Após isso, com o código a seguir a bilbioteca foi carregada via FFI.

Em 13/11/2024 at 16:48, Renato Rubinho disse:

Teste com a função conforme abaixo, apenas setando o display como 99 ao invés de 1.

function CarregaContents($importsPath, $dllPath)

{

     putenv("DISPLAY=:99");

    $ffi = FFI::cdef(

        file_get_contents($importsPath),

        $dllPath

    );

    return $ffi;

}

 

  • Membros Pro
Postado

Bom dia, veja a imagem:

Capturadetela2024-11-25143810.thumb.png.d0f0558348703bdeb8a1998f516ef88c.png

Ou seja o Xvfb consigui fazer rodar, mas as lib´s apresentaram alguns erros registrados pelo kernel:

 [nov25 12:55] traps: php-fpm8.1[3198722] general protection fault ip:7f9974662519 sp:7ffef1c10c28 error:0 in libacbrnfe64.so[7f9974400000+764000]

[nov25 12:59] php-fpm8.1[3199101]: segfault at 0 ip 00007f99772c67bc sp 00007ffef1c10860 error 4 in libglib-2.0.so.0.7200.4 (deleted)[7f9977280000+8f000]

[  +0,000052] Code: 45 88 00 00 00 00 48 89 85 60 ff ff ff 90 49 8b 4d 00 48 63 d3 c7 45 b8 00 00 00 00 4c 8d 14 d5 00 00 00 00 4c 01 d1 4c 8b 31 <41> 0f b6 06 3c 2d 0f 84 48 03 00 00 4d 8b 77 40 41 f6 47 38 08 be

[nov25 13:03] php-fpm8.1[3199145]: segfault at 0 ip 00007f99772c67bc sp 00007ffef1c10860 error 4 in libglib-2.0.so.0.7200.4 (deleted)[7f9977280000+8f000]

[  +0,000038] Code: 45 88 00 00 00 00 48 89 85 60 ff ff ff 90 49 8b 4d 00 48 63 d3 c7 45 b8 00 00 00 00 4c 8d 14 d5 00 00 00 00 4c 01 d1 4c 8b 31 <41> 0f b6 06 3c 2d 0f 84 48 03 00 00 4d 8b 77 40 41 f6 47 38 08 be

[ +11,412780] php-fpm8.1[3199109]: segfault at 0 ip 00007f99772c67bc sp 00007ffef1c10860 error 4 in libglib-2.0.so.0.7200.4 (deleted)[7f9977280000+8f000]

[  +0,000030] Code: 45 88 00 00 00 00 48 89 85 60 ff ff ff 90 49 8b 4d 00 48 63 d3 c7 45 b8 00 00 00 00 4c 8d 14 d5 00 00 00 00 4c 01 d1 4c 8b 31 <41> 0f b6 06 3c 2d 0f 84 48 03 00 00 4d 8b 77 40 41 f6 47 38 08 be

[nov25 13:40] php-fpm8.1[3199590]: segfault at 0 ip 00007f99772c67bc sp 00007ffef1c10860 error 4 in libglib-2.0.so.0.7200.4 (deleted)[7f9977280000+8f000]

[  +0,000037] Code: 45 88 00 00 00 00 48 89 85 60 ff ff ff 90 49 8b 4d 00 48 63 d3 c7 45 b8 00 00 00 00 4c 8d 14 d5 00 00 00 00 4c 01 d1 4c 8b 31 <41> 0f b6 06 3c 2d 0f 84 48 03 00 00 4d 8b 77 40 41 f6 47 38 08 be

att;

HASA

  • Consultores
Postado

@HASA apenas complementando que o @Renato Rubinho citou acima.
OpenSSL se for versão 3.X, vc deve configurar como legacy: (para saber como configurar, clique aqui )

image.png?ex=6746b224&is=674560a4&hm=8a9


Atenção ao criar o arquivo simbólico, veja se existe o arquivo libxml2.so.2 na pasta /usr/lib/
Para criar o link simbolico:

ln -s /usr/lib/x86_64-linux-gnu/libxml2.so.2  /usr/lib/x86_64-linux-gnu/libxml2.so

Instalar todas dependências necessárias:
 xvfb,  xauth, openssl,  libxml2, libgtk2.0-0, ttf-mscorefonts-installer

Precisa se atentar para permissao nas pastas para leitura e escrita

  • Curtir 1
Consultor SAC ACBr

Daniel de Morais (Infocotidiano)
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.

The popup will be closed in 10 segundos...