Cómo instalar varios WordPress con Nginx en Ubuntu 18.04

Imagínese, si solo tiene un servidor pero 2 o más sitios de WordPress, cree que necesita más servidor para ejecutar cada sitio de WordPress en él. Está bien, pero ¿qué tal si no tiene muchos costos para mantener muchos servidores?

Este artículo le mostrará cómo ejecutar varios sitios web de WordPress en un servidor host, utilizando Nginx + Mariadb + php-fpm en Ubuntu 18.04 LTS.

Prerrequisitos

1) Nginx para servidor web

2) Mariadb para base de datos mysql

3) php-fpm para php FastCGI Process Manager

El siguiente comando actualizará su sistema y agregará un nuevo repositorio para paquetes php

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

Instale 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 de 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 servidor Mariadb

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

Este comando se ejecuta en modo asistente, simplemente responda la pregunta y aplíquelo 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!

Verifique el servicio Mariadb y habilite el servicio al arrancar

Para asegurarse de que mariadb-server se esté ejecutando y confirme toda la configuración que realizó en los pasos anteriores.

Si no hay ningún error, Mariadb-server 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

Reemplace ‘contraseña’ con la contraseña que ingresó 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)]>

Mira bien, ahora habilita el servicio mysql en el arranque

# systemctl enable mariadb

Configurar php-fpm

Nginx no admite ejecutar php como mod_php en Apache.

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

Edite el archivo /etc/php/7.0/fpm/php.ini con algunos parámetros como a continuación

# vim /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

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

Asegúrese de que esta configuración tenga, deje otras opciones predeterminadas 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 reinicie el demonio php-fpm y verifique el estado, luego habilite el servicio en el arranque

# systemctl restart php7.0-fpm
# systemctl status php7.0-fpm
# systemctl enable php7.0-fpm

Crear múltiples sitios de wordpress

Por ejemplo, tenemos 3 sitios de wordpress, nombre:

– sitio1.example.con
– sitio2.example.con
– sitio3.example.con

Crear base de datos

Crearemos db para site1, site2, site3 y otorgaremos un usuario de db para esas bases de datos

site1.example.com ejecutará el nombre de la base de datos ‘sitio1’ con el usuario de la base de datos es ‘sitio1’ @ ‘localhost’

mysql -u root -p'password' -e "CREATE DATABASE site1;"
mysql -u root -p'password' -e "GRANT ALL PRIVILEGES ON site1.* TO 'site1'@'localhost' IDENTIFIED BY 'site1password';"
mysql -u root -p'password' -e "FLUSH PRIVILEGES;"

Realice la misma acción para la base de datos site1, site2, reemplace ‘site1’ por site2, site3. Reemplace la contraseña de usuario de db si lo desea

mysql -u root -p'password' -e "CREATE DATABASE site2;"
mysql -u root -p'password' -e "GRANT ALL PRIVILEGES ON site2.* TO 'site2'@'localhost' IDENTIFIED BY 'site2password';"
mysql -u root -p'password' -e "FLUSH PRIVILEGES;"
mysql -u root -p'password' -e "CREATE DATABASE site3;"
mysql -u root -p'password' -e "GRANT ALL PRIVILEGES ON site3.* TO 'site3'@'localhost' IDENTIFIED BY 'site3password';"
mysql -u root -p'password' -e "FLUSH PRIVILEGES;"

Cree un archivo de configuración nginx para cada sitio

Cada vez que desee agregar un nuevo sitio, simplemente agregue un nuevo bloque de servidor para ese sitio

# cat > /etc/nginx/sites-available/site1.conf <<EOF
server {
listen 80;
root /var/www/site1;
index index.php index.html index.htm;
server_name site1.example.com www.site1.example.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;
}
}
EOF

Haz la misma acción para sitio2 y site3

Entonces tendremos 3 nuevos archivos de configuración en / etc / nginx / sites-available /. Puede verificar para verificar la bahía de configuración gato mando

#cat  /etc/nginx/sites-available/site2.conf
server {
listen 80;
root /var/www/site2;
index index.php index.html index.htm;
server_name site2.linoxide.com www.site2.linoxide.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;
}
}

Cree la raíz del documento para cada sitio

NOTA: Ruta raíz del documento debe ser el mismo en la configuración de Nginx (parámetro ‘root’ en el bloque {} del servidor) y el propietario es www-data

Si desea cambiar el directorio raíz del documento, simplemente cambie la opción ‘raíz’ en la configuración de nginx y cree la misma ruta.

# mkdir -p /var/www/site{1,2,3}
# chown -R www-data:www-data /var/www/site*

Habilite la configuración de nginx para cada sitio y verifique la configuración

Porque por defecto Nginx solo lee la configuración en / etc / nginx / sites-enabled /

Entonces, si desea Nginx leer la configuración en / etc / nginx / sites-available /

Simplemente cree un enlace simbólico, como este:

# ln -s /etc/nginx/sites-enabled/site1.conf /etc/nginx/sites-available/site1.conf
# ln -s /etc/nginx/sites-enabled/site2.conf /etc/nginx/sites-available/site2.conf
# ln -s /etc/nginx/sites-enabled/site3.conf /etc/nginx/sites-available/site3.conf

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

# nginx -t -c /etc/nginx/nginx.conf
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Mira bien la configuración, recarga el demonio Nginx

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

o

# systemctl reload nginx

Descargue la fuente de wordpress y colóquela en / var / www / site *

NOTA: Si ha existido una fuente de wordpress, simplemente colóquela en la ruta raíz del documento y siga la configuración de nginx.

# cd /tmp
# wget https://wordpress.org/latest.tar.gz
# tar -xzvf latest.tar.gz
# cp -r wordpress/* /var/www/site1/
# cp -r wordpress/* /var/www/site2/
# cp -r wordpress/* /var/www/site3/
# chown -R www-data:www-data /var/www/site*

Inicial para la instalación nueva de wordpress

Acceda a cada sitio en el que desee iniciar WordPress utilizando el navegador. Después de elegir su idioma, haga clic en ‘Continuar‘ botón

Luego, complete el nombre de la base de datos, el usuario de la base de datos, la contraseña de la base de datos para ejecutar la configuración para cada sitio, como se muestra a continuación

Luego envíe su configuración y ‘ejecutar la instalación’ haciendo clic en ‘Ejecuta la instalación‘ botón.

Lea también:

  • Cómo instalar la línea de comandos de WordPress usando WP-CLI
  • Cómo instalar LEMP en Ubuntu 18.04

Ahora, con Nginx, Mysql y php-fpm, puede ejecutar muchos sitios de WordPress en un servidor. No solo WordPress, sino que también puede hacer los mismos pasos para otras fuentes de cms.

En el siguiente artículo, explicaremos y guiaremos cómo optimizar la configuración de nginx, php-fpm para el servidor web que ejecuta Nginx y php-fpm