sexta-feira, 23 de maio de 2008

PHP com suporte a Firebird/Interbase

Para instalar o php com suporte ao interbase, foram realizados os seguintes procedimentos: (atualizado)

1) Instalação do apache com suporte a módulos dinâmicos (DSO).
2) Instalação do padrao do firebird para funcionar a conexão.
3) Instaleção do php via DSO e, criação da biblioteca compartilhada para interbase.

1) Apache.- Versão 2.2.8
Depois de feito o download do apache, foi feito a seguinte configuração. Lembrando que a compilação vai do gosto de cada
um:
Obs: todas as compilações foram feitas com usuário normal (não-root), passando para root na hora de executar o make install.

$ ./configure --prefix=/usr/local/apache2 --exec-prefix=/usr/local/apache2 --enable-headers --enable-ssl --enable-vhost-alias --enable-proxy --enable-http --enable-rewrite --enable-so
$ make
$ su
# make install

Ok, o apache está compilado e instalado.

2) Firebird
Foi feito o download do Firebird na versão FirebirdCS-1.5.5.4926-0.i686.tar.gz.
Para instalação, foi executado em modo de instalação padrão o arquivo "install.sh" que se encontra dentro da pasta FirebirdCS-1.5.5.4926-0.i686 que é criada após a descompactação do arquivo "tar.gz"
Após a execução do arquivo install.sh, será criada a pasta /opt/firebird (que faz parte da instalação padrão).
A instalação do firebird não será abordada aqui.

OBS: Em alguns testes, era preciso que o firebird estive-se rodando para o php acessar os bancos de dados.

Agora vamos ao php...!

3) Php - Versão 4.4.8

Seguindo os mesmo passos do Apache, faça o download do php tarball do site e compile conforme sua necessidade. Toda a compilação foi feita em modo usuário normal.
A compilação do php também é temperada a gosto conforme à necessidade.

Neste exemplo, já existe uma instalação de apache e php em versões anteriores para outros testes e serviços rodando nos diretórios padrões /usr/local/apache e /usr/local/lib (para php) portanto, foi instalado o php e apache em diretórios diferentes como pode ser visto nas linhas do configure, abaixo.

$ ./configure --prefix=/usr/local/php-4.4 --exec-prefix=/usr/local/php-4.4 --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql --enable-safe-mode --disable-ipv6 --with-zlib --with-zip=/usr --with-interbase=shared,/opt/firebird --with-openssl
$ make
$ su
# make install

A opção de compilação "--with-interbase=shared,/opt/firebird" deve estar presente para que o php gere um módulo do interbase para funcionar corretamente.
Depois de compilado e instalado, ainda no pasta fonte do php, entre na pasta "modules" e verifique a existencia do arquivo "interbase.so", copie este arquivo para a pasta de "extesions" que será configurada no php.ini.
Como já existia uma instalação do php-4.1.2 neste servidor, o diretório padrão desta versão 4.4.8 está em /usr/local/php-4.4.8.

# cp interbase.so /usr/local/php-4.4/lib/php/extensions

Feito isto, copie o php.ini-dist /usr/local/php-4.4/lib
Pronto, agora é só editar o php.ini e testar.

# cd /usr/local/php-4.4/lib

# vi php.ini
Dentro do php.ini você vai procurar pela linha "extension=interbase.so" e descomentá-la.
Procure também a linha "extension_dir" e coloque-a apontando para a pasta de extensões utilizadas pelo php, nesta caso ficaria assim:

extension_dir = "/usr/local/php-4.4/lib/php/extensions"

Ok, feito isto o servidor está apto a funcionar acessando banco de dados firebird.
Configure um vhost no apache, crie seus scripts de conexão com o firebird e faça os testes.

Obs: Em uma versão de testes, foi compilado o Apache 1.3.37 com php 4.1.2 onde o script que conectava no banco realizava a conexão mas a rotina só apresentava as informações até uma parte ou seja, não concluia todo o processo. Só para registrar =)

