Tag Archives: wordpress

Usando el servidor web nginx

Recientemente cambié el hosting del sitio web de un shared hosting a un VPS. La verdad no tenía intensiones de pagar una alta suma de dinero, lo que significa que la opción de VPS debía tener una cantidad relativamente baja de RAM, en mi caso 512Mb que aunque suene poco con los costos actuales de los módulos de memoria, es suficiente para mantener funcionando un servidor web, con su respectiva base de datos y algunos servicios adicionales. Si usas LAMP los procesos que consumen más memoria son mysql y apache2. Adicionalmente apache utiliza MPM prefork para php. Prefork es la mejor solución para aislar cada petición que se realiza al servidor web brindando más estabilidad. Pero al mismo tiempo, al crearse una copia del proceso padre se duplica el uso de memoria y es común que se usen varios procesos hijos precargados para mejorar la respuesta del servidor. Esto me conduce al propósito de este artículo…

Migrando apache al servidor web nginx

El VPS corre Ubuntu Server por lo que el proceso de configuración aplica para Ubuntu.

Instalar nginx

La instalación es tan sencilla como ejecutar el siguiente comando

sudo apt-get install nginx

Nginx y php

Para que funcione con php necesitamos una interfaz FastCGI, para esto instalamos php5 FPM server. En apache, mod_php maneja las peticiones de php, lo que hace esencialmente es cargar todo php y las bibliotecas requeridas por cada petición de alguna página php. PHP-FPM funciona como un servidor web de php y se mantiene corriendo permanentemente por lo que no se recarga con cada petición.

sudo apt-get install php5-fpm

Por defecto, PHP-FPM está configurado para usar sockets TCP en lugar de sockets UNIX, para obtener mejores resultados es preferible utilizarlo con socket UNIX. Esto se hace editando el archivo /etc/php5/fpm/pool.d/www.conf

Se incluyen algunas otras variaciones a la configuración ya que para utilizar sockets UNIX basta con la primera línea.

listen = /var/run/php5-fpm.sock
listen.allowed_clients = 127.0.0.1
listen.owner = www-data
listen.group = www-data
listen.mode = 0660
user = www-data
group = www-data
pm = static
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
pm.max_requests = 500

Luego en el archivo de configuración de nginx que se encuentra en /etc/nginx/nginx.conf agregamos dentro de la sección http lo siguiente

upstream php {
        	server unix:/var/run/php5-fpm.sock;
	}

Reiniciar servicios PHP-FPM Y NGINX

Para hacer efectivos los cambios en la configuración se reinician los servicios modificados

sudo service php5-fpm restart
sudo service nginx restart

Es probable que debas detener apache porque ambos servidores trataran de usar el puerto 80.

Hecho esto solo queda probar la configuración. Esto lo hacemos utilizando alguna otra aplicación web que tengamos corriendo con apache o cualquier sitio que requiera apache y php. Lo vamos a probar configurando un host virtual con wordpress.

Configuración de servidor virtual nginx para wordpress

En nginx es posible hacer esto de manera similar a apache, hay un directorio sites-available para los sitios disponibles y otro llamado sites-enabled para los habilitados. Se puede crear entonces un archivo en /etc/nginx/sites-available/wordpress que contendrá la configuración necesaria.

server {
        ## Your website name goes here.
        server_name localhost;
        ## Your only path reference.
        root /var/www/wordpress;
        ## This should be in your http block and if it is, it's not needed here.
        index index.php;
 
	access_log /var/www/wordpress/access.log;
	error_log /var/www/wordpress/error.log;
 
        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. 
                # include the "?$args" part so non-default permalinks doesn't break when using query string
                try_files $uri $uri/ /index.php?$args;
        }
 
        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;
        }
}

Algunas lineas se explican por si mismas pero vamos a analizar las mas relevantes

server_name

Es la forma de definir servidores virtuales, de esta manera el mismo servidor nginx puede albergar múltiples dominios. Indicamos un nombre estático, un dominio dominio.com o un subdominio sitio.dominio.com

root

La ruta en el directorio de archivos donde se encuentra el sitio

access_log y error_log

Nginx mantiene archivos de bitácora para accesos y para errores. Por defecto, en la dirección /var/log/nginx encuentras las bitácoras de todo el servidor, lo que quiere decir que guarda accesos y errores de cada sitio virtual. Agregando esas directrices en la configuración del sitio virtual del ejemplo se logra que el servidor guarde archivos separados de bitácora para este sitio en la dirección que se especifique.

location

Location aparece varias veces y esto es porque permite distintas configuraciones basado en el URI. Pueden ser strings literales o expresiones regulares. En el ejemplo se usa para cosas como evitar agregar a bitácoras las peticiones del favicon.ico, indicar cuando expiran los archivos estáticos y como deben manejarse los archivos de php.

Al final del proceso contamos con un servidor web nginx configurado para usar php5-fpm que a su vez funciona con sockets UNIX para un mejor rendimiento y una reducción en el uso de memoria RAM de nuestro servidor.

Referencias

Personalizar themes de wordpress

Es posible crear tus propios temas de wordpress para utilizarlos en tu sitio web. Sin embargo no es necesario empezar desde cero. Uno pensaría que la forma más sencilla es tomar un tema ya existente y editarlo, pero esto tiene una serie de inconvenientes como perder las futuras mejoras que se le hagan al tema por parte de su autor original.

