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