Sábado, 18 de Agosto de 2007
Servidor caseiro - VII
Acabei de instalar o Apache com suporte a tudo quanto me interessa: PHP, PERL, Python, SSL e modsecurity.
- Pré-configuração do Apache:
# ./configure --prefix=/usr/local/httpd
Por agora fica assim, volto a ele mais tarde
- Instalação de pré-requisitos para o PHP
Para configurar o PHP com suporte a mcrypt e mhash, é necessário compilar as respectivas bibliotecas. Estão no SourceForge para download.
Antes, é necessário adicionar ao ficheiro /etc/ld.so.conf as linhas
/lib
/usr/lib
/usr/local/lib
para que o sistema as reconheça (embora na verdade, só seja estrictamente necessária a última).
A compilação é feita do mesmo modos para os três ficheiros:
# ./configure && make && make install && ldconfig
e deve ser feita por esta ordem: libmcrypt, mhash, mcrypt
Para o PHP suportar IMAP, o que é uma coisa muito útil para o webmail :), tenho que compilar a biblioteca c-client da Universidade de Washington que pode ser encontrada em ftp://ftp.cac.washington.edu/imap/
Antes da compilação, devo editar o ficheiro Makefile e na linha EXTRACFLAGS, colocar à frente, =-ldl, caso contrário, a compilação aborta.
Compilo:
# make slx
A seguir, são necessários uns truques para que o PHP integre bem a biblioteca e não aborte a compilação com erros:
# mkdir lib
# mkdir include
# cd c-client
# cp *.c ../lib
# cp *.h ../include
# cp c-client.a ../lib/libc-client.a
Deixo por agora as coisas como estão.
- Instalação do mod_ssl
O mod_ssl deve ser o primeiro módulo para o Apache.
Lembram-se do certifocado e chave que criei num artigo anterior ? Pois bem, preciso dele agora:
# ./configure --with-apache=../apache_1.3.37 -with-crt=/usr/local/ssl/bin/server.crt --with-key=/usr/local/ssl/bin/server.key
- Instalação do mod_perl
# perl Makefile.PL APACHE_SRC=../apache_1.3.37/src NO_HTTPD=1 USE_APACI=1 PREP_HTTPD=1 EVERYTHING=1
# make
# make install
- Instalação do modsecurity
# cd apache1/
# cp mod_security.c ../../apache_1.3.37/src/modules/extra/
- Instalação do PHP
# export LDFLAGS=-lstdc++
# ./configure --with-mysql=/usr/local/mysql \
--with-pgsql=/usr/local/pgsql \
--with-apache=../apache_1.3.37 \
--with-openssl=/usr/local/ssl \
--enable-track-vars \
--with-xml \
--with-mcrypt \
--with-gettext \
--with-ldap \
--enable-sockets \
--enable-wddx \
--enable-xslt \
--with-xsltsablot \
--with-zlib \
--with-kerberos \
--enable-bcmath \
--with-bz2 \
--enable-calendar \
--with-jpeg-dir \
--with-tiff-dir \
--with-curl \
--with-curlwrappers \
--with-gdbm \
--with-expat \
--with-iconv-dir \
--with-dom-xslt \
--with-dom-exslt \
--with-dom \
--with-db4 \
--with-flatfile \
--with-fam \
--enable-exif \
--with-gd \
--enable-ftp \
--with-png-dir \
--with-xpm-dir \
--with-ttf \
--with-iconv \
--with-mhash \
--with-ncurses \
--enable-soap \
--with-readline \
--with-pear \
--enable-snmp \
--enable-ucd-snmp-hack \
--enable-mbstring \
--enable-mbstr-enc-trans \
--with-imap=/usr/local/src/imap-2006e \
# make
# make install
# cp php.ini-dist /usr/local/lib/php.ini
- Instalação do Apache
Eu tinha dito num artigo anterior que ia precisar do código do OpenSSl e portanto, não o devia apagar. É agora.
# SSL_BASE=../openssl-0.9.8e ./configure --prefix=/usr/local/httpd \ --activate-module=src/modules/perl/libperl.a \ --activate-module=src/modules/php5/libphp5.a \
--enable-module=ssl \
--activate-module=src/modules/extra/mod_security \
--enable-module=security \
--enable-module=rewrite \
--enable-shared=rewrite \
--enable-module=proxy \
--enable-shared=proxy
# make
# make install
O ficheiro ctl do Apache não funciona com o chkconfig de sistemas Red Hat based, pelo que para que arranque automaticamente com o startup do servidor e páre quando se desligue, é necessário efectuar o trabalho manualmente:
# cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd
# cd /etc/rc3.d
# ln -s ../init.d/httpd S99httpd
# ln -s ../init.d/httpd K99httpd
(se tiver interface gráfica, deve fazer o mesmo para o directório /etc/rc5.d)
Como o Apache foi compilado com suporte a SSL, sempre que arranca, pergunta-me a password com que foi criado o certificado, o que é "secante".
Essa pergunta pode ser retirada, embora não seja aconselhável, muito menos em ambientes de produção. Fica a nota.
Para isso, no directório /usr/local/httpd/conf/ssl.key, corro os seguintes comandos:
# cp server.key server.key.org
# openssl rsa -in server.key.org -out server.key
# chmod 400 server.key
O modsecurity tem um bug que faz com que a linha inserida no httpd.conf seja:
AddModule mod_security
Tenho que a mudar para:
AddModule mod_security.c
Se quisermos que o Apache arranque sempre com suporte a SSL, editamos o ficheiro /etc/init.d/httpd e muda-mos a linha nº 87 de
if $HTTPD; then
para
if $HTTPD -DSSL; then
A configuração do httpd.conf fica ao gosto do freguês.
- Instalação do mod_python
A instalação do mod_python é feita depois do Apache estar compilado.
Quando se instala o mod_python, o Apache no arranque queixa-se de que pode crashar.
Para evitar isso, edita-se a o ficheiro src/Makefile.in e muda-se a linha
OPT=
para
OPT=-DEAPI
# ./configure --with-apxs=/usr/local/httpd/bin/apxs
# make dso
# make install
Tenho que adicionar esta linha ao httpd.conf:
LoadModule python_module /usr/local/httpd/libexec/mod_python.so
# /etc/init.d/httpd restart
E pronto, aqui está o Apache a correr com suporte a SSL:
# ps ax
(...)
5600 ? Ss 0:00 /usr/local/httpd/bin/httpd -DSSL
5601 ? S 0:00 /usr/local/httpd/bin/httpd -DSSL
5602 ? S 0:00 /usr/local/httpd/bin/httpd -DSSL
5603 ? S 0:00 /usr/local/httpd/bin/httpd -DSSL
5604 ? S 0:00 /usr/local/httpd/bin/httpd -DSSL
5605 ? S 0:00 /usr/local/httpd/bin/httpd -DSSL
(...)
See ya...
Os comentários são da exclusiva resonsabilidade dos seus autores.
Mário Gamito, 2004 - 2007
Todos os direitos reservados.