Cómo instalar varios WordPress con Nginx en Ubuntu 20.04

Imagínate, si tienes un solo servidor pero 2 o más sitios de WordPress.

Cómo instalar varios WordPress con Nginx

Este artículo te mostrará cómo instalar varios WordPress con Nginx + Mariadb + php-fpm en Ubuntu 20.04 LTS.

Requisitos previos para Cómo instalar varios WordPress con Nginx

  • Nginx para el servidor web
  • Mariadb para la base de datos mysql
  • php-fpm para el gestor de procesos php FastCGI

El siguiente comando actualizará tu sistema y añadirá un nuevo repositorio para los paquetes php

apt-get update
apt-get install software-properties-common 
add-apt-repository ppa:ondrej/php

Instalar Nginx, Mariadb y php-fpm

Instalaremos el servidor web Nginx, el servidor mysql Mariadb y php7-fpm así como la extensión php7 necesaria para ejecutar el sitio WordPress

apt-get install nginx mariadb-server mariadb-client \ 
php7.0-fpm php7.0-common php7.0-mbstring php7.0-xmlrpc \
php7.0-soap php7.0-gd php7.0-xml php7.0-intl php7.0-mysql \
php7.0-cli php7.0-mcrypt php7.0-ldap php7.0-zip php7.0-curl -y

Configurar el servidor Mariadb

Para refrescar la instalación del servidor de la base de datos, necesitamos configurar la contraseña de la raíz de mysql y otras opciones

Este comando se ejecuta en modo de asistente, sólo tienes que responder a la pregunta y aplicarlo mediante ‘Enter’

mysql_secure_installation
...

Enter current password for root (enter for none): #< Enter
...

Change the root password? [Y/n] y #< type 'y' then Enter
New password: #< Type mysql root password
Re-enter new password: #< Retype mysql root password
Password updated successfully!
Reloading privilege tables..
... Success!

...

Remove anonymous users? [Y/n] y #< type 'y' then Enter
... Success!

...

Disallow root login remotely? [Y/n] y #< type 'y' then Enter
... Success!

...

Remove test database and access to it? [Y/n] y #< type 'y' then Enter
...

Reload privilege tables now? [Y/n] y #< type 'y' then Enter
...

Thanks for using MariaDB!

Comprueba el servicio Mariadb y habilita el servicio en el arranque

Para asegurarte de que mariadb-server se está ejecutando y confirmar toda la configuración que hiciste en los pasos anteriores.

Si no hay ningún error, Mariadb-server está listo para servir el servicio de base de datos

systemctl status mariadb
● mariadb.service - MariaDB database server
Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2018-07-16 03:11:48 UTC; 4h 19min ago
Main PID: 10781 (mysqld)
Status: "Taking your SQL requests now..."
Tasks: 27 (limit: 2322)
CGroup: /system.slice/mariadb.service
└─10781 /usr/sbin/mysqld

Sustituye la “contraseña” por la que has introducido en el paso anterior

mysql -uroot -p 'password'
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 49
Server version: 10.1.29-MariaDB-6 Ubuntu 18.04

Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>

Ahora habilita el servicio mysql en el arranque

systemctl enable mariadb

Configurar php-fpm

Nginx no soporta ejecutar php como mod_php en Apache.

Así que necesitamos instalar (lo hicimos) y configurar el demonio php-fpm que soporta la ejecución del código fuente php

Edita el archivo /etc/php/7.0/fpm/php.ini con los siguientes parámetros

sudo nano /etc/php/7.0/fpm/php.ini
upload_max_filesize = 100M
max_execution_time = 360
cgi.fix_pathinfo = 0
date.timezone = Asia/Ho_Chi_Minh

Comprueba el archivo de configuración del pool php-fpm /etc/php/7.0/fpm/pool.d/www.conf

Asegúrese de que pones esta configuración, dejar por defecto otras opciones si no es bueno en absoluto:

user = www-data
group = www-data
listen = /run/php/php7.0-fpm.sock
listen.owner = www-data
listen.group = www-data

Ahora simplemente reinicia el demonio php-fpm

systemctl restart php7.0-fpm

comprueba el estado

systemctl status php7.0-fpm

habilita el servicio en el arranque

systemctl enable php7.0-fpm

Crear múltiples sitios WordPress

Ejemplo, tenemos 3 sitios de wordpress, nombre:

– sitio1.tu-dominio.com
– sitio2.tu-dominio.com
– sitio3.tu-dominio.com

Crear base de datos

Crearemos una base de datos para el sitio 1, el sitio 2 y el sitio 3 y crearemos un usuario y le daremos permiso para esas bases de datos.

sitio1.tu-dominio.com ejecutará el nombre de la base de datos ‘sitio1’ con el usuario de la base de datos es ‘sitio1’@’localhost’. Cambia la palabra en color azul por la contraseña qu pusiste cuando hiciste la instalación de seguridad de MariaDB