El sistema de temas de wordpress permite crear temas derivados llamados child themes. Estos heredan las funcionalidades de otro tema que se le conoce como parent theme. Esta es la forma apropiada de modificar un tema ya existente o utilizar el tema principal como framework para nuestro tema.

Crear el child theme

Lo esencial para que wordpress reconozca tu tema es crear una nueva carpeta en el directorio de temas que se encuentra en wp-content/themes que contenga un archivo style.css con el siguiente encabezado

/*
Theme Name: Mi tema
Template: twentyeleven
*/

El atributo template es que el que nos interesa, es acá donde le indicamos cual es el parent theme.

Hecho esto deberías ver en el dashboard de wordpress en la sección Apariencia->Temas nuestro nuevo tema.Temas disponiblesSi lo utilizamos así tal cual veremos el sitio sin ningún estilo porque nuestro style.css está vació, sin embargo, si revisamos el código generado veremos que hay una gran estructura de html válido, con muchas clases para modificar y que además utiliza las distintas funciones del tema padre, en nuestro ejemplo Twenty Eleven.

En este punto contamos con un tema en blanco completamente funcional.

Importar el estilo del parent theme

Cuando elegimos el parent de nuestro nuevo tema es porque probablemente hay cierta tendencia de diseño o porque las modificaciones que queremos hacer son menores. Resulta muy útil entonces aplicar el estilo del tema padre. Para esto agregamos una línea adicional al style.css

/*
Theme Name: Mi tema
Template: twentyeleven
*/
@import url(../twentyeleven/style.css);

El @import nos incluye el estilo. Con esto si miramos nuestro sitio utilizando el tema que hemos creado se verá igual como si utilizaramos el parent theme.

Lo que tenemos ahora es la estructura para modificar el parent theme de manera segura, sin editar los archivos originales y sin perder las futuras mejores que el parent theme reciba.

Modificar el tema con nuestros propios cambios

Muy sencillo, solo debes sobreescribir las propiedades. Lo mejor para esto es inspeccionar el código utilizando firebug (si usas firefox) o el inspect de tu navegador. Si deseas modificar los encabezados buscamos las clases del css y en nuestro style.css hacemos los cambios.

pantallazo inspeccionar htmlSi quisiéramos modificar el color del h2 tendríamos en nuestro style.css lo siguiente

/*
Theme Name: Mi tema
Template: twentyeleven
*/
@import url(../twentyeleven/style.css);

.entry-title, .entry-title a {
    color: #2222aa;
    text-decoration: none;
}

De esta forma vamos variando las propiedades del css que nos interesa. Si queremos variar elementos en el html lo que hacemos es copiar el archivo correspondiente del tema padre a la carpeta de nuestro tema y lo modificamos acá. Así podemos tener nuestra propia versión de footer.php o del header.php.

Es realmente sencillo y muy elegante de desarrollar.

WordPress plugin – Hola mundo

Un plugin de wordpress te permite personalizar tu sitio web y aumentar las funcionalidades.

Los plugins se localizan en el directorio wp-content/plugins/ y pueden estar en único archivo *.php o en varios archivos. Los plugins que requieren de más de un archivo se incluyen en una carpeta dentro del directorio.

Debes asegurarte de escoger un nombre único para tu plugin porque ese archivo o directorio debe tener ese nombre por lo que no pueden existir dos iguales.

Vamos a crear un archivo llamado first_wp_plugin.php que contendrá lo siguiente: Continue reading WordPress plugin – Hola mundo

Como crear tu propio blog

Un blog es una excelente herramienta para opinar, compartir tus aficiones con los demás, vender productos y servicios.
Tener tu propio blog es sencillo y completamente gratuito. Aunque con una pequeña inversión también puedes obtener resultados más profesionales.

¿Qué necesitas para esto?

Un tema

Algo sobre que escribir es indispensable. Si es un blog personal lo mejor es buscar en tus pasiones y es importante entender que no tienes que ser experto en el tema para hablar sobre él, se puede también escribir sobre el proceso de aprendizaje, donde obtener más información, entrevistar a otros que comprendan mejor el tema, las posibilidades son muchas.

Una cuenta en wordpress

WordPress es el principal gestor de contenidos para blogs que puedas encontrar en internet. Es gratis, es software libre, fácil de usar y puedes encontrar mucha ayuda sobre este.

Para efectos prácticos es un sitio web http://wordpress.com que te permite crear blogs de manera que puedas accesarlos como http://TUBLOG.wordpress.com

Su interfaz es amigable. Puedes personalizarlo escogiendo de los miles de plantillas (temas) con los que cuenta, también puedes comprar temas más profesionales en sitios como http://woothemes.com y hacer que tu blog sobresalga.

Pasión, pasión y pasión

Escribir sobre los temas que nos gustan es muy motivante y compartirlos con los demás recibiendo comentarios y apreciaciones lo es aún más.

Un blog te puede llevar por caminos inesperados brindándote la oportunidad de conocer a personas con aficiones comunes o interesadas en tus productos o servicios aprender de ellos y divertirte mientras lo llevas a cabo.