GNU/Linux >> Tutoriales Linux >  >> Debian

Instalar WordPress con base de datos remota en Debian

Resumen

En la siguiente publicación, cubriremos el escenario en el que instalaremos WordPress con una base de datos remota en Debian. En otras palabras, tendremos un entorno en el que tendremos dos servidores separados, uno que solo tendrá la instalación de WordPress (lo que significa que solo alojará el sitio web) y el otro solo tendrá la base de datos (actúa solo como un servidor de base de datos) .

Hay muchas razones beneficiosas por las que se configura este tipo de entorno:una de ellas es la facilidad de mantenimiento del sitio web y el mantenimiento de la base de datos, el aumento del rendimiento (es decir, WordPress, ya que no depende de un servidor, requerirá muchos menos recursos).

Pero la desventaja es que, dado que ahora tenemos dos servidores, el mantenimiento del servidor aumentará.

Esta configuración se configurará en dos servidores Debian (ambos en la misma red/misma LAN).

La pila será LEMP:servidor web Nginx, servidor PHP y MariaDB.

Configuración del servidor de base de datos

Nos centraremos primero en el servidor de la base de datos:

1. Instale el servidor MariaDB

sudo apt install mariadb-server

Ejecute mysql_secure_installation

sudo mysql_secure_installation

2. Edite el archivo de configuración de la base de datos y cambie el parámetro de dirección de enlace e ingrese la dirección privada de su servidor de base de datos:

El archivo a editar:

sudo /etc/mysql/mariadb.conf.d/50-server.cnf

Línea para editar:dirección de enlace =127.0.0.1

dirección de enlace =192.168.56.252

Guarde y salga, reinicie y habilite el servicio mariadb.

sudo systemctl restart mariadb.service

sudo systemctl enabled mariadb.service

Para averiguar la dirección IP de su servidor de base de datos, ejecute el comando – ip a.

3. Cree la base de datos, el usuario y configure los privilegios (la información en los comandos se usa como ejemplo)

sudo mysql -u root -p
CREATE DATABASE wptest;
GRANT ALL ON wptest.* TO 'wpadmin'@'192.168.56.251' IDENTIFIED BY 'StrongPassword';
FLUSH PRIVILEGES;
exit

En la base de datos es necesario crear un usuario remoto, también conocido como la cuenta de usuario que utilizará nuestra instalación de WordPress para conectarse a la base de datos. Es necesario que sepa primero la dirección IP del servidor de WordPress y la especifique/vincule a la cuenta de usuario remota.

Configuración del cortafuegos

Si tiene un firewall en ejecución en su servidor de base de datos, entonces es necesario abrir el puerto 3306 para aceptar la conexión desde el servidor web y acceder a la base de datos. Solo para estar seguro, es bueno configurar las reglas para aceptar solo las conexiones solo desde nuestro servidor web.

Configuración del cortafuegos UFW

sudo ufw allow from 192.168.56.251 to any port 3306

Configuración de IPTABLES

iptables -I INPUT -p tcp -s 192.168.56.251 --dport 3306 -j ACCEPT

Configuración del servidor web

1. Instale el servidor web Nginx con otras bibliotecas php necesarias para ejecutar WordPress y comunicarse con el servidor de la base de datos y el cliente mysql/mariadb.

sudo apt install nginx php-cli php-fpm php-mysql php-json php-opcache php-mbstring php-xml php-gd php-curl

sudo apt install mariadb-client

Podemos probar la conexión con el servidor de la base de datos si ejecutamos este comando desde nuestro servidor web (esencialmente, iniciando sesión de forma remota en la base de datos):

sudo mysql -u remote-admin -h 192.168.56.252 -p

2. Instala WordPress, configúralo y configura Nginx. Aquí ahora configuraremos solo la parte de WordPress donde necesitamos agregar la dirección de nuestro servidor de base de datos remoto. Si necesita los pasos detallados sobre cómo instalar WordPress y configurar Nginx, puede encontrar las instrucciones en esta publicación.

cd /var/www/html/wordpress/

sudo mv wp-config-sample.php wp-config.php

sudo nano wp-config.php

En la línea de la base de datos, reemplace localhost con la dirección IP de su servidor de base de datos. Consulte la siguiente imagen como ejemplo:

3. Cree el archivo conf de Nginx y elimine el predeterminado:

sudo nano /etc/nginx/sites-available/wordpress.conf