mysql -u root -p 'contraseña' 
CREATE DATABASE sitio1;
GRANT ALL PRIVILEGES ON site1.* TO 'site1'@'localhost' IDENTIFIED BY 'sitio1contraseña';
FLUSH PRIVILEGES;

Haz la misma acción para la base de datos de sitio1, sitio2, sustituye ‘sitio1’ por sitio2, sitio3. Reemplaza la contraseña del usuario de la base de datos si quieres

CREATE DATABASE sitio2;
GRANT ALL PRIVILEGES ON sitio2.* TO 'sitio2'@'localhost' IDENTIFIED BY 'sitio2contraseña';"
mysql -u root -p 'contraseña' -e "FLUSH PRIVILEGES;"
CREATE DATABASE sitio3;
GRANT ALL PRIVILEGES ON io3.* TO 'sitio3'@'localhost' IDENTIFIED BY 'sitio3contraseña';"
FLUSH PRIVILEGES;
EXIT;

Crear el archivo de configuración de nginx para cada sitio

Cada vez que quieras añadir un nuevo sitio, sólo tienes que añadir un nuevo bloque de servidor para ese sitio

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

Y añadimos esto en cada uno de los bloques de servidor

server {
   listen 80;
   root /var/www/sitio1;
   index index.php index.html index.htm;
   server_name sitio1..com www.sitio1.com;

   client_max_body_size 100M;

   location / {
      try_files \$uri \$uri/ /index.php?\$args; 
   }

   location ~ \.php\$ {
      include snippets/fastcgi-php.conf;
      fastcgi_pass unix:/run/php/php7.0-fpm.sock;
      fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
   }
}

Realice la misma acción para el sitio2 y el sitio3

Entonces tendremos 3 nuevos archivos de configuración en /etc/nginx/sites-available/. Puedes comprobar la configuración con el comando cat

cat  /etc/nginx/sites-available/sitio2.conf

Y la salida seria:

server {
   listen 80;
   root /var/www/sitio2;
   index index.php index.html index.htm;
   server_name sitio2.com www.sitio2.com;

   client_max_body_size 100M;

   location / {
      try_files $uri $uri/ /index.php?$args;
   }

   location ~ \.php$ {
      include snippets/fastcgi-php.conf;
      fastcgi_pass unix:/run/php/php7.0-fpm.sock;
      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
   }
}

Crear la carpeta raiz para cada sitio

NOTA: La ruta raíz del documento debe ser la misma en la configuración de Nginx (parámetro ‘root’ en el bloque server{}) y tener como propietario www-data

Si quieres cambiar el directorio raíz del documento, simplemente cambia la opción ‘root’ en la configuración de nginx y crea la misma ruta.

Fijate en como es la notación para los 3 sitios que se llaman igual y solo varia el numero

mkdir -p /var/www/sitio{1,2,3}

Fíjate en el asterisco “*” al final del comando que hace de comodín para todos los sitios

chown -R www-data:www-data /var/www/sitio*

Habilitar la configuración de nginx para cada sitio y comprobar la configuración

Por defecto Nginx sólo lee la configuración en /etc/nginx/sites-enabled/

Así que si quieres que Nginx lea la configuración en /etc/nginx/sites-available/

Basta con crear un enlace simbólico, así:

ln -s /etc/nginx/sites-enabled/sitio1.conf /etc/nginx/sites-available/sitio1.conf
ln -s /etc/nginx/sites-enabled/sitio2.conf /etc/nginx/sites-available/sitio2.conf
ln -s /etc/nginx/sites-enabled/sitio3.conf /etc/nginx/sites-available/sitio3.conf

Luego verifica la configuración de Nginx ejecutando este comando:

nginx -t -c /etc/nginx/nginx.conf

Mira bien la configuración, recarga el demonio Nginx

nginx -s reload -c /etc/nginx/nginx.conf

o

systemctl reload nginx

Descarga el código fuente de wordpress y colócalo en /var/www/site*.

NOTA: Si ya tienes los fuentes de wordpress, simplemente colócala en la ruta raíz del documento sigue la configuración de nginx.

cd /tmp
wget http://wordpress.org/latest.tar.gz
 tar -xzvf latest.tar.gz
cp -r wordpress/* /var/www/sitio1/
cp -r wordpress/* /var/www/sitio2/
cp -r wordpress/* /var/www/sitio3/
chown -R www-data:www-data /var/www/sitio*

Inicialización de cada nueva instalación de wordpress

Accede a cada uno de los sitios en los que quieras instalar WordPress a través del navegador. Después de elegir el idioma, haga clic en el botón “Continuar”.Press individualmente puedes consultar este tutorial:

Puedes consultar tambien:

Ahora, con Nginx, Mysql y php-fpm, puede ejecutar muchos sitios de WordPress en un servidor. No sólo WordPress, también puede hacer los mismos pasos para otras aplicaciones web.

¡Que pases un Ingenioso día!

Deja un comentario

Share to...