Protheus no Linux – Parte 02

Introdução

No post anterior, vimos um passo a passo da montagem de um ambiente mínimo de um servidor Linux, mais precisamente um Ubuntu Server 14 – 64 bits, conde já executamos algumas etapas de preparação para ele receber um Protheus Server. Neste post, vamos colocar um Protheus Server 11 64 bits nele !

Instalando o Protheus Server

Após iniciar sua VM, verificar o IP, e abrir um terminal ( Putty ), crie uma pasta a partir da pasta raiz do Linux, para armazenar seus ambientes e aplicações. No lugar de <usuario>, use o usuário que você criou na instalação do Linux.

sudo mkdir /totvs
sudo chown usuario /totvs
cd /totvs

Com estes comandos, criamos a pasta, e damos as permissões de “owner” (dono) da pasta ao seu usuário.

Vale lembrar de um ponto importante: todos os arquivos do Protheus no Linux, e inclusive estruturas de diretórios, por uma questão de convenção e compatibilidade estabelecidas no porte da aplicação para Linux, devem estar em letras minúsculas.

No nosso exemplo, vamos instalar apenas um Protheus 11 Server 64 bits. Para isso, eu proponho executar os comandos abaixo, para criar a seguinte estrutura de diretório:

mkdir /totvs/protheus11
mkdir /totvs/protheus11/envp11
mkdir /totvs/protheus11/bin_131227a

Para o exemplo acima, eu baixei apenas o Protheus 11 Server 64 em Linux, disponibilizado na seção de Download do portal da Totvs:

Arquivo    15-12-01-P11_APPSERVER_LINUX_X64.ZIP
Descrição  APPSERVER X64 700131227A  
Tamanho    59.6 MB

Primeiro, usando o WinSCP (SFTP), copie para a pasta ‘/totvs/protheus11/bin_131327a’ o arquivo “15-12-01-P11_APPSERVER_LINUX_X64.ZIP”.Após terminada a cópia, descompacte o arquivo usando o comando abaixo:

unzip 15-12-01-P11_APPSERVER_LINUX_X64.ZIP

A descompactação deve criar duas pastas, uma para os arquivos do Protheus Server , outra para o Smartclient Linux. Renomeie as pastas geradas para “appserver64” e “smartclient”, respectivamente, usando o comando “mv”, a partir da pasta /totvs/bin_131227a

mv appserverLinux_x64 appserver64
mv smartclientLinux smartclient

Entre na pasta appserver64, e descompacte todos os arquivos da pasta “appserver64”, usando os comandos abaixo:

cd appserver64
tar zxvf appsrvlinux_x64.tar.gz
tar zxvf printer_x64.tar.gz
tar zxvf libctreetmp_x64.tar.gz

Após descompactar, você pode remover todos estes arquivos com o comando:

rm -f *.tar.gz

Agora, vamos ajustar as propriedades de execução dos arquivos *.so do binário, usando o comando:

sudo chmod 777 *.so

Para o ambiente do ERP, Protheus 11, podemos criar toda a estrutura de pastas necessárias a partir da pasta /totvs/envp11, usando os comandos abaixo:

cd /totvs/protheus11/envp11
mkdir apo
mkdir data
mkdir system
mkdir systemload

Você pode pegar um repositório de objetos do portal, por exemplo o arquivo “16-06-14-BRA-EUA-PAR-URU-TTTP110.RPO”, bem como os demais arquivos necessários para criar um ambiente “do zero”, ou pode separar os arquivos necessários de seu ambiente Windows para montá-lo no Linux. O importante é que a versão do repositório do ERP deve ser a mesma versão dos arquivos de sistema (pasta ‘systemload‘).

Para um ambiente mínimo, você precisa da pasta “systemload” do seu ambiente Windows copiado na íntegra para o Linux, e na pasta “system” você precisa ter os arquivos com extensão XNU com as definições dos módulos do ERP, e de um arquivo “sigaadv.pss” do CD de instalação do ERP ou de um ambiente Windows. Este arquivo é usado como base para a criação do arquivo de senhas do ambiente, e parte do usuário “Admin”, sem senha (senha em branco). Se você já tem um ambiente Windows montado, você pode copiar o arquivo “sigapss.spf” deste ambiente para a pasta “system” do Linux.

