Categorías

7 jun 2011

Despliegue de Joomla en NGINX

NGINX es uno de los servidores web que más popularidad está adquiriendo, gracias a su gran rapidez y capacidad para responder un gran número de peticiones sin alterarse.

Como virtudes, este servidor web tiene las que ya hemos comentado:

- Gran rendimiento y velocidad de gestión de peticiones.

Como defectos:

- Menor implantación.
- Menor número de módulos de compatibilidad.

De todos modos es una gran opción que está creciendo y que puede ser muy interesante según que casos. Por ello vamos a desplegar uno de los CMS más usados, es decir Joomla, en nginx para trastear un poco con este servidor web.

1- Instalamos NGINX y MySQL: 

aptitude install mysql-client-5.0 mysql-server-5.0 nginx

Comprobamos que nginx está corriendo:

ps aux | grep nginx
root 4243 0.0 0.0 9608 892 pts/0 S+ 10:45 0:00 grep nginx

2- Instalamos los siguientes módulos PHP:


aptitude install -R php5-cgi php5-mysql 
php5-curl php5-gd php-pear php5-imagick php5-imap php5-mcrypt php5-sqlite
php5-xmlrpc php5-xsl

Especificamos a php5 que utilice FastCgi:
nano /etc/php5/cgi/php.ini
Descomentamos cgi.fix_pathinfo=1

3- Instalamos y configuramos spawn-fcgi

aptitude install spawn-fcgi

Debemos indicar a FastCGI el puerto de escucha, y el usuario y grupo que serán los propietarios del fichero. Para ello ejecutaremos la siguiente instrucción:

/usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -u 
www-data -g www-data -f /usr/bin/php5-cgi -P /var/run/fastcgi-php.pid 

Para que arranque el servicio automáticamente nos vamos al fichero /etc/rc.local y añadimos la misma instrucción que antes:

/usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -u 
www-data -g www-data -f /usr/bin/php5-cgi -P /var/run/fastcgi-php.pid 

Ahora tenemos que crear un script con el nombre php-fastcgi en el directorio /etc/init.d/php-fastcgi el cual contendrá lo siguiente:
#!/bin/sh
### BEGIN INIT INFO
# Provides: php-fastcgi
# Required-Start: $all
# Required-Stop: $all
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start and stop php-cgi in external FASTCGI mode
# Description: Start and stop php-cgi in external FASTCGI mode
### END INIT INFO
# Author: Kurt Zankl <[EMAIL PROTECTED]>
# Do NOT "set -e"
PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC="php-cgi in external FASTCGI mode"
NAME=php-fastcgi
DAEMON=/usr/bin/php-cgi
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME
PHP_CONFIG_FILE=/etc/php5/cgi/php.ini
# Exit if the package is not installed
[ -x "$DAEMON" ] || exit 0
# Read configuration variable file if it is present
[ -r /etc/default/$NAME ] && . /etc/default/$NAME
# Load the VERBOSE setting and other rcS variables
. /lib/init/vars.sh
# Define LSB log_* functions.
# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.

Damos permiso de ejecución al script:
chmod + x /etc/init.d/php-fastcgi

Realizaremos un enlace de este script en los directorios en los siguientes directorios:
ln -s /etc/init.d/php-fastcgi /etc/rc2.d
ln -s /etc/init.d/php-fastcgi /etc/rc3.d
ln -s /etc/init.d/php-fastcgi /etc/rc4.d
ln -s /etc/init.d/php-fastcgi /etc/rc5.d

4- Configuramos NGINX:

Por último debemos configurar nginx para que pueda servir los ficheros php por medio de FastCGI. Para hacer esto entramos en el fichero /etc/nginx/sitesavailable/ default añadimos lo siguiente:
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/$fastcgi_script_name;
include fastcgi_params;
} 
Vemos que el servidor está escuchando por el puerto 9000:
netstat -putan | grep 9000
tcp        0          0   127.0.0.1:9000             0.0.0.0:*                LISTEN 4881/php5-cgi
5- Despliegue de Joomla

Ahora nos disponemos a desplegar Joomla en el directorio /var/www


Para ello lo movemos a dicho directorio y lo descomprimimos:
mv /home/usuario/Escritorio/Joomla_1.5.9-Stable-Full_Package.zip /var/www/
cd /var/www
unzip Joomla_1.5.9-Stable-Full_Package.zip
Ahora nos vamos a nuestro navegador y accedemos a localhost y nos aparece la pantalla de instalación de Joomla:



Seguimos los pasos de instalación especificando nuestro servidor MySQL y sus credenciales.

Una vez terminada la instalación ya tenemos Joomla corriendo sobre NGINX:


Un saludo!!

No hay comentarios:

Publicar un comentario