Wordpress

De HackLab
Saltar a: navegación, buscar


Es un sistema de gestión de contenido o CMS (por sus siglas en inglés, Content Management System) enfocado a la creación de blogs (sitios web periódicamente actualizados).

Lo que lo hace copado es que está bajo licencia GPL, es decir, garantiza la libertad de usar, estudiar, compartir (copiar) y modificar el software. Esto se traduce en una proliferación de posibilidades, lo que se ha llegado a llamar Modelo Bazar.

  • La estructura y diseño visual del sitio depende de un sistema de plantillas independiente del contenido, que pueden tener varias opciones de personalización dependiendo de su autor. Existen una infinitud de plantillas (themes) acá.
  • Hay un gran número de complementos que potencian el uso de WordPress más allá de un simple blog y que lo hacen un sistema flexible y prácticamente de propósito general.

Wordpress auto-hospedado

Cuando ingresás en http://wordpress.com, tenés la posibilidad de crear un blog que va a estar alojado en unos servidores proporcionados por Wordpress.

Tener un blog WordPress autohosteado tiene muchas ventajas: tenés control sobre tu código y así podés implementar cualquier tema, modificarla totalmente o crear la tuya propia. Puedes agregar el plugin que quieras y hackear el código.

Acá están las instrucciones para montar tu WordPress auto-hosteado.

Necesitas un host web que tenga PHP y MySQL. Para faciltar la instalación de Wordpress, asegúrate que tu web host tenga panel de control o algo parecido para autoinstalar el Wordpress. Si no, tendrás que instalar WP manualmente. Acá el manual.

Nota: cuando te conectes a tu host remoto, quizás tengas que entrar en "public_html" o la carpeta "www" para ver los archivos WP. Dichas carpetas simplemente se hacen espejo para enviar los mismos resultados que vería un usuario que entrara en tu blog WP.

La carpeta "wp-content" tiene 2 subcarpetas importantes: "plugins" y "themes". Cuando subes un plugin o tema en estas carpeta usando FTP, el plugin o tema están disponibles para su activación dentro del panel de administración de WP. También, todas las imágenes que subas escribiendo un post en WP se almacenan en la carpeta "wp-content/uplads".

Instalación manual de WordPress

Descarga el paquete WordPress de http://wordpress.org/download/. Crea una base de datos para WP en tu servidor web, un usuario MySQL con privilegios para acceder y modificar la base de datos. Sube los archivos WP en el lugar deseado de tu servidor web.

Nota: si quieres integrar WP en el root de tu dominio (ej. http://example.com/), sube todos los contenidos del directorio descomprimido de WP (excluyendo el directorio/carpeta en sí) en el directorio root de tu servidor web. Si quieres instalarlo en un subdirectorio (ej. http://example.com/blog), crea un directorio "blog", por ej, en tu servidor y sube los contenidos allá.

Creando una base de datos y usuario

Si estás usando un proveedor host, puede que ya tengas una base de datos WP preparado o puede haber una solución automática de setup. Mira en las páginas de soporte del proveedor de hosting o el panel de control para pistas.

Usando el panel de control
  1. Log en cPanel
  2. Cliquear sobre el icono MySQL Database Wizard en la sección Database
  3. Crear base de datos, nombrarlo
  4. Agregar usuario, asignar nombre de usuario y contraseña.
  5. Agregar usuario a base de datos y darle todos los privilegios marcando la casilla correspondiente
  6. Rellenar campos de "nombre de host", "nombre de usuario", "nombre de base de datos", "contraseña". Nota: generalmente el nombre de host es "localhost".
Usando phpMyAdmin

Nota: instrucciones para phpMyAdmin 2.6.0; el interfase puede variar ligeramente entre versiones.

   Escoger nombre para base de datos WP, introducir en campo "crear nueva base de datos", pulsar "crear"
   Cliquear el icono" Home" en la esquina superior izquierda para volver a la página principal, después cliquear sobre "privilegios". Si un usuario relacionado con WP no existe en la lista de usuarios se puede crear >agregar nuevo usuario y asignar todos los privilegios (all privileges).
Usando cliente MySQL

$ mysql -u adminusername -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.
mysql> CREATE DATABASE databasename;
Query OK, 1 row affected (0.00 sec)
mysql> GRANT ALL PRIVILEGES ON databasename.* TO "wordpressusername"@"hostname"
    -> IDENTIFIED BY "password";
Query OK, 0 rows affected (0.00 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)
mysql> EXIT

El ejemplo muestra:

que root es tambien el nombre de usuario de admin. Es una práctica más segura escoger una cuenta "mortal" como mysql admin para no introducir el comando "mysql" como usuario root en el sistema

Nota: los valores "nombre de base de datos, nombre de usuario WP, nombre de host, contraseña están en wp-config-php si tuviera que recurrir a ellas.

Iniciando wp-config.php

a) crear y editar el archivo "wp-config.php": ve a donde extrajiste el paquete de WP. Renombrar archivo "wp-config.sample.php" a "wp-config.php" y abrelo en un editor de texto. Introduce la info de tu base de datos en la sección // ** MySQL settings - You can get this info from your web host ** // b) dejar que WP lo intente hacer al arrancar el script de instalación (tendrás que darle a WP la info de tu base de datos)

