Criando pacotes deb (Debian/Ubuntu) para sistemas em PHP
De artista.frustrado
Um dos maiores problemas que tenho encontrar em colocar em produção, normalmente na pressa, sisetmas PHP é justamente o fato de não haver planejamento. Tudo deve ser para ontem. Por esse motivo criei duas soluções:
- Shell scripts para automatizar a instalação em servidores nos quais não administro
- Pacotes deb para automatizar a instalação em servidores que administro.
Como exemplo utilizarei o Zend Framework. O Zend Framework é desenvolvido pela Zend, empresa Israelita mantenedora do PHP, e por uma ampla e engajada comunidade de desenvolvedores.
Tabela de conteúdo |
Configurando Ambiente
export DEBFULLNAME="Artista Frustrado" export DEBEMAIL="e-mail.do.artista@mais.frustrado.com.uk"
criar diretorios
mkdir -p ~/Empacotamento/zf/zend-framework-0.10.6 cd ~/Empacotamento/zf/zend-framework-0.10.6 vim Makefile
colocar no Makefile
all:
wget http://framework.zend.com/releases/ZendFramework-1.10.6/ZendFramework-1.10.6.tar.gz -O /tmp/ZendFramework-1.10.6.tar.gz
tar -zxvf /tmp/ZendFramework-1.10.6.tar.gz -C .
clean:
rm -fr ZendFramework-1.10.6"Debianização" Inicial com CDBS
tar -zcvf ../zend_framework-0.10.6.tar.gz ../zend_framework-0.10.6
dh_make -c gpl -s -b -f ../zend_framework-0.10.6.tar.gz
Maintainer name : Artista Frustrado Email-Address : e-mail.do.artista@mais.frustrado.com.uk Date : Wed, 24 Feb 2010 19:53:51 +0530 Package Name : zend-framework Version : 0.16.6 License : gpl3 Using dpatch : no Using quilt : no Type of Package : cdbs Hit <enter> to confirm: Currently there is no top level Makefile. This may require additional tuning. Done. Please edit the files in the debian/ subdirectory now. You should also check that the terminator Makefiles install into $DESTDIR and not in / .
e será criado um diretório debian
cd debian vim dirs
No arquivo dirs
var/www/ZF/versions/ var/www/ZF/apps/
No arquivo install
ZendFramework-1.10.6 var/www/ZF/version/
no arqivo control
Source: zend-framework Section: php Priority: extra Maintainer: Artista Frustrado <e-mail.do.artista@mais.frustrado.com.uk> Build-Depends: cdbs Standards-Version: 3.8.4 Homepage: http://framework.zend.com Zend-Framework Package: zend-framework Architecture: all Depends: php5, php5-cli, php5-mysql, php5-xsl, php5-sqlite, php5-resource, php5-pspell, php5-pgsql, php5-mcrypt, php5-ldap, php5-intl, php5-imap, php5-gd, php5-cli, php-pear, php5-ming, php5-auth-pam, php5-geoip, php5-imagick, php5-ps Description: Zend Framework Zend Framework
e no arquivo postinst
+ crap.txt #!/bin/sh # postinst script for zend-framework # # see: dh_installdeb(1) set -e case "$1" in configure) if [ -f /var/www/ZF/zend ] then rm /var/www/ZF/zend fi if [ -f /usr/local/bin/zf.sh ] then rm /usr/local/bin/zf.sh fi ln -s /var/www/ZF/versions/ZendFramework-1.10.2/library/ /var/www/ZF/zend ln -s /var/www/ZF/versions/ZendFramework-1.10.2/bin/zf.sh /usr/local/bin/zf.sh ;; abort-upgrade|abort-remove|abort-deconfigure) ;; *) echo "postinst called with unknown argument \`$1'" >&2 exit 1 ;; esac exit 0
Empacotando
debuild -us -uc
Conclusão
Publiquei em minha conta do github [1] os arquivos de exmplo.