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

  • Membros Pro
Postado
Em 26/11/2024 at 13:28, Daniel InfoCotidiano disse:

@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

- Boa tarde Daniel, veja a resposta do técnico, e ainda eu atualizei os fontes do acbr e vi que vcs atualizaram o acbrcomum.php e atualizei o meu projeto tbm, notei ao atualizar que meu projeto está com a estrutura MVC e já carrego no isso os css´s alguns js´s e eu retiro essa linha header('Content-Type: application/json; charset=UTF-8'); do arquivo acbrcomum.php porque se não o site todo vira texto. Não sei se isso influenciam na leitura dos arquivo .so, no mais o técnico de Linux respondeu:

Todas estas bibliotecas já estavam instaladas, veja:

install libxml2

A ler as listas de pacotes... Pronto

A construir árvore de dependências... Pronto

A ler a informação de estado... Pronto

libxml2 is already the newest version (2.9.13+dfsg-1ubuntu0.4).

0 pacotes actualizados, 0 pacotes novos instalados, 0 a remover e 99 não actualizados.

install libgtk2.0-0

A ler as listas de pacotes... Pronto

A construir árvore de dependências... Pronto

A ler a informação de estado... Pronto

libgtk2.0-0 is already the newest version (2.24.33-2ubuntu2.1).

0 pacotes actualizados, 0 pacotes novos instalados, 0 a remover e 99 não actualizados.

install ttf-mscorefonts-installer

A ler as listas de pacotes... Pronto

A construir árvore de dependências... Pronto

A ler a informação de estado... Pronto

ttf-mscorefonts-installer is already the newest version (3.8ubuntu2).

0 pacotes actualizados, 0 pacotes novos instalados, 0 a remover e 99 não actualizados.

root@ds128564:~# apt install openssl

A ler as listas de pacotes... Pronto

A construir árvore de dependências... Pronto

A ler a informação de estado... Pronto

openssl is already the newest version (3.0.2-0ubuntu1.18).

0 pacotes actualizados, 0 pacotes novos instalados, 0 a remover e 99 não actualizados.

install xauth

A ler as listas de pacotes... Pronto

A construir árvore de dependências... Pronto

A ler a informação de estado... Pronto

xauth is already the newest version (1:1.1-1build2).

0 pacotes actualizados, 0 pacotes novos instalados, 0 a remover e 99 não actualizados.

install xvfb

A ler as listas de pacotes... Pronto

A construir árvore de dependências... Pronto

A ler a informação de estado... Pronto

xvfb is already the newest version (2:21.1.4-2ubuntu1.7~22.04.12).

0 pacotes actualizados, 0 pacotes novos instalados, 0 a remover e 99 não actualizados.

Com relação ao ".so", localizei os mesmos em outro local:

ls -lh /snap/gnome-42-2204/176/usr/lib/x86_64-linux-gnu/ | grep libxml

lrwxrwxrwx  1 root root    17 fev 16  2024 libxml2.so -> libxml2.so.2.9.13

lrwxrwxrwx  1 root root    17 fev 16  2024 libxml2.so.2 -> libxml2.so.2.9.13

-rw-r--r--  1 root root  1,9M mar 26  2024 libxml2.so.2.9.13

lrwxrwxrwx  1 root root    16 mar 24  2022 libxmlb.so.2 -> libxmlb.so.2.0.0

-rw-r--r--  1 root root  167K mar 26  2024 libxmlb.so.2.0.0

Criei os symlink conforme sua instrução:

ln -s /snap/gnome-42-2204/176/usr/lib/x86_64-linux-gnu/libxml2.so.2 /usr/lib/x86_64-linux-gnu/libxml2.so

ln -s /usr/lib/x86_64-linux-gnu/libssl3.so /usr/lib/x86_64-linux-gnu/libssl.so

ln -s /snap/core22/1663/usr/lib/x86_64-linux-gnu/libcrypto.so.3 /usr/lib/x86_64-linux-gnu/libcrypto.so

Fiz também aquela configuração do Legacy para o OpensSSL:

openssl list -providers

Providers:

  default

    name: OpenSSL Default Provider

    version: 3.0.2

    status: active

  legacy

    name: OpenSSL Legacy Provider

    version: 3.0.2

    status: active

Reiniciei o Apache e o PHP

E ao rodar a aplicação diz: "Ambiente gráfico não identificado"

att;

HASA

  • Membros Pro
Postado

Bom dia Daniel!

PHP Version 8.1.2-1ubuntu2.19

Linux ds128564 5.15.0-97-generic #107-Ubuntu SMP Wed Feb 7 13:26:48 UTC 2024 x86_64

Att;

HASA

  • Membros Pro
Postado

Boa tarde, segue:

root@dsxxxxxx:~# cat /etc/os-release

PRETTY_NAME="Ubuntu 22.04.2 LTS"

NAME="Ubuntu"

VERSION_ID="22.04"

VERSION="22.04.2 LTS (Jammy Jellyfish)"

VERSION_CODENAME=jammy

ID=ubuntu

ID_LIKE=debian

HOME_URL="https://www.ubuntu.com/"

SUPPORT_URL="https://help.ubuntu.com/"

BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"

PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"

UBUNTU_CODENAME=jammy

root@dsxxxxx:~#

att;

HASA

×
×
  • 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...