Nota: para empezar a ver tu blog autohosteado en el servidor de tu compu inicia servidor.

Ejemplo con Apache:

   systemctl start httpd

Granja de Wordpress

Configuración de una granja de Wordpress. Una granja permite alojar múltiples blogs usando una sola instalación.

Requisitos

  • 1x Servidor Nginx con PHP
  • 1x Base de datos MySQL/MariaDB
  • 1x DNS, en lo posible que permita subdominios con wildcard (*.granjawp.org)
  • 1x Shell

Configuración de Nginx

La configuración de nginx, el servidor web con estética bolchevique, se encuentra en este repositorio git: nginx-hackcoop.git. Mirar especialmente los archivos:

Configuración de MySQL/MariaDB

Con el usuario root de `mysql`, crear la base de datos y el usuario:

   echo "create database granja;" | mysql -u root -p
   echo "grant all privileges on granja.* to 'granjero' identified by 'una contraseña copada';" | mysql -u root -p

Configuración de Wordpress

Clonar el repositorio git de Wordpress en el lugar donde se van a servir los archivos. Usar el repositorio ocupa más espacio pero nos permite actualizar en menos pasos y además nos permite saber si algún agente malicioso modificó un archivo :)

   cd /srv/http
   git clone https://github.com/WordPress/WordPress wp.hackcoop.com.ar

Hacer un checkout de la última versión:

   cd /srv/http/wp.hackcoop.com.ar
   git checkout 3.6.1

Visitar http://wp.hackcoop.com.ar y seguir los pasos de configuración.

Habilitar el multisitio/granja agregando al final de `wp-config.php`:

   /* Multisite */
   define('WP_ALLOW_MULTISITE', true);
   define('WPMU_ACCEL_REDIRECT', true);
   define('MULTISITE', true);
   define('SUBDOMAIN_INSTALL', true);
   define('DOMAIN_CURRENT_SITE', 'wp.hackcoop.com.ar');
   define('PATH_CURRENT_SITE', '/');
   define('SITE_ID_CURRENT_SITE', 1);
   define('BLOG_ID_CURRENT_SITE', 1);
   
   define('NOBLOGREDIRECT', 'http://hackcoop.com.ar/404.html');

Actualizar

   cd /srv/http/wp.hackcoop.com.ar
   git fetch --tags origin
   git checkout 3.6.2

Servir distintos dominios

En lugar de crear un blog en un subdominio, se mapea un dominio cualquiera a un blog del sitio. Es por eso que en la configuración de nginx el dominio de la granja es el dominio por defecto. Esto quiere decir que si nginx no conoce un dominio que se le está pidiendo, lo va a enviar a wordpress. Con el mapeo de dominios, se sirve el blog correcto!

   cd /srv/http/wp.hackcoop.com.ar/wp-content/plugins
   ln -s plugins/wordpress-mu-domain-mapping/sunrise.php .
  • Habilitarlo en wp-config.php
   define( 'SUNRISE', 'on' )

En el administrador de la red, crear un blog nuevo y cambiarle el subdominio al dominio que queremos, ejemplo: bibliomartedi.hackcoop.com.ar → bibliomartedi.com.ar.

En Ajustes > Domains, agregar el ID del blog y el dominio.

Seguridad

  • Correr el sitio con su propio usuario, forzando que todos los archivos estén dentro del grupo "http".
  cd /srv/http
  chown -R http:http .
  chmod -R g+s .
  • Quitar permisos de escritura para no dejar que algún exploit modifique los archivos.
   cd /srv/http/wp.hackcoop.com.ar
   find -type d -exec chmod 550 {} \;
   find -type f -exec chmod 440 {} \;
   find wp-content/uploads -type d -exec chmod 750 {} \;
   find wp-content/uploads -type f -exec chmod 640 {} \;

FAQ

¿Por qué `/srv/http` y no `/var/www`?

`/var/www` es una cosa que se inventó Debian y es muy feo. `/srv/http` es el estándar. Adaptá donde sea necesario y listo.

TODO

  • Script de autoactualización
  • Chequear cuáles son los permisos que verifica wordpress para permitir instalar plugins y temas desde la interfaz web, porque si se permite escritura en wp-content/{themes,plugins} todavía tira el FTP.


Cosas por hacer

  • Cómo instalar plantillas y plugins
  • Explicar algunos de los que usamos nosotros

ej. https://github.com/aelevadoan/guiajeowp#instalaci%C3%B3n-manual-de-wordpress

Referencias

Relacionados