Tutoriais/OpenBSD/apache-php-mysql-chroot
De UnderLinux Wiki
Tabela de conteúdo |
Tutorial Apache+PHP+MYSQL em chroot no OpenBSD 3.5
Objetivos:
Utilizar o apache dentro de seu chroot em conjunto com php e mysql, mas acho que o mais importante deste tutorial será fazer a função mail() do php rodar normalmente dentro do chroot, pelo que vi pela internet e por eu mesmo ter sofrido para achar essa solução estou disponibilizando a todos como resolver esse pequeno problema.
Instalação do php:
O apache já vem compilado por padrão no OpenBSD, então vamos seguir com a instalação do php: Nesse exemplo vou utilizar o pkg_add, mas quem quiser pode compilar os programas direto dos ports
pkg_add -v ftp://ftp.openbsd.org/pub/OpenBSD/3.5/packages/i386/php4-core-4.3.5RC3.tgz pkg_add -v ftp://ftp.openbsd.org/pub/OpenBSD/3.5/packages/i386/php4-mysql-4.3.5RC3.tgz pkg_add -v ftp://ftp.openbsd.org/pub/OpenBSD/3.5/packages/i386/php4-pear-4.3.5RC3.tgz
Habilita o php no apache
/usr/local/sbin/phpxs -s cp /usr/local/share/doc/php4/php.ini-recommended /var/www/conf/php.ini
Habilita o mysql no php
/usr/local/sbin/phpxs -a mysql
Instalar o mysql
pkg_add -v ftp://ftp.openbsd.org/pub/OpenBSD/3.5/packages/i386/mysql-server-4.0.18p1.tgz pkg_add -v ftp://ftp.openbsd.org/pub/OpenBSD/3.5/packages/i386/mysql-client-4.0.18.tgz
cria os BD do mysql
/usr/local/bin/mysql_install_db
seta a senha de root
/usr/local/bin/mysqladmin -u root password 'sua_senha'
inicia o banco
/usr/local/bin/mysqld_safe &
Configuração Apache
Agora vamos terminar de configurar o apache para utilizar o php, edite o /var/www/conf/httpd.conf, certifique-se que tenha as seguinte linhas DESCOMENTADAS:
LoadModule php4_module modules/libphp4.so AddType application/x-httpd-php .php .php3 .htm .html .inc DirectoryIndex index.html index.php
Vamos testar se o apache já está interpretando o php, execute:
apachectl stop && apachectl start
Crie o arquivo index.php dentro de /var/www/htdocs com o conteúdo:
<?php
phpinfo();
?>
depois acesse:
http://IP_SERVIDOR/index.php
Se tudo ocorreu bem ele irá mostrar todas as informações do php em seu servidor, agora vamos criar e copiar os arquivos necessários para a função mail() e para o mysql funcionar dentro do chroot
Configuração email dentro do chroot
Para enviar os emails de dentro do chroot eu vou utilizar o mini_sendmail
cd /usr/port/mail/mini_sendmail make make install
Crie as pastas:
mkdir /var/www/bin mkdir /var/www/run mkdir /var/www/run/mysql mkdir /var/www/usr mkdir /var/www/usr/lib mkdir /var/www/libexec mkdir /var/www/etc
Copiar os arquivos:
#necessário para o mini_sendmail cp -p /bin/sh /var/www/bin/ #necessário para o php conectar ao mysql ln /var/run/mysql/mysql.sock /var/www/run/mysql #necessario para resolver nomes cp -p /etc/resolv.conf /var/www/etc/ cp -p /etc/hosts /var/www/etc/ cp -p /usr/local/bin/mini_sendmail /var/www/bin/
Agora faltam as libs que o mini_sendmail utiliza, execute em sua maquina:
ldd /usr/local/bin/mini_sendmail:
ele deve retornar algo parecido com isto:
Start End Type Ref Name 00000000 00000000 exe 1 /usr/local/bin/mini_sendmail 00c12000 20c4b000 rlib 1 /usr/lib/libc.so.30.3 0449c000 0449c000 rtld 1 /usr/libexec/ld.so
Essas são as libs que ele utiliza, então vamos copiá-las para dentro do chroot do apache
cp -p /usr/lib/libc.so.30.3 /var/www/usr/lib/ cp -p /usr/libexec/ld.so /var/www/usr/libexec/
Para terminarmos falta apenas um detalhe (mas muito importante), editar o php.ini para informar o caminho correto do sendmail, no nosso caso será o mini_sendmail edite /var/www/conf/php.ini e procure pela linha:
;sendmail_path =
e altere para:
sendmail_path = /bin/mini_sendmail -ficeman@underlinux.com.br -t -i
Troque o iceman@underlinux.com.br pelo seu email ou o email que deseja que apareça no campo FROM dos emails, note que tem um "-f" encostado a o endereço de email.
Para finalizar reinicie o apache:
apachectl stop && apachectl start
Caso tenha dado algum erro de uma olhada em seu log do apache (/var/www/logs/error_log), ele pode lhe informar o que faltou.
Rafael M. Capovilla - 1c3_m4n iceman (@) at underlinux.com.br


