jueves, 11 de febrero de 2010

Instalación Apache-2.x 64bits + SSL + JK en Solaris 10

En este post vamos a ver la instalación de Apache2 con diferentes módulos, como mod_ssl, mod_expires, mod_deflate y mod_jk, en un solaris 10. La compilación la haremos en 64 bits.

Introducción


Mod_ssl es el módulo que se encarga de la encriptación para la navegación a través de https.
Mod_expires nos permite marcar en la cabecera HTTP la validez del documento, una vez se guarda en la caché, no volverá a solicitarlo hasta que haya expirado.
Mod_deflate nos permite comprimir el contenido antes de que nos sea devuelto a nuesto navegador.
Mod_jk establece la comunicación con un servidor de aplicaciones J2EE como puede ser Tomcat o GlassFish.

Requisitos

La compilación la haremos con el compilador cc de Sun, lo podemos obtener del paquete SunStudio.

El software que necesitaremos:
- Apr
bash-3.00# wget ftp://ftp.sunfreeware.com/pub/freeware/sparc/10/apr-1.2.2-sol10-sparc-local.gz
- OpenSSL
bash-3.00# wget ftp://ftp.sunfreeware.com/pub/freeware/SOURCES/openssl-0.9.8l.tar.gz
- Apache-2.2.14
bash-3.00# wget http://apache.ziply.com/httpd/httpd-2.2.14.tar.gz
- mod_jk
bash-3.00# wget http://www.poolsaboveground.com/apache/tomcat/tomcat-connectors/jk/source/jk-1.2.28/tomcat-connectors-1.2.28-src.tar.gz

Instalación


1.- Instalación apr
bash-3.00# pkgadd -d apr-1.2.2-sol10-sparc-local

2.- Instalación OpenSSL 64 bits
bash-3.00# export PATH=$PATH:/usr/local/bin:/usr/ccs/bin:/usr/sfw/bin:/opt/SUNWspro/bin
bash-3.00# CC="cc" CFLAGS="-O2 -m64" ./configure --prefix=/usr/local/64/libxml2
bash-3.00# make
bash-3.00# make install

3.- Instalación Apache-2.2.14
bash-3.00# CC="cc" \
CFLAGS="-O3 -m64" \
./configure \
"--prefix=/opt/www/apache-2.2.14" \
"--with-included-apr" \
"--enable-so" \
"--enable-rewrite" \
"--enable-headers" \
"--enable-expires" \
"--enable-status" \
"--enable-ssl" \
"--with-ssl=/usr/local/64/ssl" \
"--enable-deflate" \
"--enable-proxy" \
"--enable-proxy-http" \
"--enable-proxy-ajp" \
bash-3.00# make
bash-3.00# make install

4.- Instalación Mod_jk (con compilador GNU make)
bash-3.00# CC="cc" ./configure --with-apxs=/opt/www/apache-2.2.14/bin/apxs
bash-3.00# gmake
bash-3.00# gmake install

Configuraciones

1.- Configuración mod_deflate.
En el archivo /opt/www/apache-2.2.14/conf/http.conf debemos introducir las siguientes lineas:

################################################
# MOD DEFLATE
################################################

SetOutputFilter DEFLATE
AddOutputFilterByType DEFLATE text/html text/plain text/xml
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
# Don't compress images
SetEnvIfNoCase Request_URI \
\.(?:gif|jpe?g|png)$ no-gzip dont-vary
Header append Vary User-Agent env=!dont-vary
LogFormat '"%r" %{output_info}n/%{input_info}n (%{ratio_info}n%%)' deflate
CustomLog logs/deflate_log deflate


Con esta configuración comprimimos todo excepto las imágenes.

2.- Configuración mod_expires.
Creamos un nuevo archivo de configuración por ejemplo en la siguiente ruta:
bash-3.00# vi /opt/www/apache-2.2.14/conf/extra/modules/modexpires.conf.d/expires.conf

