Wordpress
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.
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.
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
- Log en cPanel
- Cliquear sobre el icono MySQL Database Wizard en la sección Database
- Crear base de datos, nombrarlo
- Agregar usuario, asignar nombre de usuario y contraseña.
- Agregar usuario a base de datos y darle todos los privilegios marcando la casilla correspondiente
- 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
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)
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!
- Instalar WordPress MU Domain Mapping
- Linkear el archivo sunrise.php donde lo necesita el plugin:
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