GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Cómo instalar múltiples WordPress con Nginx en Ubuntu 18.04

Imagínese, si tiene un solo 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, usando Nginx + Mariadb + php-fpm en Ubuntu 18.04 LTS.

Requisitos

1) Nginx para servidor web

2) Mariadb para la base de datos mysql

3) php-fpm para el administrador de procesos php FastCGI

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

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 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 de la contraseña raíz de mysql y otras opciones

Este comando se ejecuta en modo asistente, solo responda la pregunta y aplíquela con '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 todas las configuraciones que realizó 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

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)]>

Luce 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 admite la ejecución del código fuente php

Edite el archivo /etc/php/7.0/fpm/php.ini con algunos parámetros como los siguientes

# 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 tener esta configuración, 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

Ejemplo, tenemos 3 sitios de wordpress, nombre:

- sitio1.ejemplo.com
- sitio2.ejemplo.com
- sitio3.ejemplo.com

Crear base de datos

Crearemos db para sitio1, sitio2, sitio3 y otorgaremos usuario db para esas bases de datos

site1.example.com ejecutará el nombre de la base de datos 'site1' con el usuario de la base de datos 'site1'@'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 sitio1, sitio2, reemplace 'sitio1' con sitio2, sitio3. 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;"

Crear 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

Realice la misma acción para site2 y sitio3

Entonces tendremos 3 nuevos archivos de configuración en /etc/nginx/sites-disponible/. Puede verificar para verificar la bahía de configuración cat comando

#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;
}
}

Crear documento raíz para cada sitio

NOTA :La ruta raíz del documento debe ser la misma en la configuración de Nginx (parámetro 'raíz' 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, de forma predeterminada, Nginx solo lee la configuración en /etc/nginx/sites-enabled/

Entonces, si desea leer la configuración de Nginx 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

Se ve 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 http://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 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 a continuación

Luego envíe su configuración y 'ejecutar la instalación' haciendo clic en 'Ejecutar 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 seguir los mismos pasos para otras fuentes de cms.

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


Ubuntu
  1. Cómo instalar WordPress con Nginx en Ubuntu 18.04

  2. Cómo instalar WordPress usando Nginx en Ubuntu 18.04

  3. Cómo instalar Nextcloud con Nginx en Ubuntu 18.04 LTS

  4. Cómo instalar MediaWiki con Nginx en Ubuntu 16.04

  5. Cómo instalar SuiteCRM con Nginx en Ubuntu 16.04

Cómo instalar Nginx con ModSecurity en Ubuntu 15.04

Cómo instalar WordPress 5.x con Nginx en Ubuntu 18.04 / Ubuntu 16.04

Cómo instalar WordPress con Nginx en Ubuntu

Cómo instalar Nextcloud 13 en Ubuntu 16.04 con Nginx

Cómo instalar WordPress con Nginx en Ubuntu 20.04

Instalar WordPress con Nginx en Ubuntu 18.04