Configurando o AppServer

Após copiar todos os arquivos necessários, vamos criar um arquivo de configuração para este ambiente no Protheus 11. Usando um editor no Windows ou no Linux, crie um arquivo chamado appserver.ini, com o seguinte conteúdo:

[general]
consolelog=1

[drivers]
active=tcp

[tcp]
type=tcpip
port=11010

[envp11]
sourcepath=/totvs/protheus11/envp11/apo
rootpath=/totvs/protheus11/envp11
startpath=/system/
rpodb=top
rpolanguage=por
rpoversion=110
localfiles=ctree

[dbaccess]
database=mysql
alias=envp11
server=localhost
port=7890

Este arquivo deve ser criado e/ou copiado para a pasta ‘/totvs/protheus11/bin_131227a/appserver64‘. Caso você já tenha um DBAccess com um banco de dados vazio configurado em uma máquina Windows, você pode apontar para ele. Esta sugestão de configuração já prevê o próximo post da sequência, onde vamos instalar um mysql e um DBAccess 64 bits no Linux, com unixodbc e tudo.

Nos testes atuais, eu subi um MSSQL Express na minha máquina Windows, usando um DBACcess Windows, e usei as seguintes configurações:

[dbaccess]
database=mssql
alias=envp11sql
server=192.168.1.63
port=7890

Para subir o Protheus Server em modo console no terminal Linux, entre na pasta /totvs/bin_131227a/appserver64, e use o comando:

./appsrvlinux

APPServer Linux 64

Agora, com todos os arquivos corretamente copiados para as devidas pastas no ambiente Linux, use um SmartClient da mesma Build, instalado na sua máquina Windows, edite o arquivo smartclient.ini, para criar uma nova conexão TCP para o Protheus Server no Linux, por exemplo:

[tcpubuntu14]
server=192.168.1.50
port=11010

Inicie seu SmartClient no Windows, utilizando os seguintes parâmetros:

Smartclient Win

Ao confirmar o início da aplicação, se tudo der certo, você deve ver uma tela rapidinha com uma mensagem “convertendo arquivo de senhas” e logo após uma tela de escolha de tema, parecida com a tela abaixo:

Smartclient Temas

As primeiras etapas de instalação do ERP, como por exemplo a criação do arquivo de Helps, é bem lenta no Linux. Quando eu digo que é lento, acredite em mim…

Isto é bem mais rápido, mesmo no Linux, quando usamos um c-Tree Server para controle dos dicionários. Também teremos um post exclusivo dedicado a esta etapa, onde inclusive vamos instalar o c-Tree Server nesta VM, e fazer os ajustes necessários no appserver.ini para passar a usá-lo.

Por padrão, os dicionários e arquivos locais de dados no Protheus Server usam o c-Tree. Como nesta instalação não foi instalado e configurado um c-Tree Server, o Protheus assume a utilização do driver local do c-Tree, chamado de “c-Tree Local”, que já vem distribuída junto com o binário do Protheus Server (arquivo libctreestd.so).

Usando o Protheus com o c-Tree BoundServer

Quando temos uma instância única de Protheus Server, podemos também fazer uma alteração simples e muito eficaz: Usar o “c-tree Server DLL” (ou c-Tree BoundServer) neste ambiente … É extremamente simples, mas você somente pode ter um único serviço de Protheus Server configurado para acessar este ambiente: Você edita o appserver.ini (sem que o Protheus Server esteja em execução), e na seção [general], acrescenta a chave:

ctreemode=boundserver

Ao subir novamente o Protheus Server, ele vai usar uma versão do c-Tree Server “embarcada”, que já vem junto do pacote de distribuição do Protheus Server, para ser o gerenciador dos arquivos, ao invés do c-Tree Local.

