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.
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
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.
11 comentarios, deja el tuyo
Si es cuarta parte porque la imagen dice 3? comenzó en 0 supongo? excelente post.
Saludos
1ra: Presentación
2da: Nginx
3ra: Nginx+PHP (Spawn_FastCGI)
🙂
Gracias por leernos ^_^
que paso con la 4 parte???
y con los subsecuentes?????
Hola:
Sería una mejor elección si en vez de mysql, utilizaras MariaDB, como debes saber este último es un fork del primero, y ya se habla de que será el Mysql del futuro (http://www.genbetadev.com/bases-de-datos/mariadb-sera-el-mysql-del-futuro) pues Mysql es libre, hasta cierto punto.
SkySQL, una empresa que presta servicios a partir de bases de datos libres, apoyó económicamente al proyecto MariaDB (http://www.genbetadev.com/bases-de-datos/mariadb-y-skysql-unen-fuerzas-para-llevar-a-mariadb-a-lo-mas-alto) y Google que quiere dejar de depender de Mysql, como también hizo Wikipedia, y hará la transición desde MySQL 5.1 a MariaDB 10.0 con la ayuda, precisamente, de SkySQL, que son ya expertos en esta materia.
Salu2.
Hola,
Sí claro, conozco MariaDB y de hecho, hemos hablado ya al respecto: https://blog.desdelinux.net/tag/mariadb/
No obstante, ahora mismo estoy usando MySQL pues estos tutoriales los hago desde la experiencia particular que tuve al migrar DesdeLinux (con todos sus servicios) hacia otros servidores, en ese momento cambiamos la tecnología completamente y las tareas o cambios que tuve que afrontar no fueron pocos.
Lee este comentario mío de ese momento: https://blog.desdelinux.net/el-blog-desdelinux-abandona-hostgator-y-pasa-a-gnutransfer/comment-page-1/#comment-81291
La idea final es sí en efecto, migrar a MariaDB, pero no he tenido tiempo para hacer las pruebas pertinentes 🙂
Gracias por leernos
Este tutorial me va a servir para instalar zPanel X con NGINX para no saturar mi site a la hora de migrar al VPS de GNUPanel.
El regalo de navidad? Lo esperaba con ansias felicidades a todos.
Gracias socio 😀
Agregado a favoritos!
Por cierto, tengo esta duda e interrogante, en verdad Nginx tiene mas performance que Apache?
Saludos!
Bueno, Apache se puede optimizar mucho pero… hasta ahora, busca en Google y casi todos coincidimos que Nginx consume mucho menos RAM, tiene un rendimiento nada despreciable, aunque no es del todo tan simple a la hora de configurar.
Buenas KZKG^Gaara excelente información para los que nos interesa este mundillo, una pregunta, para cuando el 4to post 😀