Hace un tiempo les hablé sobre esta serie de tutoriales, sobre cómo instalar y configurar un servidor para hosting de alta demanda. Este artículo tratará sobre instalar y configurar Nginx+PHP con SpawnFastCGI:
Spawn_FastCGI:
Esto se puede decir que es lo que une a Nginx con PHP, o sea, aún cuando tengan el paquete PHP5 instalado si no tienen instalado y ejecutado Spawn_FastCGI cuando abran algún sitio en PHP el navegador les descargará el archivo, no les mostrará nada que el .php tenga programado pues el servidor no sabe cómo procesar archivos .php, es por ello que se hace imprescindible instalar y configurar Spawn_FastCGI.
Si usáramos Apache sería algo tan simple como instalar el paquete libapache2-mod-php5 pero como usamos Nginx deberemos instalar el paquete spawn-fcgi en su lugar. Además, en el tutorial les explicaré cómo crear un script de inicio del mismo en /etc/init.d/ para que puedan controlarlo con más comodidad.
1. Instalación:
Empezaremos por lo primero, instalar Spawn-FastCGI y PHP desde nuestros respositorios.
Todos los comandos que se ejecutarán son ejecutados con permisos de root, bien poniendo sudo al inicio de cada línea o bien estando loggeados como root
Si en tu servidor usas una distribución como Debian, Ubuntu o algún derivado en la terminal debes poner lo siguiente y presionar Enter :
aptitude install spawn-fcgi php5-cgi php5-curl
aptitude no viene instalado por defecto en Ubuntu, sin embargo recomiendo que lo instalen y usen en vez de apt-get, pues aptitude hace una mejor gestión de las dependencias en determinadas ocasiones
En lo personal no recomiendo ningún derivado de Debian, ni siquiera Ubuntu para servidores, a lo largo de los años mis experiencias no han del todo satisfactorias. Mi primera opción para sistema operativo de servidores es Debian, luego pensaría en CentOS, por último en algún BSD
2. Configuración:
En el paso anterior (cuando instalamos Nginx) descargamos un archivo llamado nginx-spawn-fastcgi.tar.gz que al descomprimirlo nos creó la carpeta nginx-spawn-fastcgi en nuestro home, copiaremos de ella el archivo spawn-fastcgi hacia /etc/init.d/ :
cp ~/nginx-spawn-fastcgi/spawn-fastcgi /etc/init.d/
Además, necesitamos el ejecutable de php-fastcgi en /usr/bin/
cp ~/nginx-spawn-fastcgi/php-fastcgi /usr/bin/
Perfecto, ya tenemos listo el archivo que nos permitirá controlar a spawn-fastcgi y además el ejecutable de php-fastcgi, ahora vamos a iniciar spawn-fastcgi:
/etc/init.d/spawn-fastcgi start
Nos mostrará algo como: spawn-fcgi: child spawned successfully: PID: 3739
Ahora vamos a reemplazar nuestro archivo /etc/nginx/sites-available/mywebsite.net por ~/nginx-spawn-fastcgi/mywebsite_plus_php.net
cp ~/nginx-spawn-fastcgi/mywebsite_plus_php.net /etc/nginx/sites-available/mywebsite.net
¿Por qué? Simple, porque nuestro anterior archivo mywebsite.net no tiene soporte para PHP, o sea, es Nginx solamente, mientras que el archivo mywebsite_plus_php.net sí tiene soporte para PHP, o sea, Nginx+PHP usando SpawnFastCGI.
Las diferencias entre estos archivos son varias, por ejemplo:
El archivo mywebsite_plus_php.net es un vhost que nos sirve de ejemplo, o sea y dicho de otra forma, debemos modificarlo y establecer nuestras configuraciones.
Debemos cambiar lo siguiente:
Listo, ahora reiniciaremos Nginx:
/etc/init.d/nginx restart
Para comprobar que nuestro Nginx procesa adecuadamente PHP copiemos el archivo phptest.php hacia la carpeta hosteada, o sea, la que indicamos en la línea No.6 del archivo mywebsite_plus_php.net (por ejemplo, root /var/www/), suponiendo que tengan el sitio hosteado directamente en /var/www/ sería:
cp ~/nginx-spawn-fastcgi/phptest.php /var/www/
Suponiendo que en la línea 5 de nuestro mywebsite_plus_php.net (o sea, la línea de server_name) hayamos dicho que nuestro sitio es www.misitio.net entonces debemos acceder a www.misitio.net/phptest.php . O sea, la idea es acceder al archivo phptest.php desde nuestro navegador y si nos aparece lo siguiente entonces nuestro Nginx se enlazó perfectamente con PHP:
En caso de que no les aparezca esto, o sea, que el navegador les intente descargar el archivo .php … esto significa que algo hicieron mal, que no reemplazaron bien el /etc/nginx/sites-available/mywebsite.net con ~/nginx-spawn-fastcgi/mywebsite_plus_php.net … que se les olvidó reiniciar Nginx con /etc/init.d/nginx restart o bien que se les olvidó iniciar Spawn-FastCGI con /etc/init.d/spawn-fastcgi start
Hasta aquí el tutorial para enlazar Nginx con PHP usando SpawnFastCGI, ya solamente nos falta MySQL y APC
Espero les esté resultando interesante esto.
Continúar leyendo...
Spawn_FastCGI:
Esto se puede decir que es lo que une a Nginx con PHP, o sea, aún cuando tengan el paquete PHP5 instalado si no tienen instalado y ejecutado Spawn_FastCGI cuando abran algún sitio en PHP el navegador les descargará el archivo, no les mostrará nada que el .php tenga programado pues el servidor no sabe cómo procesar archivos .php, es por ello que se hace imprescindible instalar y configurar Spawn_FastCGI.
Si usáramos Apache sería algo tan simple como instalar el paquete libapache2-mod-php5 pero como usamos Nginx deberemos instalar el paquete spawn-fcgi en su lugar. Además, en el tutorial les explicaré cómo crear un script de inicio del mismo en /etc/init.d/ para que puedan controlarlo con más comodidad.
1. Instalación:
Empezaremos por lo primero, instalar Spawn-FastCGI y PHP desde nuestros respositorios.
Todos los comandos que se ejecutarán son ejecutados con permisos de root, bien poniendo sudo al inicio de cada línea o bien estando loggeados como root
Si en tu servidor usas una distribución como Debian, Ubuntu o algún derivado en la terminal debes poner lo siguiente y presionar Enter :
aptitude install spawn-fcgi php5-cgi php5-curl
aptitude no viene instalado por defecto en Ubuntu, sin embargo recomiendo que lo instalen y usen en vez de apt-get, pues aptitude hace una mejor gestión de las dependencias en determinadas ocasiones
En lo personal no recomiendo ningún derivado de Debian, ni siquiera Ubuntu para servidores, a lo largo de los años mis experiencias no han del todo satisfactorias. Mi primera opción para sistema operativo de servidores es Debian, luego pensaría en CentOS, por último en algún BSD
2. Configuración:
En el paso anterior (cuando instalamos Nginx) descargamos un archivo llamado nginx-spawn-fastcgi.tar.gz que al descomprimirlo nos creó la carpeta nginx-spawn-fastcgi en nuestro home, copiaremos de ella el archivo spawn-fastcgi hacia /etc/init.d/ :
cp ~/nginx-spawn-fastcgi/spawn-fastcgi /etc/init.d/
Además, necesitamos el ejecutable de php-fastcgi en /usr/bin/
cp ~/nginx-spawn-fastcgi/php-fastcgi /usr/bin/
Perfecto, ya tenemos listo el archivo que nos permitirá controlar a spawn-fastcgi y además el ejecutable de php-fastcgi, ahora vamos a iniciar spawn-fastcgi:
/etc/init.d/spawn-fastcgi start
Nos mostrará algo como: spawn-fcgi: child spawned successfully: PID: 3739
Ahora vamos a reemplazar nuestro archivo /etc/nginx/sites-available/mywebsite.net por ~/nginx-spawn-fastcgi/mywebsite_plus_php.net
cp ~/nginx-spawn-fastcgi/mywebsite_plus_php.net /etc/nginx/sites-available/mywebsite.net
¿Por qué? Simple, porque nuestro anterior archivo mywebsite.net no tiene soporte para PHP, o sea, es Nginx solamente, mientras que el archivo mywebsite_plus_php.net sí tiene soporte para PHP, o sea, Nginx+PHP usando SpawnFastCGI.
Las diferencias entre estos archivos son varias, por ejemplo:
- En la línea 3 al archivo que soporta PHP se le agrega index.php
- Una nueva línea bajo la No.3 que contiene: fastcgi_index index.php;
- Varias otras líneas nuevas que le indican a Nginx cómo procesar PHP.
- ….. en fin, les dejo acá una foto que les ayudará a conocer las diferencias entre ambos archivos:
El archivo mywebsite_plus_php.net es un vhost que nos sirve de ejemplo, o sea y dicho de otra forma, debemos modificarlo y establecer nuestras configuraciones.
Debemos cambiar lo siguiente:
- access_log (línea 3): Esta será la ruta del archivo de log de acceso a este sitio
- error_log (línea 4): Esta será la ruta del archivo de log de errores a este sitio
- server_name (línea 5): La URL, dominio que está hosteado en esa carpeta, por ejemplo, si se tratase del foro de DesdeLinux sería: server_name foro.desdelinux.net
- root (línea 6): La ruta a la carpeta donde están los archivos html, esto dejémoslo en /var/www/ pues solo será una prueba
Listo, ahora reiniciaremos Nginx:
/etc/init.d/nginx restart
Para comprobar que nuestro Nginx procesa adecuadamente PHP copiemos el archivo phptest.php hacia la carpeta hosteada, o sea, la que indicamos en la línea No.6 del archivo mywebsite_plus_php.net (por ejemplo, root /var/www/), suponiendo que tengan el sitio hosteado directamente en /var/www/ sería:
cp ~/nginx-spawn-fastcgi/phptest.php /var/www/
Suponiendo que en la línea 5 de nuestro mywebsite_plus_php.net (o sea, la línea de server_name) hayamos dicho que nuestro sitio es www.misitio.net entonces debemos acceder a www.misitio.net/phptest.php . O sea, la idea es acceder al archivo phptest.php desde nuestro navegador y si nos aparece lo siguiente entonces nuestro Nginx se enlazó perfectamente con PHP:
En caso de que no les aparezca esto, o sea, que el navegador les intente descargar el archivo .php … esto significa que algo hicieron mal, que no reemplazaron bien el /etc/nginx/sites-available/mywebsite.net con ~/nginx-spawn-fastcgi/mywebsite_plus_php.net … que se les olvidó reiniciar Nginx con /etc/init.d/nginx restart o bien que se les olvidó iniciar Spawn-FastCGI con /etc/init.d/spawn-fastcgi start
Hasta aquí el tutorial para enlazar Nginx con PHP usando SpawnFastCGI, ya solamente nos falta MySQL y APC
Espero les esté resultando interesante esto.
Continúar leyendo...