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é-requisitosAlguns passos importantes devem ser realizados para antes de iniciar a instalação do Protheus 8.
Suporte a Arquivos rpmUtilize 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 LinuxInstale 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çãoDigite 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çãoComo 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-ROMMonte 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/
Edição do script de instalaçãoUtilize 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 8Rode 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.
TopConnectInstale 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.
ODBCO 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
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 importantesO 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çãoO 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 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çãoPara 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"
TestesSe 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.
|