Skip to content

Tutorial Protheus

Note

Esse tutorial contem informações de como configurar um ambiente básico para desenvolvimento do Protheus utilizando Linux, ele considera a configuração local sendo que o recomendado é a utilização do ambiente com Docker para facilitar a configuração. Essa documentação é mantida como referência para entendimento da instalação do Protheus no Linux e dentro das imagens do Docker.

Para criar um ambiente de desenvolvimento Protheus no Linux alguns passos são necessários:

  • Configurar banco de dados (Postgres)
  • Configurar o unixODBC
  • Configurar o DbAccess
  • Configurar o Appserver

A configuração do Postgres pode ser feita de acordo com a distribuição Linux que esta sendo, uma vez instalado e configurado é possível acessar o banco de dados com a ferramenta que vem junto com o banco chamado psql, permitindo testar e configurar o banco de dados.

A configuração do unixODBC é feita instalando o driver ODBC do banco de dados que vai ser utilizado, no caso o Postgres, também efetuando a configuração do arquivo odbc.ini uma vez configurado o ODBC o teste de conexão pode ser feito com a ferramenta isql que conecta no banco passando pela infraestrutura do unixODBC.

Uma vez configurado o ODBC podemos configurar o dbaccess.ini que é o arquivo utilizado pelo DbAccess para conectar no banco através do unixODBC, configurando o dbaccess teremos um "alias" que permite acesso ao banco de dados através do Dbaccess.

Por fim podemos configurar o arquivo appserver.ini esse arquivo é utilizado pelo AppServer para configurar o ambiente de acesso ao Protheus. Esse arquivo possui muitas configurações mas iremos utilizar apenas as mais básicas para que seja possível o acesso.

Arquivos de configuração

A maior parte dos arquivos de configurações utilizados no ambiente Protheus são arquivos de configuração no formato INI, são arquivos de texto simples com uma organização específica, essa organização é simples e é composta de um várias seções, onde cada seção possui vários valores no formato chave e valor.

Aqui temos um exemplo de um arquivo ini de configuração que pode ser utilizado no unixODBC:

[Banco01]
DRIVER=/usr/lib64/psqlodbcw.so
SERVERNAME=localhost
PORT=5432
DATABASE=Protheus
USERNAME=postgres
PASSWORD=Senha.123

A marca no arquivo [Banco01] delimita uma seção no arquivo, todos os valores que estão abaixo da seção são chaves e valores dessa seção, uma seção existe até que outra seção seja encontrada no arquivo ou até o fim do arquivo. Podemos ter mais de uma seção no mesmo arquivo de configuração.

Cada aplicação sabe quais seções e chaves são necessárias para a sua configuração, qualquer seção e chave que a aplicação não conheça simplesmente não afeta seu funcionamento e é ignorada.

Configurando Postgres

A configuração do banco de dados Postgres se dá pela criação de um banco de dados e um usuário para a utilização da aplicação, essa configuração pode ser feita acessando o banco de dados com a sua própria aplicação de administração. Essa aplicação se chama psql no caso do Postgres sendo que outros bancos possuem outras aplicações e outras formas de configuração.

Para criação de um novo usuário e banco de dados na aplicação do Postgres devemos acessar a máquina que o Postgres esta instalado e fazer o acesso no banco pelo usuário postgres

psql -c "CREATE DATABASE protheus ENCODING 'WIN1252' TEMPLATE template0 LC_CTYPE 'C' LC_COLLATE 'C'"
psql -c "CREATE USER protheus WITH LOGIN NOSUPERUSER INHERIT CREATEDB NOCREATEROLE NOREPLICATION CONNECTION LIMIT -1 PASSWORD 'Protheus.123'"
psql -c "GRANT ALL PRIVILEGES ON DATABASE protheus TO protheus"

Para testar a configuração feita no banco de dados apenas informar qual o banco de dados, usuário e senha para o psql e verificar se a conexão com o banco é feita com sucesso.

psql -W protheus protheus

Sendo o parâmetro -W força a solicitação da senha, primeiro parâmetro o nome do banco de dados, o segundo é o nome do usuário para conectar no banco de dados.

Configurando o unixODBC

A configuração do Unix é apenas a criação do arquivo de configuração /etc/odbc.ini com as informações válidas para conectar no banco de dados.

[Protheus]
DRIVER=/usr/lib64/psqlodbcw.so
SERVERNAME=localhost
PORT=5432
DATABASE=protheus
USERNAME=protheus
PASSWORD=Protheus.123

Para fazer o teste da configuração criada no /etc/odbc.ini apenas tentar conectar utilizando a ferramenta isql:

isql protheus

Caso conectar digitar quit para sair e conexão esta configurado com sucesso.

Configurando DbAccess

A instalação do DbAccess é feita apenas descompactando os binários do DbAccess em uma pasta de sua preferência. A configuração do Dbaccess é feita criando o arquivo dbaccess.ini na mesma máquina que o unixODBC foi configurado, apenas deixar o programa do DbAccess em execução para que o AppServer possa conectar nele.

Note

Diferentes Linux têm diferentes métodos de inicialização de serviços, a grande maioria atualmente utilizam um método chamado systemd para gerenciar os serviços em execução, mas isso é inclusive configurável. Para efeito de testes apenas iremos iniciar o ./dbaccess64 manualmente para ambiente de desenvolvimento.

