Sei sulla pagina 1di 4

FUG-BR / Grupo Brasileiro de Usuarios de FreeBSD

Roteiro de instalação do Microsiga Protheus 8 no FreeBSD e PostgreSQL 8.3


Autoria de Mathias A. Gruber
06/10/2008
Última Atualização 12/10/2008

O roteiro a seguir tem por objetivo instalar o Microsiga Protheus8 + TopConnect versão Linux, em um servidor FreeBSD
7.0 com um banco de dados PostgreSQL 8.3.
Considerações Iniciais

Antes de iniciar qualquer instalação leia atentamente as advertências a seguir:

- Esta configuração não é homologada pelo suporte Microsiga;


- Não há como instalar o dispositivo de hardlock Aladdin HASP no FreeBSD devido a falta de um driver compatível,
nem mesmo no modo de compatibilidade Linux. O driver aksusbd que opera com o HASP depende de um sistema de
arquivos virtual USB do Linux chamado de usbdevfs e eu não encontrei um porte compatível no FreeBSD. Sendo assim,
esta configuração é útil em um ambiente do tipo load-balancing, devido à necessidade de um outro servidor (Linux ou
Windows) para alojar o dispositivo de segurança e o serviço de licenças;
- Este roteiro não cobre a instalação do FreeBSD 7.0.
- Este roteiro não cobre a instalação e configuração do PostgreSQL, visto que este assunto já está amplamanete
abordado pela comunidade.
Pré-requisitos

Alguns passos importantes devem ser realizados para antes de iniciar a instalação do Protheus 8.
Suporte a Arquivos rpm

Utilize o ports para o suporte a arquivos rpm, instalando o pacote rpm-4.0.4_7. Não utilize o a versão 3 do rpm, pois tive
sérias incompatibilidades nos testes.
Compatibilidade Linux

Instale os módulos de compatibilidade Linux, conforme as orientações do manual do FreeBSD. Para meu setup, utilizei o
ambiente linux_base-fc-4_13. Também tenha certeza de que o módulo esteja corretamente ativado para execução durante
o boot, acrescentando a seguinte linha ao arquivo /etc/rc.conf:
linux_enable="YES"

Os dois serviços do Microsiga necessitam do sistema de arquivos virtual /proc do Linux, que pode ser emulado pelo
FreeBSD. Para isso ative os filesystems linprocfs e linsysfs, adicionando as seguintes linhas ao /etc/fstab:
linproc /compat/linux/proc linprocfs rw 0 0
linsys /compat/linux/sys linsysfs rw 0 0

Infelizmente a implementação do módulo linprocfs está incompleta e o daemon do Protheus consulta o arquivo virtual em
/proc/sys/fs/file-max para determinar o nº máximo de arquivos. Isso é facilmente contornável com a criação de um
arquivo comum, mediante os seguintes comandos:
mkdir -p /proc/sys/fs
echo 65535 > /proc/sys/fs/file-max

OBS: Este procedimento não é compatível com o filesystem procfs do FreeBSD: por sorte ele não vem ativado na
instalação padrão e também não é necessário para o Microsiga.
Preparação da Pasta de Instalação

Digite os seguintes comandos:


mkdir -p /var/lib/rpm
mkdir -p /compat/linux/var/lib/rpm
mkdir -p /compat/linux/microsiga
ln -s /compat/linux/microsiga /microsiga
Patch do CD de Instalação

Como o script de instalação do Microsiga não possui suporte ao FreeBSD, foi necessário realizar algumas pequenas
adaptações, que detalho a seguir.
Cópia do conteúdo do CD-ROM

Monte o CD-ROM de instalação do Microsiga Linux em /cdrom e digite os seguintes comandos para copiá-lo no seu HD.
mount /cdrom
mkdir -p /usr/local/distfiles/siga
cp -R /cdrom/linux/protheus8server /usr/local/distfiles/siga/
http://www.fug.com.br _PDF_POWERED _PDF_GENERATED 28 October, 2010, 16:29
FUG-BR / Grupo Brasileiro de Usuarios de FreeBSD

Edição do script de instalação

Utilize o seu editor de textos predileto para editar o script de instalação Linux chamado
/usr/local/distfiles/siga/protheus8server/install_linux:

- Localize a seção "Variáveis Locais" na função run_rpms() que deverá conter:rpm_server="protheus-server-$version-


