Categoria:
Instalando LetoDBf em servidor Linux
Para criar o servidor letodb no Linux você pode praticar instalando o Harbour e o LetoDBf em uma máquina virtual com o VirtualBox para criar o binário dele.
No caso eu baixei a imagem do Debian 12, distribuição do Linux DVD, que vai dar interface gráfica para o usuário, escolha a versão compatível com a arquitetura do seu processador:
- https://cdimage.debian.org/debian-cd/current/i386/iso-dvd/ (32 bits)
- https://cdimage.debian.org/debian-cd/current/amd64/iso-dvd/debian-12.0.0-amd64-DVD-1.iso (64 bits)
- Não baixe o CD porque você só terá o modo console, baixe o DVD.
Se estiver no VirtualBox, não esqueça de configurar depois a sua rede em modo Bridge: Configurações > Rede > Placa em modo Bridge.
O Debian foi escolhido porque foi o utilizado pelo Alexander Kresin com o LetoDB. Parece que o Debian também é compatível com o Ubuntu.
Vamos trabalhar com alguns aplicativos do Linux, o Firefox para navegar na internet, o Files que equivale ao Windows Explorer e o Terminal que equivale ao CMD do Windows (conhecido como janela do MS-DOS).
Activities
Apps Firefox, Files e Terminal respectivamente.
Updating from such a repository can't be done securely, and is therefore disabled by default.
Se você instalou o Debian 12 bookworm por um dos links acima no VirtualBox, então vai dar esse problema.
Ao dar um "apt update" acontece isso:
E: The repository 'cdrom://[Debian GNU/Linux 12.0.0 _Bookworm_ - Official amd64 DVD Binary-1 with firmware 20230610-10:23] bookworm Release' does not have a Release file. N: Updating from such a repository can't be done securely, and is therefore disabled by default.
Daí, tem que ir no /etc/apt/sources.list, apague a linha que está lá e deixe assim:
deb http://deb.debian.org/debian bookworm main contrib non-free deb-src http://deb.debian.org/debian bookworm main contrib non-free deb http://deb.debian.org/debian-security/ bookworm-security main contrib non-free deb-src http://deb.debian.org/debian-security/ bookworm-security main contrib non-free deb http://deb.debian.org/debian bookworm-updates main contrib non-free deb-src http://deb.debian.org/debian bookworm-updates main contrib non-free deb http://deb.debian.org/debian bookworm-backports main contrib non-free deb-src http://deb.debian.org/debian bookworm-backports main contrib non-free
Daí vai pegar tudo atualizado pela web. Salve que agora vai!
Fonte dessa informação: https://wiki.debian.org/pt_BR/SourcesList
INSTALAR O GIT NO LINUX
Depois de dar esse "update" você pode instalar o git para facilitar a sua vida. Daí você não precisa ficar fazendo download pelo navegador, criando pasta, descompactando etc.
Digite:
apt install git
Vamos exemplificar mais adiante.
A INSTALAÇÃO DO LETODB NO SERVIDOR LINUX
Vamos copiar os DBFs para uma pasta no servidor Linux e instalar o letodb nele. Eles serão acessados pelo endereço IP do servidor nos computadores da rede que usam Windows com o seu aplicativo.
Nenhum computador da rede enxergará a pasta onde estão os bancos de dados a não ser o seu aplicativo que se conectará via LetoDBf ao servidor.
Até agora você preparou o Linux. Vamos agora baixar o Harbour e o LetoDBf.
Instalar Harbour a partir dos fontes no Linux
Para o Harbour funcionar direitinho com a sua distribuição Linux é melhor baixar os fontes e compilar nele. Não é difícil e vai garantir que ele funcione.
INSTALAR O COMPILADOR GCC E O BUILD-ESSENTIAL
Na verdade, a imagem que baixamos do DEBIAN 12 já tem o GCC e o build-essential, então você pode pular essa etapa.
Vá no terminal, entre no modo de super usuário (execute o comando "su" e coloque a sua senha), dê um update, instale o gcc e o pacote build-essential. Para isso vá digitando linha a linha conforme abaixo:
su apt update apt install gcc apt install build-essential
BAIXAR OS FONTES DO HARBOUR
Faça o download do Harbour no Linux. Vá pelo Firefox e acesse o site:
https://github.com/harbour/core
Baixe os fontes, copie para a pasta "home" com o Files do Linux e descompacte (Extract) o arquivo com o botão direito em cima dele.
Renomeie a pasta para harbour, se preferir.
Entre no terminal, digite "su" e sua senha para entrar no modo root e entre na pasta descompactada do harbour para compilar a partir dos fontes dessa forma:
cd core-master make make install
BAIXANDO O HARBOUR COM O GIT
Muito mais rápido e prático do que o processo anterior é fazer isso aqui no Terminal (tendo instalado o GIT). Só chamar o "git clone" com a URL onde estão os arquivos do Harbour e o nome da pasta que será criada para baixar. Seria isso:
git clone https://github.com/harbour/core.git hb32 cd hb32 make make install
Onde essa URL você pega no GitHub do Harbour e o hb32 é o nome da pasta que será criada para baixar os fontes.
BAIXAR OS FONTES DO LETODBf
Use o fork LetoDBf do Rolf Beckmann (Elchs) que é uma versão melhorada do LetoDB.
Vá pelo Firefox e acesse o site:
https://github.com/elchs/LetoDBf
Extraia para home/LetoDBf-master.
Renameie para "letodbf".
Agora acesse normalmente essa pasta pelo Terminal como se fosse o CMD do Windows para compilar o servidor LetoDBf, chame hbmk2 letodbaddon.hbp:
root@Debian:/home/anderson/LetoDbf# hbmk2 letodbaddon.hbp
O binário estará na pasta letodbf/bin, confira! Observe que o binário não tem extensão, é apenas "letodb".
root@debian:/home/anderson/letodbf/bin# dir letodb letodb.ini leto.sh
Agora você vai precisar descobrir o endereço IP do Linux, configurar o letodb.ini e criar uma pasta para colocar os bancos de dados antes de instalar o letodb.
BAIXAR OS FONTES DO LETODBf COM O GIT
Baixar os fontes e compilar o servidor letodb:
git clone https://github.com/elchs/LetoDBf.git letodbf cd letodbf hbmk2 letodbaddon.hbp
Confira o leto na pasta bin. Antes de executá-lo precisamos configurar o letodb.ini, mas você sabe o endereço IP do servidor Linux?
DESCOBRINDO O ENDEREÇO IP NO LINUX PELO TERMINAL
Se a sua máquina Linux é o servidor, então você precisa descobrir o endereço IP dela. A maneira mais fácil e prática é ir no Terminal digitar "hostname -I":
root@Debian:/usr/bin# hostname -I 10.100.0.120
Você também pode clicar no ícone de rede, ícone de engrenagem e ícone de engrenagem da conexão (cabo ou wi-fi), detalhes, IPv4 Address.
Observação: Se você está fazendo o teste primeiro na sua máquina com o Linux no VirtualBox o endereço IP precisa ter o mesmo radical que sua máquina Windows. Por exemplo, se no Windows é 10.100.0.77 e no Linux 10.100.0.25 está ok, mas se no Linux estiver 10.10.0.25 então provavelmente a configuração da sua placa de rede no VirtualBox está como NAT! Lembre-se que ela deve estar como Bridge!!! Corrija e reinicie o Linux.
CONFIGURANDO LETODB.INI
Digamos que o endereço IP encontrado no tópico anterior fosse 10.100.0.120, então seu arquivo letodb.ini pode estar no mínimo assim:
Server = 10.100.0.120 Port = 2812 DataPath = /databases Share_Tables = 1 Debug = 0 No_Save_WA = 1 Lower_Path = 1 Default_Driver = CDX Lock_Scheme = 2 Mask = *.dbf,*.fpt,*.cdx
Entre na pasta bin para editar o arquivo usando:
nano letodb.ini
Mas, calma! Não chame ainda o letodb porque sem a pasta /databases onde foi informada que estariam os bancos de dados ele não roda! Você chama e não acontece nada nem mostra nada com o comando "ss -ptan" no Terminal.
COPIANDO OS BANCOS DE DADOS
Copie os bancos de dados para a pasta /databases como informado no DataPath.
Vamos explicar a seguir o passo a passo.
CRIANDO UMA PASTA COMPARTILHADA NO LINUX DO VIRTUALBOX
Para acessar os arquivos do Windows dentro de uma máquina virtual com o Linux é preciso compartilhar a pasta no Linux.
Vá para a seção "Pastas Compartilhadas" (Shared Folders) nas configurações da máquina virtual.
Clique no ícone de pasta com o sinal de "+" para adicionar uma nova pasta compartilhada.
Execute o comando seguinte para criar um diretório onde a pasta compartilhada será montada:
sudo mkdir /mnt/shared
Execute o seguinte comando para montar a pasta compartilhada do Windows no diretório que você acabou de criar:
sudo mount -t vboxsf c_drive /mnt/shared
Infelizmente tem que fazer isso toda vez no Linux.
Agora é só copiar os arquivos com o comando "cp" de "copy".
Entre na pasta compartilhada onde estão os DBFs e execute esse comando para copiar:
cp * /databases
Pronto! Agora você pode acessar os DBFs para copiá-los para o Linux.
CRIAR UMA PASTA NO LINUX
Antes de mais nada, vamos criar a pasta a ser compartilhada. Ela vai ficar dentro da pasta raís (root). Então, se você está na pasta /home do Terminal então desça para CD / e crie o diretório databases:
sudo mkdir /databases
COPIAR ARQUIVOS NO LINUX
Entre na pasta compartilhada do VirtualBox onde estão os DBFs lá do seu HD do Windows e execute o comando "cp" de "copy" para copiar assim:
sudo cp * /databases
Se você colocar *.* só copiará arquivos que tiverem uma extensão (quase todos, né?), use * para copiar tudo. Todos tem extensão, né?!...
RENOMEAR ARQUIVOS PARA MINÚSCULAS NO LINUX
O Linux é case-sensitive, então lá PRODUTOS.DBF e produtos.dbf podem ser 2 arquivos diferentes coexistindo na mesma pasta.
Isso vai gerar problema na hora de abrir os bancos de dados, então renomeie tudo para minúsculas!
Vou logo adiantar que o comando "rename" não vem instalado nesse pacote do Debian 12, instale logo para poder usar:
sudo apt install rename
Agora calma! Você não vai precisar renomear um a um! Tem um macete do Linux para renomear em série, veja:
rename 'y/A-Z/a-z/' *
Maravilha, heim?!
Deixe o Lower_Path = 1 no letodb.ini para não precisar alterar as linhas do seu programa para chamar os bancos de dados em minúsculas. Fazendo isso você pode deixar USE PRODUTOS que vai funcionar! Ainda bem que existe isso!
PERMISSÕES DE ACESSO AO BANCO DE DADOS NO LINUX
Depois de tudo isso você ainda tem que liberar as permissões de acesso ao banco de dados.
O comando do Linux a seguir vai te mostrar as permissões de acesso atual da sua pasta, "namei -mo":
root@Debian:/# namei -mo /databases f: /databases drwxr-xr-x root root / drwxr-xr-x root root databases
Vamos seguir as permissões que estão no readme.txt do LetoDBf que, na montagem da pasta do samba, cita "file_mode=0666,dir_mode=0777".
chmod 0777 databases
Execute o namei de novo e veja que mudou:
root@Debian:/# namei -mo /databases f: /databases drwxr-xr-x root root / drwxrwxrwx root root databases
Agora altere a permissão dos arquivos para 0666:
cd databases chmod 0666 *
Agora conecta e acha o DBF.
INSTALANDO O SERVIDOR LETODB
Agora sim! Tudo pronto!
Você vai rodar o letodb direto no hardware do servidor e acessar os bancos de dados via TCP IP.
Instale o letodb:
root@Debian: /usr/bin# ./leto.sh
Vai mostrar:
root@Debian:/usr/bin# ./leto.sh LetoDB runs
Verifique as conexões ativas dos servidores para ver se o letodbf está escutando direitinho no IP e porta que você informou, no Terminal digite:
ss -ptan
Veja o resultado do letodb aguardando conexão:
root@debian:/home/anderson/letodbf/bin# ss -ptan State Recv-Q Send-Q Local Address:Port Peer Address:Port Process LISTEN 0 128 127.0.0.1:631 0.0.0.0:* users:(("cupsd",pid=533,fd=7)) LISTEN 0 10 0.0.0.0:2813 0.0.0.0:* users:(("letodb",pid=13649,fd=4)) LISTEN 0 10 0.0.0.0:2812 0.0.0.0:* users:(("letodb",pid=13649,fd=3)) ESTAB 0 0 10.100.0.120:58278 34.117.65.55:443 users:(("firefox-esr",pid=3705,fd=57)) TIME-WAIT 0 0 10.100.0.120:59682 34.117.237.239:443 LISTEN 0 128 [::1]:631 [::]:* users:(("cupsd",pid=533,fd=6)) root@debian:/home/anderson/letodbf/bin#
Após uma conexão (aplicativo conectado ao servidor), o resultado seria esse:
root@debian:/home/anderson/letodbf/bin# ss -ptan State Recv-Q Send-Q Local Address:Port Peer Address:Port Process LISTEN 0 128 127.0.0.1:631 0.0.0.0:* users:(("cupsd",pid=533,fd=7)) LISTEN 0 10 0.0.0.0:2813 0.0.0.0:* users:(("letodb",pid=13649,fd=4)) LISTEN 0 10 0.0.0.0:2812 0.0.0.0:* users:(("letodb",pid=13649,fd=3)) ESTAB 0 0 10.100.0.120:2812 10.100.0.77:52769 users:(("letodb",pid=13649,fd=7)) LISTEN 0 128 [::1]:631 [::]:* users:(("cupsd",pid=533,fd=6)) root@debian:/home/anderson/letodbf/bin#
Aí mostra uma máquina com o IP 10.100.0.77 conectada no servidor IP 10.100.0.120.
Tudo pronto!
SERVIDOR LETODBF AUTOEXECUTANDO NO LINUX
Com certeza interessa que o gerenciador de banco de dados letodbf seja iniciado automaticamente no Linux. Vamos fazer isso agora.
1) Crie uma pasta no raíz chamada letodbf e copie a pasta bin do letodbf para lá:
mkdir /letodbf cd /home/usuario/letodbf/bin cp * /letodbf cp *.* /letodbf
2) Crie um arquivo chamado letodb.sh na pasta /etc/profile.d:
nano /etc/profile.d/letodb.sh
Agora coloque isso no arquivo e salve:
#!/bin/bash cd /letodbf ./leto.sh
3) Altere as permissões dos arquivos para 0777 com "CHMOD 0777 *" no Terminal.
Pronto! Agora o letodbf vai executar automaticamente ao iniciar o Linux (depois de um login).
AUTO-LOGIN NO LINUX
Não adianta nada disso se tiver que colocar a senha para fazer login, não é verdade? Essa dica vale para todas as versões do Linux, notadamente a Xubuntu.
Crie/edite o seguinte arquivo:
nano /etc/lightdm/lightdm.conf
Coloque as seguintes linhas (não esqueça de alterar aí o nome do usuário que fará o auto-login):
[Seat:*] autologin-user=SeuUsuárioDesejadoParaAutoLogin autologin-user-timeout=0
Pronto! Agora vai tudo direto no automático!
Agora uma última dica:
MIGRAÇÃO SUAVE DO LETODB SEM MUDAR AS LINHAS DO SEU PROGRAMA
No meu caso eu criei um define "__LETODBF" pra quando for usar esse database manager ele configurar tudo direitinho.
Tem gente aí mudando o sistema todo onde tem FILE() coloca LETO_FILE(), não precisa nada disso se em cada programa que existir essas coisas você inserir essas linhas no início do programa:
********************************** *** SERVIDOR DE BANCO DE DADOS *** ********************************** #IFDEF __LETODBF // servidor LETODBf #include "rddleto.ch" // defines do RDD #include "dbinfo.ch" // Header file for the RDD API Index OrderInfo and DBInfo support #include "leto_std.ch" // traduz os comandos para o LETO #define __LETO_TRANSLATE_FILE_ALL #include "letofile.ch" // traduz todas as funções para o LETO REQUEST RDDLETO REQUEST RDDInfo #ENDIF FUNCTION MAIN()
Lembre-se de copiar os arquivos de cabeçalho (*.ch) do LetoDBf para a pasta INCLUDE do [x]Harbour também!!!
Esse exemplo foi no programa principal, mas se tiver outros programas com FILE() ou outras funções que o LetoDb tem a sua própria versão, então copie e cole as linhas acima nele também e pronto, vai funcionar! Desta forma, não precisa mexer mais em nada no seu sistema.
Aleluia! 🙌🙏
Estava procurando algo sobre pastas compartilhadas com o SAMBA ?
Se quiser pular a fogueira e baixar o binário do LetoDBf pronto, está logo abaixo.
Contém: letodb (o binário), leto.sh, letodb.ini, letoudf.hrb e o setup.sh que eu fiz para facilitar ainda mais sua vida.
Comentários
DEBIAN 12 Autologin
Comentário:
Não conseguí escrever o texto acima porque dava erro no site. Por isso tive que digitalizar e postar a imagem.
Downloads:
Usando xHarbour v1.2.3 Rev. 10264 + BCC 5.8, DBFCDX e SIBRA para imprimir relatórios.
Páginas