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...
tags:
publicado por gamito às 15:29
link
Comentar:

Mais

Comentar via SAPO Blogs

Se preenchido, o e-mail é usado apenas para notificação de respostas.

Este blog tem comentários moderados.

Este blog optou por gravar os IPs de quem comenta os seus posts.

Os comentários são da exclusiva resonsabilidade dos seus autores.
Mário Gamito, 2004 - 2007
Todos os direitos reservados.

Mais sobre mim

pesquisar

Janeiro 2008

Dom
Seg
Ter
Qua
Qui
Sex
Sab
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

Subscrever por e-mail

A subscrição é anónima e gera, no máximo, um e-mail por dia.

Posts recentes

Portagens

Há 20 anos atrás... *sigh...

Vou criar a minha própria...

Finalmente

SAPO codebits

Sporting

Caixa Mágica e Mandriva

A1 Aveiro - Lisboa

Browser mamão

gFTP

PlayStation 3 e Sony

Mas quem é o gajo ?

Negócios do Open Source

Não estão fartos disto ?

Naughty, naughty

PHP chrooted

Joomla

Novo Projecto

MySQL :: It's the ctl, st...

MySQL :: Just a little ti...

MySQL chrooted

BASH, stdout e stderr

4 kb stack ou 8kb stack

A funny guy...

Truques, Minas e Alçapões...

Truques, Minas e Alçapões...

Logs do mrtg

Salmos, 23

Servidor caseiro - XXVII

Servidor caseiro - XXVI

Servidor caseiro - XXV

Números de telemóvel aban...

Servidor caseiro - XXIV

Humm...

Servidor caseiro - XXIII

Servidor caseiro - XXII

Servidor caseiro - XXI

Servidor caseiro - XX

Servidor caseiro - XIX

Ubuntu : O Enigma

Leixões 1 - Benfica 1

Servidor caseiro - XVIII

Servidor caseiro - XVII

Servidor caseiro - XVI

Servidor caseiro - XV

Servidor caseiro - XIV

Servidor caseiro - XIII

Servidor caseiro - XII

Servidor caseiro - XI

Servidor caseiro - X

Contacto

gamito@gmail.com

tags

todas as tags

subscrever feeds