Introdução
No post anterior, preparamos um banco MySQL 5.5 e a UnixODBC na VM do Ubuntu 64. Agora, vamos instalar um DBAccess 64 bits no Linux e configurá-lo para usar o MySQL.
Instalação
Basicamente, precisamos de um arquivo contendo a distribuição 64 bits Linux do DBAccess. No exemplo de instalação, usei a versão disponível no portal da Totvs ( 16-03-15-DBACCESS_LINUX64_20141119.TAR.GZ )
Após subir a VM, usamos um WINSCP para criar dentro na estrutura de diretórios proposta para a aplicação (Post – Parte 01), uma pasta para a build do DBAccess que vamos instalar. A partir da pasta /totvs, criamos a pasta /dbaccess, e dentro dela a pasta 20141119 (referente a build em uso), e copiamos o arquivo mencionado para ela.
Usando um Putty, acessamos a VM pelo terminal e descompactamos o arquivo, usando os comandos:
cd /totvs/dbaccess/20141119/ tar zxvf 16-03-15-DBACCESS_LINUX64_20141119.TAR.GZ
Feito isso, vamos subir o DBAccess em modo “console”. A distribuição Linux 64 do DBAccess possui 2 executáveis : dbaccess64opt (Build Release) e dbaccess64dbg (Build Debug). A pasta “multi” significa que a versão de DBAccess dentro dela foi feita para conectar com múltiplos bancos de dados. Para subir esta versão em modo console, usamos os seguintes comandos :
cd multi export LD_LIBRARY_PATH=./ ./dbaccess64opt
Configurar conexão do MySQL no DBAccess
Você pode utilizar um DBAccess Monitor instalado no Windows, por exemplo, para conectar no DBAccess Server da máquina Linux, e proceder com a configuração da conexão com o MySQL.
Ao entrar na aba MySQL, e clicar em “Novo”, crie uma configuração com o mesmo nome de DSN no Linux que criamos no post anterior – no caso do exemplo, envp11mysql. Preencha os campos “usuário” e “senha” com o usuário e senha que criamos no MySQL durante a criação do banco de dados envp11mysql.
Testar a conexão
Usando o próprio DBAccess Monitor, na pasta “Assistentes”, usamos o recurso de Validação de Conexão, informamos o banco MySQL, depois informamos o nome da conexão (envp11mysql), e devemos receber a mensagem abaixo:
Para ver o que houve, vamos olhar o console do DBAccess no terminal do Linux. Deve haver uma mensagem de erro parecida com a mensagem abaixo:
Begin TopClient Thread (3256297216,192.168.1.63,MYSQL/envp11mysql,DBMonitor,julio.wittwer,NOTE-AUTOMAN) BEGINLOG] Connection [MYSQL/envp11mysql] could not load database client library [libmyodbc3_r.so] [ENDLOG] [BEGINLOG] libmyodbc3_r.so: cannot open shared object file: No such file or directory [ENDLOG] Exit TopClient Thread (3256297216) [ERROR -35]
O DBAccess está procurando uma lib client antiga do MySQL, para tentar conectar com ele, e não vai encontrá-la. Após instalar o DBAccess e configurar a conexão, precisamos editar o arquivo dbaccess.ini, e informar ao DBAccess que ele deve carregar a UnixODBC para acessar o MySQL. Para isso, usamos a chave clientlibrary na seção [MYSQL].
Primeiro, finalize o DBACcess, usando Control+C no console. Agora, vamos localizar o driver da UnixODBC. Normalmente ele está em alguma pasta da lib gnu Linux, em /usr/lib. Para verificar onde exatamente ela está, usamos o comando abaixo:
find /usr/lib -name 'libodbc.so*'
No meu ambiente, foram localizados os seguintes arquivos:
/usr/lib/x86_64-linux-gnu/libodbc.so.1.0.0 /usr/lib/x86_64-linux-gnu/libodbc.so.1
No dbaccess.ini, dentro da seção [mysql], colocamos a chave abaixo:
clientlibrary=/usr/lib/x86_64-linux-gnu/libodbc.so.1
Após salvar o arquivo e subir o DBAccess novamente, vamos testar a conexão usando o assistente do DBAccess Monitor. E, se tudo estiver de acordo, devemos visualizar a mensagem abaixo:
Subindo o DBAccess em modo “daemon”
Haja visto que o Banco de Dados MYSQL já está no ar, e o DBAccess está funcionando, podemos subir ele em modo “daemon”, sem deixar ele preso ao terminal. Para isso, usando o próprio terminal atual, finalizamos o DBAccess em modo console usando Control+C, e subimos ele em modo “daemon” usando o seguinte comando:
nohup ./dbaccess64opt -daemon
Para verificar se o processo do DBAccess está realmente no ar, podemos rodar uma instrução do Linux para listar os processos, filtrando o resultado por aqueles que contém a string “dbaccess”, usando o comando abaixo:
ps -ef | grep dbaccess
O retorno deste comando deve ser algo parecido com:
siga0984 1568 1 0 08:54 pts/0 00:00:00 ./dbaccess64opt daemon siga0984 1591 1410 0 08:58 pts/0 00:00:00 grep --color=auto dbaccess
O que nos interessa é a primeira linha, pois informa o número do processo pelo qual o sistema operacional subiu o DBAccess64 – no nosso exemplo, 1568.
Para baixar o processo do DBAccess de forma controlada, usamos um terminal do Linux, e usamos o comando kill, informando como parâmetro o número do processo a ser finalizado. Por exemplo:
kill 1568
Para verificar se o processo está no ar, podemos usar novamente o comando “ps”. As mesmas regras se aplicam ao processo do Protheus Server. Ele pode ser colocado em modo “daemon” usando a mesma sintaxe, e verificado da mesma forma, usando o comando “ps”.
Conclusão
Com o DBAccess instalado e funcionando na própria máquina Linux, basta editar o arquivo appserver.ini da instalação do Protheus Server feita no segundo post desta sequência, para apontar para o banco MYSQL em localhost, para o alias “envp11mysql”, e agora temos um ambiente mínimo e operacional do Protheus 11 em uma máquina Linux 64.
Entre uma distribuição e outra de Linux, pode haver mudança nos comandos, a configuração de alguns itens pode ser manual e dar um pouco mais de trabalho, algumas distribuições vem com Firewall habilitado e requer mais passos de setup para abrir as exceções, alguns arquivos podem estar em outro lugar, ou ter um nome diferenciado, o gerenciador de pacotes é diferente, e assim por diante.
Estes primeiros posts foram apenas para “abrir o apetite”, temos muito a abordar ainda sobre isso nos próximos posts deste assunto 😀
Enquanto isso, agradeço novamente a audiência, e desejo a todos TERABYTES de SUCESSO 😉
Um pequeno detalhe, onde vc escreve `xport LD_LIBRARY_PATH=./` o comando deveria ser `export`.
Eu costumo criar um arquivo para configuração do LD_LIBRARY_PATH, que evita eu ter que usar o `export` a cada chamada no comando, e acho que fica mais organizado, mas isso vai de cada um claro.
Eu faço isso :
echo “/totvs/dbaccess/20141119/multi/” > /etc/ld.so.conf.d/dbaccess64-libs.conf
/sbin/ldconfig
Isso funciona no Ubuntu, onde os arquivos *.conf encontrados na pasta /etc/ld.so.conf.d/ são carregados pelo ldconfig.
Desta forma, o ldconfig irá adicionar a pasta onde estão as bibliotecas do dbacces no ambiente padrão, e bastaria chamado o ./dbaccessopt, sem precisar do export.
CurtirCurtido por 1 pessoa
Opa, perfeitamente !! Faltou um “e” ..rs.. Tks 😀
CurtirCurtir
Primeiro, obrigado por compartilhar!
Agora uma dúvida, dbmonitor, sem chance rodar em linux? Observei que você comentou que a configuração é via windows.
Valeu!
CurtirCurtido por 1 pessoa
Fala Marcelo, beleza ? Seguinte …. No exemplo que eu usei, eu parti de um Linux 64 bits, sem nenhuma interface gráfica. É possível rodar o DBMonitor em Linux, desde que você tenha uma interface gráfica ou X11, e o pacote de compatibilidade de aplicações 32 bits — ou a versão 32 “pura” msm 😀
CurtirCurtir
Mas a TOTVS disponibiliza o DBMonitor nativo para Linux? Só encontramos o DBMonitor for Windows… 😦
CurtirCurtido por 1 pessoa
Fala Francisco !! Então, o DBAccess Monitor para Linux vêm dentro — ou deveria vir — no arquivo de atualização do DBAccess para Linux… porém, apenas em build 32 bits.
CurtirCurtir
Vlw mestre…
Mas eu observei que no portal da TOTVS não tem mais as versão de 32b. Ou eu que não soube procurar corretamente.
CurtirCurtir
Pingback: Ubuntu Server 16.04 + PostgreSql + Totvs DbAccess - Ruann Carlos
uma pergunta: eu posso alterar o password editando o dbacess.ini?
CurtirCurtido por 1 pessoa
Hummm, a senha no dbaccess.ini está criptografada, a única forma (atualmente) de editarmos uma senha é usando um DBAccess Monitor. 😉
CurtirCurtir
O que pode estar acontecendo de errado quando eu uso o DBMonitor para criar um novo ambiente e aconexão fica OK mas, ao reiniciar o DBAccess o ambiente não está mais configurado no DBMonitor?
CurtirCurtido por 1 pessoa
Opa, beleza ? Verifica no log de console do dbaccess, se não está havendo alguma falha de gravação no arquivo dbaccess.ini — pode ser direitos na pasta … Confirma após a criação do ambiente o arquivo dbaccess.ini foi atualizado — manda um “cat” nele !
😀
CurtirCurtir
Beleza! E aí? Agradeço muito pela sua resposta e pela sua ajuda! Todas as pastas tiveram permissão dada via “chmod -R 777”. DBAccess e DBMonitor são executados como “su”. Mas, cara, estou observando o log do DBAccess e o que acontece é que, no momento da criação do novo ambiente não há nenhuma informação sobre a criação retornada no DBAccess e o arquivo dbaccess.ini não salva a informação criada. Outro teste que fiz foi editar o ip do licenseServer diretamente no dbaccess.ini para verificar se o DBAccess lê ele, mas a licensa não aparece no console do DBAccess. Alguma ideia do que pode estar ocorrendo?
CurtirCurtido por 1 pessoa
Rapaz … que estranho … Se você baixar e subir o DBaccess, ele lê a informação do ini ? Estranho falhar a escrita sem nenhuma mensagem… É um comportamento bem atípico, neste caso recomendo abrir um chamado na Totvs para verificar o que e por que ocorre 😀
CurtirCurtir