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 do post | comentar
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

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

Arquivos

Contacto

gamito@gmail.com

No Planeta Geek

tags

todas as tags

subscrever feeds