Existen diversos motivos por los cuales queremos poner Apache al frente de Liferay, entre ellos quizás el más significativo es el hecho de que nuestro servidor debe estar en la capacidad de atender diferentes servidores web (Tomcat, JBoss, Apache + PHP, etc.) y la otra razón es que nos facilita el esquema distribuido de aplicaciones.
En este artículo aprenderemos como configurar Apache + mod_jk + VirtualHost para exponer Liferay a la web por el puerto 80.
En primer lugar el ambiente que tengo es CentOS 5.X con Apache 2 y Liferay 6.1 instalado y funcionando. Si no tiene Liferay instalado es recomendable que lea el siguiente artículo http://comunidad.fware.pro/dev/java/como-instalar-liferay-en-centos/.
Luego procedemos con la instalación del módulo mod_jk, para lo cual es importante saber si nuestro sistema es de 32 o 64 bits, si no esta seguro de esta información consulte el artículo http://comunidad.fware.pro/tech/linux/como-saber-la-version-instalada-de-centos/ que le ayudará a determinar esta información.
CentOS de 32 bits
Para esto será necesario agregar una entrada a nuestro repositorio de yum con el fin de agregar los repositorios de Jpackage. Nos ubicamos en el directorio /etc/yum.repos.d del servidor y creamos los archivos jpackage17.repo y jpackage50.repo con el siguiente contenido:
[sourcecode language=»bash»]
[jpackage17-generic]
name=JPackage (free), generic
mirrorlist=http://www.jpackage.org/mirrorlist.php?dist=generic&type=free&release=1.7
gpgcheck=1
gpgkey=http://www.jpackage.org/jpackage.asc
enabled=1
[jpackage17-rhel]
name=JPackage (free) for Red Hat Enterprise Linux $releasever
mirrorlist=http://www.jpackage.org/mirrorlist.php?dist=redhat-el
$releasever&type=free&release=1.7
gpgcheck=1
gpgkey=http://www.jpackage.org/jpackage.asc
enabled=1
[jpackage17-generic-nonfree]
name=JPackage (non-free), generic
mirrorlist=http://www.jpackage.org/mirrorlist.php?dist=generic&type=non-free&release=1.7
gpgcheck=1
gpgkey=http://www.jpackage.org/jpackage.asc
enabled=0
[/sourcecode]
[sourcecode language=»bash»]
[jpackage50-generic]
name=JPackage (free), generic
mirrorlist=http://www.jpackage.org/mirrorlist.php?dist=generic&type=free&release=5.0
gpgcheck=1
gpgkey=http://www.jpackage.org/jpackage.asc
enabled=1
[jpackage50-rhel]
name=JPackage (free) for Red Hat Enterprise Linux $releasever
mirrorlist=http://www.jpackage.org/mirrorlist.php?dist=redhat-el
$releasever&type=free&release=5.0
gpgcheck=1
gpgkey=http://www.jpackage.org/jpackage.asc
enabled=1
[jpackage50-generic-nonfree]
name=JPackage (non-free), generic
mirrorlist=http://www.jpackage.org/mirrorlist.php?dist=generic&type=non-free&release=5.0
gpgcheck=1
gpgkey=http://www.jpackage.org/jpackage.asc
enabled=0
[/sourcecode]
Luego de crear los archivos entonces instalamos el mod_jk usando el siguiente comando:
[sourcecode language=»text»]
[root@cl-t025-423cl yum.repos.d]# yum install mod_jk-ap20
[/sourcecode]
CentOS de 64 bits
Si su CentOS es de 64 bits, descargue el siguiente RPM usando el comando wget así:
[sourcecode language=»text»]
[root@cl-t025-423cl ~]# wget http://comunidad.fware.pro/wp-content/uploads/2012/11/psa-mod_jk-1.2.15-6.98092.x86_64.rpm
[/sourcecode]
Ahora instálelo usando el comando rpm de la siguiente forma:
[sourcecode language=»text»]
[root@cl-t025-423cl ~]# rpm -ivh psa-mod_jk-1.2.15-6.98092.x86_64.rpm
[/sourcecode]
Con el mod_jk instalado ahora pasaremos a la configuración del apache.
Inicialmente se debe agregar en la ruta /etc/httpd/conf.d un archivo cuyo nombre sea mod_jk.conf, así le permitirá al Apache cargar el módulo.
[sourcecode language=»bash»]
#
# Mod_jk settings
#
# Load mod_jk module
LoadModule jk_module modules/mod_jk.so
# Where to find workers.properties
JkWorkersFile conf/workers.properties
# Where to put jk logs
JkLogFile logs/mod_jk.log
# Set the jk log level [debug/error/info]
JkLogLevel emerg
# Select the log format
JkLogStampFormat «[%a %b %d %H:%M:%S %Y] »
# JkOptions indicate to send SSL KEY SIZE,
JkOptions +ForwardKeySize +ForwardURICompat –ForwardDirectories
# JkRequestLogFormat set the request format
JkRequestLogFormat «%w %V %T»
[/sourcecode]
En este archivo se esta cargando el módulo al Apache y se le esta indicando donde encontrar el archivo worker.properties que es el más importante de la configuración.
Entonces pasamos a crear el archivo worker.properties así:
[sourcecode language=»bash»]
#
# This file provides minimal jk configuration properties needed to
# connect to Tomcat.
#
# The workers that jk should create and work with
#
workers.tomcat_home=/opt/liferay/tomcat-7.0.27
workers.java_home= /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64
ps=/
worker.list=lray
worker.lray.port=8009
worker.lray.host=localhost
worker.lray.type=ajp13
worker.lray.lbfactor=1
[/sourcecode]
En este archivo estamos definiendo la ubicación del servidor de Tomcat que para este caso esta en la ruta /opt/liferay/tomcat-7.0.27 véase el artículo http://comunidad.fware.pro/dev/java/como-instalar-liferay-en-centos/ para mayor detalle de la instalación de Liferay sobre CentOS.
Se define el home de java que para este caso es /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64
El objetivo final de este archivo es indicarle al mod_jk hacia donde dirigir las peticiones que sean recibidas por Apache.
Finalmente procedemos a configurar el VirtualHost para lo que crearemos un archivo en la ruta /etc/httpd/vhost.d llamado liferay.conf
[sourcecode language=»php»]
#Liferay Virtualhost
ServerAdmin webmaster@domain.com
DocumentRoot /opt/liferay/tomcat-7.0.27/webapps/ROOT
Options None
AllowOverride None
Order allow,deny
allow from all
ServerName liferay.domain.com
ErrorLog logs/ liferay.domain.com -error_log
CustomLog logs/ liferay.domain.com -access_log common
# Send ROOT app. to worker named lray
JkMount /* lray
JkUnMount /images/* lray
RewriteEngine On
RewriteRule ^/(images/.+);jsessionid=\w+$ /$1
[/sourcecode]
Téngase en cuenta que liferay.domain.com debe corresponder a una entrada en el servidor de DNS que apunte a la dirección IP por la cual escucha Apache.
Con todos los pasos anteriores realizados nos resta reiniciar el servicio de Apache así:
[sourcecode language=»text»]
[root@cl-t025-423cl vhost.d]# service httpd restart
[/sourcecode]
Para probarlo ingresamos en el navegador la URL liferay.domain.com.
Hola muchas gracias por el tutorial, he hecho todo al pelo y me funciona bien, pero quisiera configurar mi apache que esta en otra maquina local. ¿como puedo hacerlo?
Muchas gracias