sudo ln -s /etc/nginx/sites-available/wordpress.conf /etc/nginx/sites-enabled/

La configuración de Nginx que puede usar, puede ubicarla en la misma publicación que mencionamos anteriormente.

sudo rm /etc/nginx/sites-available/default

sudo rm /etc/nignx/sites-enabled/default

Después de esta configuración, debería poder ejecutar WordPress, acceder a su base de datos remota y finalizar la instalación de WordPress.

Y ahora debería tener un sitio de WordPress en ejecución con un servidor web y de base de datos separado. Puede detenerse aquí si está satisfecho con la configuración. Estos fueron los pasos necesarios para instalar WordPress con una base de datos remota y, en este punto, todo debería estar en funcionamiento. De lo contrario, continúe con el próximo y último capítulo sobre cómo proteger y cifrar la conexión de la base de datos y el tráfico entre la web y el servidor de la base de datos y cómo hacer que la configuración sea más segura.

Proteja y cifre la conexión de la base de datos con un SSL (opcional pero recomendado)

También es una buena práctica de seguridad y una capa adicional de seguridad para proteger y cifrar el tráfico entre la web y el servidor de la base de datos. La razón es que si no es seguro y está encriptado, y SI de alguna manera un atacante irrumpe en su subred privada (la red LAN privada donde se encuentran los servidores) o en el servidor web, el atacante puede interceptar y rastrear el tráfico (supervisarlo y obtener datos) que pueden dar lugar a la violación y la piratería de su sitio web y los servidores.

Certificado de servidor de base de datos

1. En ambos servidores (web y base de datos), cree un directorio temporal para almacenar los certificados (por ejemplo, ssl o certs) en su directorio de inicio como ejemplo o en algún lugar donde sea fácil almacenarlos; como ejemplo, aquí haremos el directorio de certificados en nuestro directorio de inicio:

cd

mkdir certs

Primero comenzaremos con el servidor de la base de datos, así que cambie al nuevo directorio de certificados que acabamos de crear:

cd certs

2. En el servidor de la base de datos vamos a generar la clave CA, el certificado y la clave privada. Siga las indicaciones y responda en consecuencia cuando se le solicite. Puede usar las imágenes a continuación como referencia. Una cosa a tener en cuenta es el indicador de nombre común (que es bastante importante). Está pidiendo el nombre del servidor de la base de datos. Aquí debe agregar la dirección IP del servidor (como la que tenemos) o el nombre de dominio del servidor si tiene o nombre de host. La información debe coincidir, ya que crearemos los certificados del servidor y las claves del cliente para que coincidan.:

sudo openssl genrsa 4096 > ca-key.pem
sudo openssl req -new -x509 -nodes -days 1825 -key ca-key.pem -out cacert.pem

En el segundo comando, el atributo -days 1825 se refiere a que el certificado creado tendrá una validez de 5 años (1825 días). Puedes configurar los días como quieras o necesites.

3. Lo siguiente es crear la clave privada RSA y firmar el certificado:

sudo openssl rsa -in server-key.pem -out server-key.pem

sudo openssl req -newkey rsa:4096 -days 1825 -nodes -keyout server-key.pem -out server-req.pem
sudo openssl x509 -req -in server-req.pem -days 1825 -CA cacert.pem -CAkey ca-key.pem -set_serial 01 -out server-cert.pem

Ahora podemos mover los certificados a una ubicación permanente:

sudo mkdir /etc/mysql/ssl

sudo mv *.* /etc/mysql/ssl

cd /etc/mysql/ssl

Certificado de servidor web

4. Genere el certificado de cliente. Las indicaciones serán las mismas que para el servidor de la base de datos, pero en la pregunta Nombre común, ingrese los detalles del servidor web donde está instalado Wodpress (como la dirección IP del servidor web). Escriba el RSA y firme el certificado:

sudo openssl req -newkey rsa:2048 -days 1825 -nodes -keyout client-key.pem -out client-req.pem

sudo openssl rsa -in client-key.pem -out client-key.pem

sudo openssl x509 -req -in client-req.pem -days 1825 -CA cacert.pem -CAkey ca-key.pem -set_serial 01 -out client-cert.pem

Configuración SSL para ambos servidores

Configuración del servidor de base de datos

