Durante mi crisis con Google por el cierre de Google Reader uno de los primeros servicios que me decidí a migrar fue este blog. Anteriormente lo tenia alojado en Blogger, la plataforma de blogs de Google, pero durante la elección de CMS (Content Management System) para el blog se me pasaron varias opciones por la cabeza que fui descartando y me decidi por WordPress que es un CMS open source.
Ahora venía otra de las decisiones duras, el hosting, ¿donde voy a alojar mi blog? Buscas por internet y hay miles de opciones WordPress.com que da hosting gratuito con opciones de pago mediante el que se financia el desarrollo de su CMS. Hay otras opciones gratuitas con publicidad o con planes de pago, Hostgator, GoDaddy… pero no me acababa de convencer sus planes gratuitos y pagar por hosting no me llamaba mucho, así que pense que pasaria si me montara yo mi propio hosting.
En casa tengo disponibles dos dispositivos ideales para mantener un hosting de bajo coste, el primero es un Nas Synology 212j que viene con una opción para montarte un WordPress propio. Esta opción la descarte de primeras porque WordPress puede tener bugs de seguridad que puedan comprometer el contenido del Nas.
La otra opción es usar mi Raspberry Pi pero el problema de mantener la base de datos que necesita WordPress con todos los datos del blog en una tarjeta SD no me atraia mucho porque las tarjetas SD no son muy fiables, se pueden corromper celdas de memoria y cascar el sistema operativo, la bbdd o las tablas que contiene.
La mejor opción fue la combinación de ambos dispositivos, la bbdd en el Nas con MySQL+phpMyadmin y el WordPress sobre la Raspberry Pi con php y un servidor web. Como servidor web tenemos varias opciones, Apache, Nginx o Cherokee, yo en mi caso despues de probar con Apache y como no me convencian los resultados pase a usar Nginx.
Esta instalacion esta hecha sobre una imagen standard de Raspbian en una tarjeta de 8Gb clase 4.
En este enlace se puede ver como instalar una versión de Raspbian estandar.
Una vez tenemos instalado Raspbian instalamos los paquetes de nginx, php5 y MySQL
sudo apt-get update
sudo apt-get install nginx php5-fpm php5-cli php5-curl php5-gd php5-mcrypt php5-mysql php5-cgi mysql-server
Creamos el fichero de configuracion de nginx para nuestro site de WordPress
# Upstream to abstract backend connection(s) for php
upstream php {
server unix:/var/run/php5-fpm.sock;
}
server {
## Your only path reference.
root /srv/www/wordpress/public_html;
listen 80;
## Your website name goes here. Change to domain.ltd in VPS
server_name _;
access_log /srv/www/wordpress/logs/access.log;
error_log /srv/www/wordpress/logs/error.log;
## This should be in your http block and if it is, it’s not needed here.
index index.php;
location = /favicon.ico {
log_not_found off;
access_log off;
}
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
location / {
# This is cool because no php is touched for static content
try_files $uri $uri/ /index.php;
}
location ~ \.php$ {
#NOTE: You should have «cgi.fix_pathinfo = 0;» in php.ini
include fastcgi_params;
fastcgi_intercept_errors on;
fastcgi_pass php;
}
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
expires max;
log_not_found off;
}
}
Activamos el site con un enlace al fichero de configuracion que tenemos en sites-available en sites-enabled
sudo ln -s ../sites-available/wordpress ../sites-enabled/wordpress
sudo rm default
sudo rm ../sites-enabled/default
Seguidamente editamos el php.ini en /etc/php5/fpm/php.ini y modificamos la linea
cgi.fix_pathinfo = 0;
Arrancamos el servicio de Nginx con
sudo service nginx start
y al conectarnos a la ip de nuestra Raspberry Pi con el navegador veremos el mensaje de bienvenida del servidor web. Ahora ya tenemos funcionando el servidor web, así que nos toca bajar y configurar el software de WordPress
sudo mkdir -p /srv/www/wordpress/logs/
sudo mkdir -p /srv/www/wordpress/public_html
cd /srv/www/wordpress/public_html
sudo wget http://wordpress.org/latest.tar.gz
sudo tar xzvf latest.tar.gz
sudo mv wordpress/* .
Una vez copiado el software de WordPress seguimos las instrucciones para instalarlo. Como en mi caso el servidor de MySQL lo tengo en la Nas lo tengo configurado con php-myadmin. Pero con las siguientes instrucciones podremos configurar MySQL en la propia tarjeta de la Raspberry Pi.
$ mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 5340 to server version: 3.23.54
Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the buffer.
Creamos la BBDD para el blog
mysql> CREATE DATABASE wordpress;
Query OK, 1 row affected (0.00 sec)
Creamos el usuario para acceder a la BBDD
mysql> GRANT ALL PRIVILEGES ON wordpress.* TO «wordpress»@»localhost»IDENTIFIED BY «raspi»;
Query OK, 0 rows affected (0.00 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)
mysql> EXIT
Bye
En la ruta /srv/www/wordpress/public_html editamos la configuracion de WordPress:
sudo cp wp-config-sample.php wp-config.php
sudo edit wp-config.php
Configuramos el fichero con los datos de nuestro servidor MySQL, el nombre de la BBDD y las credenciales del usuario de acceso.
define(‘DB_NAME’, ‘wordpress’);
/** MySQL database username */
define(‘DB_USER’, ‘wordpress’);
/** MySQL database password */
define(‘DB_PASSWORD’, ‘raspi’);
Cambiamos los permisos del directorio y arrancamos el servidor web.
sudo chown www-data.www-data /srv/www/wordpress/public_html/ -R
sudo service nginx restart
sudo service php5-fpm restart
Accedemos a la ip de nuestra Raspberry Pi en la siguiente ruta y tendremos disponible nuestro WordPress.
Despues de varias pruebas no quede totalmente satisfecho con el comportamiento de la Raspberry con el blog, sobre todo con los plugins de WordPress que tardaban en cargar, como Twitter o Flickr.
Al final lo aloje en WordPress.com y añadi la opción de enlazar con mi dominio de http://www.lamilongadelmarinero.com por 12$ que ademas sirven para contribuir con el desarrollo del propio WordPress, pero para un blog sencillo con texto plano sin que sean necesarias muchas florituras usar una Raspberry Pi es una muy buena opción.
Hola buenas! , ya se que el post es un poco antiguo , pero te pregunto por si las moscas…. he seguido tu tutorial y tengo un pequeño problema , al iniciar el servicio de nginx , recibo lo siguiente:
Starting nginx: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: [emerg] open() «/srv/www/wordpress/logs/access.log» failed (2: No such file or directory)
nginx: configuration file /etc/nginx/nginx.conf test failed
Efectivamente el directorio srv , esta vacio , he probado a seguir todos los pasos 4 veces , usando una raspbian limpia , sin tocar….
Gracias de antemano! un saludo.
Hola Victor, no es normal que el directorio /srv este vacío, tendrías que tener una carpeta www, el error lo que te dice es que el nginx no esta encontrando el fichero access.log que es donde registra los logins de wordpress ¿Has hecho esto? Es para crear los directorios y copiar el codigo de wordpress.
sudo mkdir -p /srv/www/wordpress/logs/
sudo mkdir -p /srv/www/wordpress/public_html
cd /srv/www/wordpress/public_html
sudo wget http://wordpress.org/latest.tar.gz
sudo tar xzvf latest.tar.gz
sudo mv wordpress/* .
[…] https://lamilongadelmarinero.com/2013/03/29/monta-tu-propio-blog-con-wordpress-y-raspberry-pi/ […]
Muy buena info. Yo tengo el blog alojado en Digital Ocean que por 5 dólares tengo un espacio de trabajo (VPS) como si fuera una raspberry pi (512 de ram y 20GB de disco) pero lo bueno es que lo podés configurar para que ya venga preparado para usar WordPress bajo Ubuntu server entonces solo te dedicás a configurar y listo.