Vamos agora compilar outro exemplo do Kylix, que é o projeto
localizado no diretório
demos/websnap/MiniAppCGI.bpg. Este
projeto utiliza a biblioteca
WebSnap, que traz vários
recursos de produtividade para o desenvolvedor, mas o nosso foco
aqui continua sendo o
deploy.
Abra e compile o projeto. Entre no browser e tente executar. Vai
dar o seguinte erro:
Internal Application Error
libjs.borland.so: cannot open shared object file: No such file or directory
O problema é que a este programa utiliza esta biblioteca e o Apache
não consegue enxergá-la. Este arquivo está no diretório
/usr/local/kylix2/bin. Mas como saber se não existem outras
bibliotecas necessárias? Para tentar solucionar o problema, usa-se
um comando do
Linux chamado
ldd. Abra um terminar e execute:
$ ldd MiniAppCGI.cgi
O comando lista todas as bibliotecas necessárias e mostra onde elas
foram encontradas no file system. Se alguma biblioteca não for
encontrada, ele irá mostrar do lado "Not found". Isso aconteceu no
seu CGI? Ele encontrou todas!? Não se sinta frustrado, é assim mesmo :)
O
ldd só mostra os links estáticos e a
libjs.borland.so
é um link dinâmico. Grosseiramente falando, o programa só sabe que
irá precisar da biblioteca quando já estiver sendo executado.
Se você não acredita em mim, copie o arquivo para o seu diretório de
scripts com o comando:
# cp /usr/local/kylix2/bin/libjs.borland.so /home/web/scripts
Rode novamente no browser e voilá!
Esta mesma técnica funcionará para as bibliotecas do
DbExpress
ou de qualquer outra shared library que você for fazer uso.
Uma dica interessante: se você pretende ter várias aplicações rodando
em Kylix no mesmo servidor, o interessante é que você crie um
diretório somente para as bibliotecas comuns, tal como
/home/web/shared e coloque lá o que for comum aos aplicativos.
Um ponto que eu ainda estou estudando é como gerar arquivos DSO. Os
arquivos DSO são o equivalente do ISAPI no RWindows, ou seja, são
programas que ficam em memória mesmo depois de sua execução terminar.
O uso de DSOs abre várias novas possibilidades para a programação do
Kylix, mas isso é para outro artigo...
Sites e arquivos pesquisados:
http://www.rick-ross.com/papers/k3/k3deploy.html
http://www.idssecure.org/?q=node/view/111
http://br.groups.yahoo.com/group/kylix-lista
Agradecimento especial para o
Marcelo Almeida da Spress, que
me auxiliou durante todo o processo de testes. Espero que o artigo
seja útil para alguém!
Saúde e Liberdade,
Josir Gomes