No meu ambiente de testes, a criação dos arquivos de help já tinha consumido mais de 20 minutos, e ainda não tinha concluído nem a metade … Derrubei o Protheus Server, que rodava em modo console, usando Control+C, e fiz a alteração acima.

Embora no momento de subir o Protheus Server, o c-Tree BoundServer tenha reclamado que faltava um arquivo de “Callback”, o serviço subiu no ar certinho. Utilizando o WINSCP, apaguei da pasta “system” o arquivo “sigahlp.hlp”, que não tinha sido criado completo, e entrei no ERP novamente usando o SmartClient no Windows.

Utilizando o c-Tree BoundServer, a atualização do arquivo de Help e a tela de entrada do ERP apareceram em menos de 30 segundos.

Após digitar usuário e senha, e na segunda tela confirmar a data do dia, e entrar no módulo configurador, na empresa 99 – Teste (criada automaticamente na entrada do sistema), é perguntado qual país de instalação do ERP. Escolha “Brasil” e prossiga. O resto do procedimento é padrão da instalação do produto: Após criar um ou dois dicionários, o ERP pergunta qual é a pasta de dados. Esta pergunta foi mantida por compatibilidade no instalador. Por compatibilidade, escolha a pasta “data”.Em poucos minutos a carga inicial é finalizada, e o menu do módulo configurador do ERP é mostrado na tela.

 

Observações sobre o c-Tree BoundServer

  • Pode ser usado para gerenciador dos dicionários no lugar do c-Tree Server tradicional, desde que apenas uma instância do Protheus Server acesse os arquivos do ambiente.
  • Possui licença subsidiada para até 64 conexões.
  • Por default, o c-Tree BoundServer distribuído junto dos executáveis do Protheus Server está configurado para não aceitar conexões TCP.
  • Existem mais detalhes a respeito, que serão abordados em posts dedicados a este assunto 😀

Conclusão

Para um serviço “stand-alone”, sem o SGDB na máquina Linux, já temos bastante coisa funcionando. Nos próximos posts a respeito, vamos ver como colocar um MYSQL nesta máquina Linux, junto com um DBAccess 64 bits, e conectar o Protheus Server neste banco.

Ainda não chegamos no ponto de usar mais de um serviço, ou mesmo balanceamento de carga … mas não se preocupem, chegaremos lá aos poucos 😀  Agradeço de novo a audiência de todos, e lhes desejo sempre TERABYTES de sucesso 😉

Até o breve próximo post, pessoal !!!

 

