Archivo de la etiqueta: PHP

Instalar servidor web nginx y PHP en la Raspberry Pi

Hola a todos!!

Este es el primer post tras la vuelta, que como podéis ver trae un nuevo diseño para el blog, con novedades como:

  • Una interfaz muchísimo más limpia.
  • Los colores de la web son totalmente diferentes.
  • Ahora, en la página principal, aparecen los últimos posts en 2 columnas y al final de la página, hay un botón Ajax para que aparezcan más posts.
  • La página del post se centra en su contenido.
  • Disqus para la gestión de comentarios.
  • Nuevo template para las etiquetas de código fuente y comandos de terminal.
  • Y un largo etcétera… 😀

El hosting utilizado actualmente es 3owl.com, que recomiendo que observéis sus características ya que son increíbles para lo que vale (gratis :)).

Vamos allá con el tutorial.

¿Quién no conoce el ordenador del tamaño de una tarjeta de crédito por 25$? La Raspberry Pi no sólo gracias a sus prestaciones, sino también por su pequeño tamaño y la comunidad que posee (y su SO, Linux). RPi se diseñó para ser utilizado en colegios e institutos en los que se estudie Programación, pero ahora, sean pequeños o mayores, todos quieren una.

Hace poco yo también recibí una, por lo que lo primero que haremos, tras cargar Raspbian en una SD y configurar la RPi, será instalar un servidor web, con soporte para PHP. El servidor elegido es nginx, que por ser liviano y no necesita demasiados recursos, es el candidato perfecto para nuestra RPi. El SO utilizado es Raspbian «wheezy». Empecemos.

1) Primero, instalaremos los paquetes necesarios. Utilizaremos la terminal, ya sea directamente desde la RPi, utilizando el sistema de ventanas (ejecutando startx) o desde un cliente SSH.

$ sudo apt-get install nginx php5-fpm php5-cgi php5-cli php5-common

Esto durará algún tiempo, ya que aquí se descarga todo lo que necesitamos. Recuerda que tu RPi debe estar conectada a Internet, ya sea a través de la conexión Ethernet o con un adaptador USB Wi-Fi.

2) Crearemos el usuario y grupo www-data, utilizado por nginx. Los siguientes comandos comprueban si ya los tienes creados, y si no, los crean. Ejecutamos:

$ sudo useradd www-data
$ sudo groupadd www-data
$ sudo usermod -g www-data www-data

3) A continuación, crearemos la carpeta www dentro de /var , que será la que visualice nginx y en la que debemos colocar nuestros archivos. Asignaremos esa carpeta al usuario y grupo anteriormente creados.

$ sudo mkdir /var/www
$ sudo chmod 775 /var/www -R
$ sudo chown www-data:www-data /var/www

4) Pasemos ahora al tema configuraciones :D. Abrimos el siguiente archivo utilizando nano.

$ sudo nano /etc/nginx/sites-enabled/default

Excepto si estás utilizando IPV6 (no es lo normal por ahora, pero pronto lo será), comentaremos la siguiente línea (puede aparecer de una de las siguientes 2 formas),…

listen [::]:80 default_server ipv6only=on;
listen[::]:80 default ipv6only=on

,… añadiendo una # al comienzo de esa línea, quedando así (dependiendo de cómo aparezca esa línea en tu archivo de configuración):

# listen [::]:80 default_server ipv6only=on;
# listen[::]:80 default ipv6only=on

Guardamos el archivo (Ctrl + O) y cerramos nano (Ctrl + X).

5) Necesitamos configurar otro archivo que nos permitirá que nginx pueda leer correctamente los archivos PHP. Abrimos con nano:

sudo nano /etc/nginx/sites-enabled/default

Y editamos lo que se llamaría Server Block en nginx, VirtualHost en Apache.

server {
# Replace this port with the right one for your requirements
listen 80 default; #could also be 1.2.3.4:80

# Multiple hostnames separated by spaces. Replace these as well.
server_name example.com; # change example.com with your domain

root /var/www; #point it to your own directory if different

error_page 404 errors/404.html;
access_log logs/example.com.access.log;

index index.php index.html index.htm;

# static file 404’s aren’t logged and expires header is set to maximum age
location ~* .(jpg|jpeg|gif|css|png|js|ico|html)$ {
access_log off;
expires max;
}

location ~ .php$ {
include fastcgi_params;
fastcgi_intercept_errors on;
fastcgi_pass 127.0.0.1:9000;
}

location ~ /.ht {
deny all;
}
}

Con este bloque de código, nos será suficiente, pero los usuarios más avanzados deberán ajustarlo a sus necesidades. Puedes ver más ejemplos de Server Blocks en la documentación de nginx.

6) Un último cambio y terminamos :D. Abrimos:

$ sudo nano /etc/php5/fpm/pool.d/www.conf

Modificamos la siguiente línea:

listen = /var/run/php5-fpm.sock

Por ésta:

listen = 127.0.0.1:9000

7) ¿A que no ha sido tan difícil? Recuerda estos comandos, porque deberás ejecutarlos ahora para poder iniciar el servidor nginx y PHP, y además cuando te sea necesario iniciarlo en cualquier momento.

$ sudo service php5-fpm restart
 $ sudo service nginx restart

Estos comandos son servicios, y aparte de ésta (reiniciar PHP y nginx) tienen muchas opciones más. Prueba a descubrirlas realizando esto en tu terminal. Tras escribir [cci_bash]sudo service nginx[/cci_bash], es decir, antes de escribir qué acción quieres realizar, pulsa la tecla de tabulador (Tab). Aparecerán todas las opciones disponibles: start, stop, restart, etc..; elige la que necesites.

Hasta aquí el tutorial de hoy. Antes, recordar la fuente de este tutorial. Más bien las fuentes, porque hay una mezcla de muchos enlaces de Internet. Se ha utilizado información de esta web: Nginx + PHP5 on Raspberry Pi (Debian Wheezy) – Rasberry Pi Beginner (lo de que falte una p se lo decís al autor del tumblr :P). Del blog de José Carlos Andreu, se ha utilizado información de 2 de sus posts en inglés: How to install a webserver (nginx) on a RaspberryPi y Install PHP in a RaspberryPi along with nginx. Gracias a los 2 :D.