$release.i386.rpm"
rpm_protheus_data="protheus-data-$version-$release.i386.rpm"
rpm_rpo="protheus-rpo-$db-$rpo-$version-$release.i386.rpm"
nrpo=$rpo
rpm_loc="protheus-systemload-$local-$version-$release.i386.rpm"
rpm_general="protheus-systemload-general-$rpo-$version-$release.i386.rpm"

- Acrescente a linha após a última linha do bloco citado acima:rpm_opts="-ivh --nodeps --ignoreos --dbpath /var/lib/rpm --
root /compat/linux"
- Agora localize cada string -ivh existente para cada comando rpm presente neste script e substitua por $rpm_opts.
ficando como resultado:...
echo $text16 #"Instalando server..."
rpm $rpm_opts $rpm_server
...
echo $text17 #"Instalando dados..."
rpm $rpm_opts $rpm_protheus_data
...
echo $text18 #"Instalando RPO..."
rpm $rpm_opts $rpm_rpo
...
echo $text19 #"Instalando arquivos de localizacao de sistema..."
rpm $rpm_opts $rpm_loc
rpm $rpm_opts $rpm_general
...
InstalaçãoProtheus 8

Rode o script modificado, digitando:


cd /usr/local/distfiles/siga/protheus8server
./install_linux

Agora você pode instalar o produto conforme a orientação do manual de instalação do Microsiga, exatamente como se
procede em um Linux convencional.
TopConnect

Instale o TopConnect conforme a orientação do manual de instalação do Microsiga, já que vem distribuído em um tar.gz
convencional. Recomendo que o mesmo seja instalado na pasta /microsiga/protheus8/bin/topconnect41, assim você
poderá reaproveitar o meu script de inicialização mais facilmente.
ODBC

O TopConnect utiliza o ODBC para realizar a comunicação com o banco de dados. No UNIX isso é feito pela biblioteca
unixODBC.

Mas como a emulação Linux não permite intercambiar bibliotecas entre binários Linux e FreeBSD não poderemos utilizar
a distribuição do ports. Então é necessário instalar a versão Linux da biblioteca unixODBC, conforme a distribuição Linux
escolhida no início deste artigo. No meu caso tenho uma distro do Fedora, então utilizei a versão disponível no próprio site
do projeto unixODBC, que é http://sourceforge.net/projects/unixodbc .

Para a instalação do pacote digite:


rpm -ivh --nodeps --ignoreos --dbpath /var/lib/rpm --root /compat/linux unixODBC-2.2.11-1.i386.rpm

Segundo a Totvs/Microsiga a compatibilidade do TopConnect é com o PostgreSQL 7, cujo driver ODBC é denominado
libpsqlodbc.so. Já as bibliotecas mais novas do ODBC mudam este nome para libodbcpsql.so. Para piorar o problema,
parece-me que o daemon do TopConnect nem sempre consulta o arquivo de configuração odbc.ini para obter o nome do
driver ODBC.

Então para funcionar sem problemas é muito importante criar um link que compense essas diferenças:
ln -s /compat/linux/usr/lib/libodbcpsql.so.1 /compat/linux/usr/lib/libpsqlodbc.so
http://www.fug.com.br _PDF_POWERED _PDF_GENERATED 28 October, 2010, 16:29
FUG-BR / Grupo Brasileiro de Usuarios de FreeBSD

Finalmente, para que o ODBC funcione corretamente, é necessário colocar o arquivo de configuração .odbc.ini na pasta
home do root (/root/.odbc.ini).

Veja um exemplo de seu conteúdo a seguir:


[ODBC Data sources ]
teste=Ambiente de Teste

[teste]
Servername=localhost
Username=pgsql
password='md5b09f85578ae5d284db5373d205a8ff0f'
Database=DadosAp8
Driver=/usr/lib/libodbcpsql.so
Port=5432
ReadOnly=0

Note no arquivo acima uma dica interessante: A linha password permite que você coloque o hash MD5 para o login no
banco de dados, evitando expor a senha do superusuário pgsql. Obtive este hash diretamente na ferramenta pgAdmin
do projeto PG.
Considerações importantes

