Posts from November 2008

Configuración de PHP 5 en Nginx (Nginx III)

20 November, 2008 | Comentarios (0)

Continuamos con el periplo de configurar Nginx siguiente con las dos anteriores entradas.
Ahora lo que trataremos es de ejecutar nuestras apps o scripts escritos en PHP 5. Let’s go.

Instalación de PHP

La instalación de PHP no tiene mucha ciencia en GNU/Linux:
$ sudo apt-get install php5-cli php5-cgi php5-mysql
$ php -v
PHP 5.2.0-8+etch9 (cli) (built: Dec 29 2007 14:49:25)
Copyright (c) 1997-2006 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2006 Zend Technologies

Instalación de FastCGI

Ya que nginx no cuenta con módulo integrado de php, precisamente porque no encuadra en su arquitectura, la ejecución del código PHP lo vamos a hacer a través de FastCGI. Para eso  utilizaremos la implementación que viene con lighttpd. Básicamente lo que haremos será compilar lighttpd, para luego copiar simplemente el spawn-fcgi
wget http://www.lighttpd.net/download/lighttpd-1.4.18.tar.gz
gunzip lighttpd-1.4.18.tar.gz
tar xvf lighttpd-1.4.18.tar
cd lighttpd-1.4.18/
./configure
make
sudo cp src/spawn-fcgi /usr/bin/spawn-fcgi

Ahora tendremos que crear un ejecutable:

  1. <code>#!/bin/sh
  2. /usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -u www-data -f /usr/bin/php5-cgi
  3. </code>

Y su script de control

  1. #!/bin/bash
  2. PHP_SCRIPT=/usr/bin/php-fastcgi
  3. RETVAL=0
  4. case "$1" in
  5.     start)
  6.       $PHP_SCRIPT
  7.       RETVAL=$?
  8.   ;;
  9.     stop)
  10.       killall -9 php5-cgi
  11.       RETVAL=$?
  12.   ;;
  13.     restart)
  14.       killall -9 php5-cgi
  15.       $PHP_SCRIPT
  16.       RETVAL=$?
  17.   ;;
  18.     *)
  19.       echo "Usage: php-fastcgi {start|stop|restart}"
  20.       exit 1
  21.   ;;
  22. esac
  23. exit $RETVAL

al que arreglamos sus permisos y lo hacemos ejecutar al inicio del sistema:
sudo chmod 755 /etc/init.d/php-fastcgi
sudo chmod 755 /usr/bin/php-fastcgi
sudo /usr/sbin/update-rc.d -f php-fastcgi defaults

y escribir una serie de parámetros que necesita el spawn para hacer que todo funcione correcto en la comunicación con nginx insertando el siguiente bloque de configuración en

  1. /etc/nginx/fastcgi.conf
  1. fastcgi_param  QUERY_STRING       $query_string;
  2. fastcgi_param  REQUEST_METHOD     $request_method;
  3. fastcgi_param  CONTENT_TYPE       $content_type;
  4. fastcgi_param  CONTENT_LENGTH     $content_length;
  5.  
  6. fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
  7. fastcgi_param  REQUEST_URI        $request_uri;
  8. fastcgi_param  DOCUMENT_URI       $document_uri;
  9. fastcgi_param  DOCUMENT_ROOT      $document_root;
  10. fastcgi_param  SERVER_PROTOCOL    $server_protocol;
  11.  
  12. fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
  13. fastcgi_param  SERVER_SOFTWARE    nginx;
  14.  
  15. fastcgi_param  REMOTE_ADDR        $remote_addr;
  16. fastcgi_param  REMOTE_PORT        $remote_port;
  17. fastcgi_param  SERVER_ADDR        $server_addr;
  18. fastcgi_param  SERVER_PORT        $server_port;
  19. fastcgi_param  SERVER_NAME        $server_name;
  20.  
  21. # PHP only, required if PHP was built with –enable-force-cgi-redirect
  22. fastcgi_param  REDIRECT_STATUS    200;

bastaría añadir la configuración a nuestro virtual host para tener soporte por fin y finalmente de php

  1. location ~ \.php$ {
  2.   fastcgi_pass   127.0.0.1:9000;
  3.   fastcgi_index  index.php;
  4.   fastcgi_param  SCRIPT_FILENAME  /var/www/blog.codefront.net$fastcgi_script_name;
  5.   include        /etc/nginx/fastcgi.conf;
  6. }

Espero os haya sido productivo.

Archivado en... General URI





: