Visite também: Br-Linux ·  VivaOLinux ·  LinuxSecurity ·  Dicas-L ·  NoticiasLinux ·  SoftwareLivre.org ·  [mais]
Voltar   Under-Linux.org Fóruns > UnderLinux Wiki
Wiki Classificados Galeria Reviews Jogos Comunidades RSS Feeds FAQ Termos de Uso Sobre
Cadastre-se FotosBlogs Lista de Membros Calendário Pesquisar Mensagens de Hoje Marcar Fóruns Como Lidos

Ferramentas pessoais
Publicidade

From 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

Horários baseados na GMT -3. Agora são 4:49.


Powered by vBulletin®
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd
SEO by vBSEO 3.2.0 ©2008, Crawlability, Inc.