25 respostas em “Protheus no Linux – Parte 02

  1. Aguardando ansiosamente pelo próximo post com DBAccess.

    Eu estive fazendo uns experimentos com o ambiente do Protheus no Linux com PostgreSQL, e utilizando o Docker para criação de containers separados para cada um dos serviços (appserver, dbaccess, postgresql).

    Comecei pelo DBAcess: https://github.com/endersonmaia/totvs-dbaccess-docker

    *Existe alguma forma de configurar o DBAccess utilizando algum comando, sem utilizar o dbconfig em modo gráfico ?*

    Curtido por 1 pessoa

  2. Show de bola!

    Existe alguma vantagem em utilizar o c-Tree BoundServer ao invés do Tradicional?
    O fato de o c-Tree BoundServer não aceitar conexões TCP interfere ou limita em algo no dia a dia de um cliente que tenha o sistema instalado em uma plataforma Linux?

    Grato,
    Felipe Azevedo

    Curtido por 1 pessoa

    • Olá Felipe !!!

      Inicialmente, a vantagem do c-Tree BoundServer estar “colado” com o Protheus Server é não ter uma camada de rede entre o Protheus e o c-Tree. Porém, Se você vai usar um ambiente com balanceamento de carga ou mais de um PRotheus Server apontando para o mesmo ambiente, mesmo sendo possível habilitar a camada TCP do c-Tree BoundServer, ele não tem nenhuma vantagem ou desvantagem em relação a um serviço “independente” (tradicional) do c-Tree Server. o Uso do c-Tree BoundServer para dicionários é ideal para ambientes de instância única de PRotheus SErver, como o Font Loja do ERP, ou para clientes pequenos, com até 10, 15 conexões — onde apenas um serviço do Protheus “dá conta” do recado.

      Abraços 😉

      Curtir

  3. eu estou tentando subir um appserver local no meu desktop para teste na distribuição mint mas quando vou acessar fala que não encontrou o tttp110.rpo apesar de estar no diretorio correto…o que posso fazer ?

    Curtido por 1 pessoa

    • Rapaz … pode ser desde direitos de acesso até mesmo um erro de letra maiúscula no SourcePath…

      Confere primeiro o conteudo da chave SourcePahth do appserver.ini, copia e cola, e roda um “ls” no prompt de comando usando o sourcepath exatamente como foi escrito no INI 😀

      Curtir

    • Complementando a resposta anterior, verifica se todo o caminho do SourcePath está com letras minúsculas e sem nenhum “espaço e branco”. É uma premissa em ambientes Linux o path e os arquivos do TOTVS | Application Server usarem letras minúsculas 😉

      Curtir

  4. Olá Júlio,

    eu consigo encontrar os arquivos de appserver, dbaccess, rpo, lib no site de downlodas da TOTVS, mas não acho os arquivos do systemload, protheus_data para uma instalação zerada.

    Como posso conseguir estes arquivos ?

    Curtir

  5. Boa Tarde Julio,

    Obrigado pelo material, com auxilio dele e mais algumas referencias consegui subir um ambiente 32 bits no ubuntu, sobre o cTree BoundServer o ganho de performance é absurdo .. deixei criando os Helps sem ele e demorou mais de 5 horas, a unica coisa diferente é que no meu ambiente o smartClient está em uma estação windows, mas acredito que não seja esse o motivo da demora já que não há troca de informação entre client-server no momento da criação dos arquivos. Outro problema que enfrentei foi o erro “Ctree Error 160 – Multi-user interference” , só consegui prosseguir com a instalação configurando o lockServer + cTree BoundServer (acredito que somente o lock server resolveria) e por utimo tive problemas com a biblioteca libSM.so.6 para utilização do smartclient, este ultimo ainda não consegui resolver.

    Para fazer a instalação com o postgres, os 2 links abaixo complementam o seu material:

    https://websiteforstudents.com/installing-postgresql-10-on-ubuntu-16-04-17-10-18-04/

    https://www.edivaldobrito.com.br/instalando-o-microsiga-protheus-com-postgresql-no-linux-parte-2/

    Abraços e obrigado pelas publicações

    Curtido por 1 pessoa

  6. Boa tarde, sera que pode me ajudar esta dando erro ao tentar levantar os serviços:

    /appsrvlinux
    ./appsrvlinux: error while loading shared libraries: libbtmonitor.so: cannot open shared object file: No such file or directory

    Curtido por 1 pessoa

  7. O erro completo é este quando tento levantar o serviço do appsrvlinux :

    eduardo@clemente-note:/totvs/totvslicensevirtual/bin/appserver$ ./appsrvlinux
    ./appsrvlinux: error while loading shared libraries: libbtmonitor.so: cannot open shared object file: No such file or directory

    Curtido por 1 pessoa

    • Opa, beleza ? Esse arquivo é uma nova dependência do AppSrvLinux .. verifique se esse arquivo foi disponibilizado no pacote, e se ele está na mesma pasta do executável. Caso ele esteja na pasta e mesmo assim deu erro de abertura, pode ser necessário acrescentar o PATH atual do appsrvlinux na variável de ambiente LD_LIBRARY_PATH 😀

      Curtido por 1 pessoa

    • Rapaiz … eu acho que não, tem que dar uma boa olhada no TDN … se o linux não tem interface gráfica, a solução seria instalar um x-Ming no Windows, e instalar as libs X11 no Linux — assim, mesmo sem KDE ou interface gráfica, você consegue conectar no Linux e executar a interface gráfica da aplicação no Windows 😀

      Curtir

Deixar mensagem para Siga0984 Cancelar resposta