En esta configuración añadimos el tipo de objeto que queremos hacer que expire y el tiempo:
##############################################################
## MOD_EXPIRES
##############################################################

ExpiresActive on
ExpiresByType image/jpg "access 1 month"
ExpiresByType image/gif "access 1 month"
ExpiresByType image/jpg "access 1 month"
ExpiresByType image/ico "access 1 month"
ExpiresByType application/x-shockwave-flash "access 1 month"
ExpiresByType text/js "access 7 days"
ExpiresByType text/css "access 7 days"
ExpiresByType text/jsp "access plus 7 days"
ExpiresByType text/html "access plus 7 days"
ExpiresDefault "access 7 days"


En el archivo http-vhosts.conf añadimos la configuración sobre el VirtualHost que queramos.


ServerAdmin test@pruebas.es
DocumentRoot /www/test
ServerName www.test.es
# ModExpires
Include conf/extra/modules/modexpires.conf.d/expires.conf


3.- Configuración mod_jk
En primer lugar declararemos nuestros "workers" en el archivo de configuración mod_jk.conf.
Workers son los servidores de aplicaciones J2EE como Tomcat o GlassFish.

bash-3.00# vi /opt/www/apache-2.2.14/conf/extra/modjk.conf.d/modjk.conf
ps=/
worker.list=TEST1, TEST2, ClusterTEST

worker.TEST1.port=14101
worker.TEST1.host=192.168.1.1
worker.TEST1.type=ajp13
worker.TEST1.connect_timeout=10000
worker.TEST1.prepost_timeout=10000
worker.TEST1.reply_timeout=140000
worker.TEST1.max_reply_timeouts=3
worker.TEST1.retries=3
worker.TEST1.socket_timeout=5
worker.TEST1.lbfactor=1
#worker.TEST1.activation=D
worker.TEST1.redirect=workerTEST2


worker.TEST2.port=14102
worker.TEST2.host=192.168.1.2
worker.TEST2.type=ajp13
worker.TEST2.connect_timeout=10000
worker.TEST2.prepost_timeout=10000
worker.TEST2.reply_timeout=140000
worker.TEST2.max_reply_timeouts=3
worker.TEST2.retries=3
worker.TEST2.socket_timeout=5
worker.TEST2.lbfactor=1
worker.TEST2.activation=D
worker.TEST2.redirect=workerTEST1

worker.ClusterTEST.type=lb
worker.ClusterTEST.max_reply_timeouts=3
worker.ClusterTEST.sticky_session=1
worker.ClusterTEST.balance_workers=TEST1, TEST2

------------------------------------------
En este archivo se especifican las propiedades del servidor de aplicaciones con el que queremos conectar, como por ejemplo: La dirección Ip, el puerto AJP del servidor J2EE, el protocolo AJP13, y una serie de timeouts que podemos cambiar según cual sean nuestras necesidades.
Con esta configuración pretendemos atacar a un cluster de Servidores de aplicaciones activo-pasivo, el nodo TEST1 funcionará siempre y si en algún momento se cae se pondrá como primario automáticamente TEST2. Si lo que queremos es que funcionen los dos nodos a la vez sólo tenemos que comentar las propiedades:
#worker.TEST1.activation=D
#worker.TEST1.redirect=workerTEST2
#worker.TEST2.activation=D
#worker.TEST2.redirect=workerTEST1

Una vez ya hemos declarado los nodos o "workers" tendremos que apuntar la aplicación desde nuestro VirtualHost hacia nuestro servidor de aplicaciones.


ServerAdmin test@pruebas.es
DocumentRoot /www/test
ServerName www.test.es
# ModExpires
Include conf/extra/modules/modexpires.conf.d/expires.conf
# ModJK
JkMount /aplicacion ClusterTEST



Espero que os sirva de ayuda. ;D

No hay comentarios:

Publicar un comentario