Abraço até a próxima...!

quarta-feira, 14 de maio de 2008

Argument list too long

Para remover muitos arquivos de um diretório de uma vez só, o comando seria o seguinte:

for i in `ls`; do rm -rf $i; done

ou usando xargs:

ls | xargs -n10 -i rm -rf {}

Dica de PiterPunk

sexta-feira, 9 de maio de 2008

Dicas interessantes para backup

Não sou expert em script para backups e assim como quase todos admins, tenho que me virar na hora da correria.

Estava escrevendo um script de backup esses dias e, precisava que o script ao gerar o backup do dia, apaga-se o backup do dia anterior.
Como os dados ficariam em fita, não precisava guardar os backups de todos os dias em disco mas, gostaria que ele apaga-se o backup feito no dia anterior, de uma forma "elegante" ao invés de mandar um "rm -rf" na pasta.

Para executar esse rm dos dias anteriores adicionei a seguinte linha dentro do script de backup, no final dele:

rm nome-do-arquivo-$(date --date="1 day ago" +%Y-%m-%d).tgz

Claro que tudo depende de como você fez o backup.
O nome do arquivo no meu caso é sempre o mesmo, o formato da data também é o mesmo e o tipo de compactacão que usei foi .tgz, se isto não estiver de acordo ele não vai encontrar o arquivo de backup que foi gerado.


Bom, nesta opcão posso colocar "4 days ago" para deletar o backup de 4 dias atrás mas, contato a partir da data em que rodo o script por exemplo, se rodar hoje 09-05-2008 ele vai apagar os backups do dia 05-05-2008.
Se omitir esta opcão de data na linha de comando, ele vai remover os backups não importa a data atual, será sempre da quantidade de dias que você colocar.

Essa dica é boa, contanto que você não ache melhor colocar um "rm" após gerar o backup. Mas lembre-se de transferi-lo para outro lugar antes de remover.

Até mais..

terça-feira, 6 de maio de 2008

Lynx e Wget via proxy

Para ativar o uso do Lynx e do Wget via proxy, proceda da seguinte forma:

Lynx:
Localize o arquivo lynx.cfg

# locate lynx.cfg
/etc/lynx.cfg

Utilizando um editor localize as seguinte variáveis proxy: http, https e ftp. Existem outras mas não entrarão neste contexto.
Depois de localizada as variáveis altere para o seguinte:
http_proxy:http://ip.do.servidor.proxy:porta/
https_proxy:http://ip.do.servidor.proxy:porta/
ftp_proxy:http://ip.do.servidor.proxy:porta/

Pronto está feito, domínios da intranet que não precisam de proxy podem ser acessados através da variável:
no_proxy:dominio.com.br, dominio2.com, IP

Para configurar o wget para sempre utilizar proxy proceda da seguinte forma:

Localize o arquivo wgetrc:
# locate wgetrc
/etc/wgetrc

Edite o arquivo e procure as seguintes variáveis:
http_proxy
ftp_proxy
use_proxy

Caso a opção use_proxy esteja ativa: use_proxy = on, as opções http e ftp devem estar configuradas.
http_proxy = http://ip.do.servidor.proxy:porta/
ftp_proxy = http://ip.do.servidor.proxy:porta/

obs: mantenha a barra no final das configurações.

Para utilizar o wget utilizando proxy digite o seguinte
#wget --proxy-user=usuario --proxy-password=senha endereço_para_baixar

Feito isto, é só utilizar as ferramentas.

segunda-feira, 5 de maio de 2008

Próximos posts...!

Os próximos posts a serem colocados aqui serão:

1) Como rodar o php com suporte a acesso ao banco de dados interbase/firebird
2) Rodando dois servidores apache no mesmo servidor para atender a domínios diferentes em portas diferentes.

Aguardem....!!!