Caso queria uma execução de longa duração para o DbAccess em sua distribuição, verificar na documentação oficial como configurar os serviços.

O arquivo de configuração dbaccess.ini pode ser criado manualmente em um editor de texto assim como qualquer outro arquivo de configuração, porem esse arquivo conta com uma peculiaridade, a chave password do arquivo de configuração possui uma criptografia o que inviabiliza criar o arquivo de configuração manualmente por um editor

Para a criação do arquivo vamos utilizar uma ferramenta chamada dbaccesscfg que vem junto dos binários do DbAccess, irei passar um exemplo da sua execução colocando quebra de linhas e uma explicação de seus parâmetros.

1
2
3
4
5
6
./dbaccesscfg \
    -u protheus \
    -p Protheus.123 \
    -a protheus \
    -d postgres \
    -c '/usr/lib64/libodbc.so'

A linha 2 informa qual o usuário do banco de dados Postgres

A linha 3 informa qual a senha do usuário do banco de dados Postgres

A linha 4 informa qual o nome do alias que será criado no dbaccess.ini esse alias precisa ter o mesmo nome que a seção do odbc.ini

A linha 5 informa qual o tipo de banco que esta sendo utilizado podendo ser postgres/mssql/oracle entre outros documentando no TDN.

A linha 6 informa qual a biblioteca que o DbAccess vai utilizar para conectar no banco de dados.

Uma vez configurado o dbaccess.ini apenas executar o binário do dbaccess que se encontra dentro da pasta multi do pacote, uma vez que o programa estiver executando deixar ele executando sem ser finalizado:

cd multi/
./dbaccess64

Configurando AppServer

Para configurar o AppServer é necessário um conjunto de arquivos além de um arquivo de configuração appserver.ini, os arquivos necessários são:

  • Biblioteca do webapp.so
  • Repositório de Objetos (tttm120.rpo)
  • Arquivos de dicionário (sxsbra.txt e sx2.unq)
  • Arquivos de menu (com extensão .xnu)
  • Arquivos de help (hlpeng.txt hlpspa.txt e hlppor.txt)

Antes de discutir onde os arquivos devem ser colocados para configurar o ambiente, vamos ver a configuração do arquivo appserver.ini porque os diretórios que esses arquivos devem ser copiados dependem dos caminhos configurados.

[environment]
rpodb=top
rpoversion=120
rpolanguage=multi
sourcepath=/opt/totvs/protheus/apo
rootpath=/opt/totvs/protheus/protheus_data
startpath=/system
dbdatabase=postgres
dbalias=protheus
dbserver=dbaccess-postgres
dbport=7890
topmemomega=10
specialkey=exemplo

[general]
buildkillusers=1
consolelog=1
consolefile=/opt/totvs/appserver/console.log
maxstringsize=10

[drivers]
active=tcp

[tcp]
type=tcpip
port=1234

[webapp]
enable=1
port=8080

[lockserver]
enable=1
server=appserver
port=1234

[licenseclient]
server=license
port=5555

[webapp/webapp]
mpp=

Para copiar os arquivos vamos primeiro criar a seguinte estrutura de arquivos:

mkdir -p /opt/totvs/protheus/apo/
mkdir -p /opt/totvs/protheus/protheus_data/system/
mkdir -p /opt/totvs/protheus/protheus_data/systemload/

O arquivo de biblioteca do WebApp deve ser colocado na mesma pasta que o binário do AppServer no caso o binário appsrvlinux.

Os arquivos sxbra.txt, sx2.unq, hlppor.txt, hlpeng.txt e hlpspa.txt devem ser colocados em um diretório chamado systemload dentro do diretório protheus_data. O diretório protheus_data é configurado dentro do appserver.ini na chave rootpath dentro da seção environment.

Os arquivos de menu com a extensão .xnu devem ser colocados dentro do diretório startpath que foi configurado dentro do appserver.ini, esse é o caminho que foi configurado na chave startpath dentro da seção environment, esse path é relativo à chave rootpath.

Por fim o arquivo de repositório (tttm120.rpo) deve ser colocado na pasta apo, que foi configurada na chave sourcepath dentro da sessão environment, o nome do arquivo.

Algumas informações adicionais devem ser observadas como a configuração do DbAccess que o Appserver ira utilizar, essa informação é configurada na sessão environment e são as chaves iniciadas com db.

Na linha 8 temos a chave dbdatabase que informa qual o tipo de banco que deve ser utilizado (é o mesmo que o parâmetro -d do dbaccesscfg).

Na linha 9 temos a chave dbalias que tem o alias que configuramos no DbAccess (é o mesmo que o parâmentro -a do dbaccesscfg).

Na linha 10 temos o endereço por nome ou ip do servidor do DbAccess, caso senha a mesma máquina pode ser colocado localhost.

Na linha 11 temos a porta que o DbAccess foi configurado, caso não tenha sido especificado é a porta 7890.

Na linha 34 temos o endereço de conexão do lockserver, normalmente em ambiente de desenvolvimento pode ser o endereço ip ou hostname da própria máquina do appserver, não pode ser colocado como localhost.

Com o arquivo de configuração do AppServer foi criado corretamente, apenas iniciar o servidor do AppServer para receber novas conexões:

./appsrvlinux

Apenas utilizar seu browser para acessar a porta 8080 que é a porta do WebApp que foi configurado no appserver.ini