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
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:
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:
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 !!!
Bom demais!
Tive uns problemas com o appserver, mas as dicas deste post vão me ajudar bastante, principalmente para fazer uma instalação mais reduzida.
CurtirCurtir
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 ?*
CurtirCurtido por 1 pessoa
Onde tem dbconfig, leia dbmonitor.
CurtirCurtir
Opa, perfeitametne … vou dar uma pesquisada nisso … 😀
CurtirCurtido por 1 pessoa
E aí, alguma descoberta sobre um comando dbconfig (CLI) para configurar o dbaccess via script ?
CurtirCurtir
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
CurtirCurtido 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 😉
CurtirCurtir
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 ?
CurtirCurtido 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 😀
CurtirCurtir
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 😉
CurtirCurtir
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 ?
CurtirCurtir
Já encontrei no site mesmo.
CurtirCurtir
tem alguma explicação sua sobre instalar o ctree no linux ?
Obrigado
CurtirCurtido por 1 pessoa
Opa, na TDN têm um “Guia” de Instalação do c-Tree Server, Windows e Linux — Segue link
http://tdn.totvs.com/pages/viewpage.action?pageId=6064423
Abraços
CurtirCurtir
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
CurtirCurtido por 1 pessoa
Opa, magina ! Eu que agradeço a audiência e as dicas 😀
CurtirCurtir
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
CurtirCurtido por 1 pessoa
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
CurtirCurtido 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 😀
CurtirCurtido por 1 pessoa
Boa tarde Julio Wittwer e como se faz isso?
CurtirCurtido por 1 pessoa
Por exemplo, se o executável do Application Server está na pasta /totvs/bin/appserver, antes de subir o AppServer por um terminal, use o comando:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/totvs/bin/appserver
CurtirCurtido por 1 pessoa
Boa Tarde!!
Valeu pela dica funcionou memso!
Abraços!
CurtirCurtido por 1 pessoa
Opa, magina ❤
CurtirCurtir
estou tentando montar um license server em linux que não possui modo gráfico, ainda não obtive sucesso. Tem alguma documentação?
CurtirCurtido 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 😀
CurtirCurtir