WordPress en tu casa

Cuando se realiza una instalación de un wordpress y nosotros mismos somos nuestro proveedor de hosting, bien sea usando un equipo, máquina virtual o servidor NAS, es necesario tener en cuenta algunas pequeñas consideraciones.
Precisamos instalar un servidor web con extensiones php, un gestor de bases de datos y el propio paquete de WordPress. Para ello existen paquetes como LAMP e incluso en servidores Nas se automatiza todo ya que se instala el web station (por ejemplo en Synology) y el software de WP dentro de la zona de descargas.
En mi caso he decido utilizar un Nas de Synology pero realizando alguna tarea manual, para poder albergar más de un WordPress pero de manera independiente uno de otro, sin utilizar la capacidad multisitio, que sin duda tiene muchas ventajas pero también inconvenientes, ya que todos los sitios comparten la misma instalación.
He activado el Web Station (eligiendo apache como server) , he instalado un mysql, que en este caso es el desarrollo Mariadb, le he asignado una password al root y a continuación he creado una carpeta compartida en mi volumen llamada www, que si accedemos por terminal (ssh) estaría en /volumen1/www. (Si hay varios volúmenes, la ruta podría ser diferente, voumen2, volumen3…)
Como pretendo albergar varios WP, he configurado varios dominios en web station dentro de lo que Synology llama Host virtuales.
NOTA: Web station genera un acceso por defecto por el puerto 80 y sirve una web que está en /volumen1/web. Por una cuestión personal he preferido utilizar otro directorio para servir mis webs (/volumen1/www). Esa ruta mía particular se la indico en la creación del host virtual en web station, pero el directorio por defecto /volumen1/web es importante ya que en él tendremos que crear un archivo .htaccess con el siguiente contenido
RewriteEngine On
#primer dominio
RewriteCond %{HTTP_HOST} ^dominio1.es$ [NC]
RewriteRule ^(.*)$ http://www.dominio1.es/$1 [R,L]
#segundo dominio
RewriteCond %{HTTP_HOST} ^dominio2.com$ [NC]
RewriteRule ^(.*)$ http://www.dominio2.com/$1 [R,L]
# los sucesivos dominios irían aquí.
Todo esto para que cuando se introduzca la url de nuestra web sin las 3w, todo funcione sin problemas.
NOTA: Los host virtuales se han creado utilizando www.dominio1.es y www.dominio2.com, es decir, con el dominio de tercer nivel www.
A continuación en el directorio www creado para albergar mis webs, creo el directorio raiz de cada WP, por ejemplo:
/volume1/www/dominio1
/volume1/www/dominio2
NOTA: En cada host virtual le he indicado esta ruta para cada dominio, con la particularidad de que al estar dentro de la interface web de synology la ruta comienza a partir de la carpeta compartida, esto es:
www/dominio1
www/dominio2
En cada carpeta raiz descomprimo un WordPress (ya que nos hemos descargado un paquete ZIP). Pero antes de instalarlo tenenemos que crear una base de datos para cada web. Instalamos phpmyadmin que es una interface gráfica para poder gestionar mysql (MariaDB). Para acceder a ella utilizamos el icono correspondiente o la dirección http://direccion-del-nas/phpmyadmin. El usuario y la contraseña son los asignados en su creación (root).
Creamos una base de datos para cada WP del estilo:
wp_dominio1, es decir algo identificativo.
Creamos un usuario para cada base de datos dándole todos los permisos pero sólo para su base de datos, es decir:
para la BD wp_dominio1 creo wp_user_dominio1 y le doy permisos exclusivos.
La creación del usuario se hace en la sección de privilegios y es recomendable utilizar LOCAL en el campo «Nombre de host».
Por defecto vendrá marcada la opción de dar todos los privilegios a la BD recién creada y NO es recomendable darle privilegios fuera de ella con lo que NO se marcan más casillas.
A continuación instalamos WordPress.
Si todo ha ido bien al introducir nuestro dominio en la barra de direcciones del navegador nos dirije a:
http://www.dominio1.es/wp-admin/setup-config.php
Y ahí configuramos WordPress.
NOTA: Es problable que no se pueda guardar la configuración en el archivo de Wp por una cuestión de permisos. Como se ha podido ver he estado combinando el uso de la interface web con la consola de comandos. En mi caso le he dado permisos vía ssh, pero se puede editar el fichero y pegarle la configuración, tal y como indica el propio asistente del WP.
NOTA2: Podría ser que no se accediera a la instalación del WordPress por una cuestión también de permisos, en este caso más restrictivos. Es preciso que el directorio que albergará nuestro WordPress tenga al menos permisos de lectura.
NOTA3: Tal y como veremos más abajo el directorio que albergue nuestro wordpress ha de pertenecer o tener permisos en él el usuario que utiliza nuestro servidor Apache, es decir http. Cambio de permisos: sudo chown -R http:http ./»directoriobasedewordpress»
Una vez finalizada la instalación tendremos que realizar dos cambios importantes para que WordPress pueda actualizarse, instalar plugins, etc:
- Definir la carpeta de plugins para poder instalar/actualizar.
Para ello editamos el wp-config.php que está en la raíz de nuestra instalación de WordPress y añadimos las siguientes líneas:
define('FTP_BASE', '/www/{nombre de la carpeta raíz}');
define('FTP_CONTENT_DIR', '/www/{nombre de la carpeta raíz}/wp-content');
define('FTP_PLUGIN_DIR', '/www/{nombre de la carpeta raíz}/wp-content/plugins');
Un ejemplo de directorio de plugins para la instalación por defecto de WordPress en un nas de Synology;
/web/wordpress/wp-content/plugins
Pero en nuestro caso estarían en
/volumen1/www/dominio1/wp-content/plugins
2. Asignacion de permisos a nivel de carpetas y ficheros en WordPress: Situándonos en el raiz de la instalación de WP ejecutamos los siguientes comandos:
Todos los ficheros deben ser propiedad del usuario http que es el usuario que utiliza mi servidor apache:
sudo chown -R http:http ./*
Los ficheros 664, los directorios 775 y finalmente más restrictivo para todos los usuarios a los que les quitamos incluso la lectura, en el caso del fichero de configuración:
sudo find . -type f -exec chmod 664 {} \;
sudo find . -type d -exec chmod 775 {} \;
sudo chmod 660 wp-config.php
Estos dos puntos habrá que hacerlos en cada web, sitio o instalación de WordPress.
Puede ser recomendable cambiar el directorio en el que se ubicará la biblioteca de medios. Queda a tu elección.
La línea a añadir a nuestro wp-config.php es:
define('UPLOADS', 'wp-content/archivos');
siempre antes de la línea:
require_once(ABSPATH.’wp-settings.php’);
Disculpad por el tochazo, pero esta mini guía es la que utilizo a modo de recordatorio. La publico tal cual.
NOTA: Este artículo se ha redactado siguiendo una instalación en una nas de Synology (servidor). Además de echar a andar WordPress, sería necesario ocuparse de la seguridad tanto a nivel de la nas como del router/cortafuegos que nos conecta a internet. Además se debería utilizar un certificado que permita utilizar https y de esta manera añadir una capa de encriptación al protocolo web.
NOTA: Al actualizar nuestro wordpress o al instalar pluggins puede pedir la dirección del servidor, en nuestro caso localhost, y usuario y contraseña, que servirá cualquier usuario creado en la nas con acceso al raíz del sitio y autorización al uso de ftp (o usuario creado a tal efecto).
NOTA: Para evitar errores json con Gutenberg hay que asegurarse que el archivo .htaccess sea de lectura/escritura por parte del usuario http del servidor apache.
ENLACES A CONSULTAR: https://mariushosting.com/manually-update-a-new-version-of-wordpress-in-your-synology/