1. El siguiente paso es configurar nuestros servidores para usar los certificados que creamos y habilitar la conexión SSL entre la web y el servidor de la base de datos. Primero edite la configuración en la configuración del servidor MariaDB:

sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

Y encuentre las siguientes líneas, elimine los comentarios y reescriba las líneas que coinciden con los directorios y archivos de nuestros certificados que creamos:

ssl-ca=/etc/mysql/ssl/cacert.pem
ssl-cert=/etc/mysql/ssl/server-cert.pem
ssl-key=/etc/mysql/ssl/server-key.pem

Guarde el archivo y salga.

2. Ahora inicie sesión en MariDB como root y ejecute las siguientes consultas para habilitar en el servidor que permitirá la conexión desde el servidor web solo con SSL:

sudo mysql -u root -p
GRANT ALL PRIVILEGES ON wptest.* TO 'wpadmin'@'192.168.56.251' REQUIRE SSL;
FLUSH PRIVILEGES;
exit

Reinicie el servidor de la base de datos:

sudo systemctl restart mariadb.service
Configuración del servidor web

3. Mientras aún se encuentra en el directorio /etc/mysql/ssl (o muévase aquí), con la herramienta scp, copie los certificados del cliente en el servidor web (el usuario web y la dirección IP se reemplazan con el nombre de usuario y la dirección IP reales de su servidor web):

scp cacert.pem client-cert.pem client-key.pem [email protected]:~/certs

Ahora cambie/inicie sesión en el servidor web y mueva los certificados a algún lugar permanente también (igual que para el servidor de la base de datos):

sudo mkdir /etc/mysql/ssl

cd certs

sudo mv /certs/*.* /etc/mysql/ssl

Edite el archivo de configuración para el cliente MariaDB que instalamos en el primer paso. Tiene la misma ubicación que tiene el servidor:

sudo nano /etc/mysql/mariadb.conf.d/50-mysql-clients.cnf

Y busque la misma línea SSL (debe estar en la sección [mysql]) que hicimos para el servidor de la base de datos y haga que coincidan con la ubicación y los nombres de los archivos de los certificados que agregamos en el directorio /etc/mysql/ssl:

[mysql]
ssl-ca=/etc/mysql/ssl/cacert.pem
ssl-cert=/etc/mysql/ssl/client-cert.pem
ssl-key=/etc/mysql/ssl/client-key.pem

Guarde el archivo, salga.

Puede probar si la conexión funciona con inicio de sesión remoto:

mysql -u wpadmin -h 192.168.56.252 -p

4. El último archivo a editar es nuevamente wp-config.php. Necesitamos allí también la línea de configuración SSL:

sudo nano /var/www/html/wordpress/wp-config.php

y agregue la línea antes de la línea con el nombre de la base de datos:

define('MYSQL_CLIENT_FLAGS', MYSQLI_CLIENT_SSL);

Consulte la imagen:

Reinicie el servidor web Nginx y finalice la instalación de WordPress desde el navegador web. Debería estar en funcionamiento.

Resumen

Para resumir este artículo, cubrimos los pasos para instalar WordPress con una base de datos remota. También cubrimos el proceso de cómo asegurar la conexión entre los dos servidores (si no ha experimentado antes los certificados autofirmados y cómo trabajar con ellos, puede omitir el paso, como se dijo anteriormente, no es necesario, solo una recomendación) . El proceso básico en sí mismo sobre cómo instalar WordPress con una base de datos remota no es tan difícil y brinda un par de beneficios, uno de los cuales es que el rendimiento y el mantenimiento del servidor web ahora pueden ser bastante más fáciles y reducir los tiempos de inactividad cuando se necesita mantenimiento.


Debian
  1. Instale un servidor de registro centralizado con Rsyslog en Debian 9

  2. Cómo instalar el servidor HTTP Git con Nginx en Debian 11

  3. Instalar WordPress en Fedora 22/21 con AMP

  4. Instale WordPress en openSUSE 13.2 con LAMP

  5. Instale phpMyAdmin en Debian 11 con Nginx

Cómo instalar el servidor FTP vsftpd con TLS en Debian 10

Instale phpMyAdmin con Apache (LAMP) en Debian 10 Buster

Cómo instalar WordPress en Debian 8

Cómo instalar Nginx con PHP-FPM en Debian 11

Cómo instalar WordPress en un servidor en la nube Debian 8.2

Cómo instalar WordPress con LAMP en Debian 10