- Requisitos previos para Cómo instalar varios WordPress con Nginx
- Instalar Nginx, Mariadb y php-fpm
- Crear múltiples sitios WordPress
- Crear el archivo de configuración de nginx para cada sitio
- Crear la carpeta raiz para cada sitio
- Habilitar la configuración de nginx para cada sitio y comprobar la configuración
- Descarga el código fuente de wordpress y colócalo en /var/www/site*.
- Inicialización de cada nueva instalación de wordpress
Imagínate, si tienes un solo servidor pero 2 o más sitios de WordPress.
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:
- How to Install WordPress Command Line using WP-CLI
- Cómo instalar un entorno LEMP en Ubuntu 20.04 Server/Desktop
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!