O unixODBC fornece uma versão 2 do driver ODBC instalado em /compat/linux/usr/lib/libodbcpsql.so.2. Não utilize-o pois
codifica os textos no formato multi-byte, que causará paralização do serviço topconnect.
Os drivers informados no arquivo .odbc.ini referen-se para a pasta /usr/lib, que são mapeados para a camada de
compatiblidade Linux internamente pelo FreeBSD (resultando em /compat/linux/usr/lib).
Scripts de inicialização

O passo final para a execução do TopConnect e o Protheus8 é a criação os scripts de execução dos daemons. Crie os dois
scripts abaixo e lembre-se de habilitar o atributo de execução.
/usr/local/etc/rc.d/microsiga#!/bin/sh
#
# microsiga for rc.d usage (c) 2007 Mathias A. Gruber.
# $Id$

# PROVIDE: microsiga
# REQUIRE: DAEMON
# BEFORE: LOGIN
#
# Add the following line to /etc/rc.conf to enable microsiga:
#
# microsiga_enable="YES"

. /etc/rc.subr

# Set some defaults


microsiga_enable=${microsiga_enable:-"NO"}

# This is required for microsiga daemon


USER=`whoami`
export USER
HOSTNAME=`hostname`
export HOSTNAME

name=microsiga
rcvar=`set_rcvar`
load_rc_config $name
command=/usr/compat/linux/microsiga/protheus8/bin/server/mp8srvlinux
command_args="DAEMON"

run_rc_command "$1"

Note que o script acima declara duas variáveis chamadas HOSTNAME e USER. Aqui foi onde enfrentei a maior
http://www.fug.com.br _PDF_POWERED _PDF_GENERATED 28 October, 2010, 16:29
FUG-BR / Grupo Brasileiro de Usuarios de FreeBSD

dificuldade para fazer o Microsiga executar confiavelmente. A documentação do Microsiga não comenta nada sobre elas,
embora sejam imprescindíveis para a correta execução do daemon. Mesmo em ambiente Linux a falta delas impede a
correta execução do sistema, principalmente durante o boot e também quando utilizamos o método
chkconfig/service/ntsysv do System V.

O script procura seguir as convenções utilizadas para execução dos outros daemons do BSD. Sendo assim é possível
iniciar, verificar e parar os serviços da forma tradicional:
/usr/local/etc/rc.d/microsiga start
/usr/local/etc/rc.d/microsiga status
/usr/local/etc/rc.d/microsiga stop
/usr/local/etc/rc.d/microsiga restart
/usr/local/etc/rc.d/topconnect#!/bin/sh
#
# topconnect for rc.d usage (c) 2007 Mathias A. Gruber.
# $Id$

# PROVIDE: topconnect
# REQUIRE: microsiga
# BEFORE: LOGIN
#
# Add the following line to /etc/rc.conf to enable topconnect:
#
# topconnect_enable="YES"

. "/etc/rc.subr"

# Set some defaults


topconnect_enable=${topconnect_enable:-"NO"}
name=topconnect
rcvar=`set_rcvar`
load_rc_config $name

command=/usr/sbin/daemon
command_args="-f /usr/compat/linux/microsiga/protheus8/bin/topconnect41/multi/topconnect"
procname=/usr/compat/linux/microsiga/protheus8/bin/topconnect41/multi/topconnect

run_rc_command "$1"
Arquivo de Configuração

Para que os scripts acima funcionem, devemos configurar o arquivo rc.conf corretamente, adicionando-se as seguintes
linhas:
microsiga_enable="YES"
topconnect_enable="YES"

Resumi abaixo todas as minhas configurações utilizadas para o rc.conf, que inclui algumas opções importantes para o initdb
do PostgreSQL:
linux_enable="YES"
microsiga_enable="YES"
topconnect_enable="YES"
postgresql_enable="YES"
postgresql_initdb_flags="--encoding=ISO8859-1 --lc-collate=pt_BR.ISO8859-1 --lc-ctype=pt_BR.ISO8859-1"
Testes

Se você tiver a parte gráfica instalada em seu FreeBSD, você poderá utilizar os programas que acompanham o
Protheus 8 seguindo a documentação que acompanha a distro para Linux, normalmente.

A alternativa mais comum é utilizar uma estação Windows com o TopMonitor e o Protheus Remote instalados para fazer
a configuração e verificação.

http://www.fug.com.br _PDF_POWERED _PDF_GENERATED 28 October, 2010, 16:29

Potrebbero piacerti anche