Instalar WordPress con Ubuntu 22.04, Apache2, MariaDB y PHP 8.2-FPM

Si estás planeando alojar WordPress en un Servidor en la Nube, esta guía te va a ser útil. LAMP son las siglas de Linux, Apache, MariaDB y PHP, que combinados se conocen como pila LAMP.

Ventajas y desventajas de elegir un servidor web Apache en lugar de NGINX

  • Pros: It supports .htaccess file that is commonly used by many Page Caching & Optimization. This is a great choice for non-coder.
  • Cons: Tiene un rendimiento ligeramente inferior al de NGINX, pero eso se puede gestionar con APO. Para un sitio de alto tráfico, la pila LEMP es la mejor opción.

Sigue estos 3 pasos y mira el vídeo. ¿Necesitas ayuda? Contacta conmigo. 😊

  1. Configurar el DNS de Cloudflare
  2. Conseguir Ubuntu Server
  3. Despliegue de la pila LAMP

Ahora, antes de empezar, aquí hay un consejo rápido. Utiliza la extensión Buscar y Reemplazar para cambiar masivamente example.com por tu propio dominio en esta página web.Consejo para ahorrar tiempo a los usuarios de Google Chrome.

Consejo para ahorrar tiempo a los usuarios de Google Chrome.

search replace

Parte A: Mantener activos los servidores de nombre de Cloudflare

Utilizaremos los DNS de Cloudflare para obtener el certificado SSL comodín de Let’s Encrypt. Complete este paso primero para disfrutar de la migración sin tiempo de inactividad.

Comprobar los servidores de nombres actuales

Parte B: Preparar un servidor Ubuntu 22.04 LTS

Ubuntu
Logotipo de Ubuntu

1. Regístrese en Vultr para conseguir 100 dólares de créditos gratis (válido durante 14 días)

Como alguien que ha probado muchas compañías de servidores en la nube, mi experiencia dice que no puedes equivocarte con Vultr. Estos chicos son genuinos y cuidadosos cuando se trata de soporte y servicios.

vultr

⚡ Rendimiento

  • Tercera generación de AMD EPYC™
  • NVME / SSD
  • CPU de hasta 4 GHz
  • Velocidad de red de hasta 5 Gbps
  • Centros de datos en América, Europa, Asia y Australia
  • Preparado para IPV6

💡 Características

  • Panel de control para principiantes
  • Un clic para hacer una instantánea
  • Copia de seguridad automática (de pago)
  • Cortafuegos en la nube gratuito
  • Protección DDoS (de pago)
  • Virtualización 100% KVM

⚙ Soporte

  • PayPal/Tarjeta
  • Soporte de entradas 24/7
  • Documentación

2. Deloy un nuevo servidor

Simplemente haga clic en el botón más para empezar

Deploy New Server

3. Elija el tipo de servidor

Seleccione Cloud Compute para obtener una CPU compartida a un precio asequible.

Cloud Compute

Después de esto, puedes seleccionar la opción AMD High Performance o Intel High Frequency en CPU & Storage Technology. Tiene la CPU más rápida y disco NVMe nunca. Si el presupuesto es menor, elige el plan Regular con CPU Intel, en el que obtendrás un disco SSD.

cpu and storage technology

4. Elija la ubicación del servidor

Vultr ofrece servidores en los cuatro continentes. Para obtener la menor latencia y el mejor rendimiento, debe elegir siempre la región más cercana a su audiencia.

vultr server region

Por ejemplo, si el 99% del tráfico proviene de la India, elija la región más cercana: Mumbai.

Asia

  • Mumbai, India
  • Delhi NCR, India
  • Bengaluru, India
  • Singapore, Singapore
  • Tokyo, Japan
  • Seoul, South Korea

America

  • Miami, United States
  • Atlanta, United States
  • Chicago, United States
  • Dallas, United States
  • Honolulu, United States
  • Los Angeles, United States
  • Mexico City, Mexico
  • New York (NJ), United States
  • Seattle, United States
  • Silicon Valley, United States
  • Toronto, Canada, São Paulo

Europe

  • Stockholm, Sweden
  • London, United Kingdom
  • Amsterdam, Netherlands
  • Frankfurt, Germany
  • Madrid, Spain
  • Paris, France
  • Warsaw, Poland

Australlia

  • Sydney, Australlia
  • Melbourne, Australia

5. Seleccione la Imagen del Servidor > Sistema Operativo > Ubuntu 22.04 LTS x64

ubuntu os

El soporte a largo plazo (LTS) es una política de gestión del ciclo de vida del producto en la que se mantiene una versión estable del software informático durante un periodo de tiempo más largo que la edición estándar.

ubuntu releases 2

6. Elija el tamaño del servidor

server size

El plan de $6/mes sería un gran punto de partida para un nuevo blog. Usted puede actualizar en cualquier momento según el requisito.

Consejo: Si está migrando, compruebe el tamaño total de la instalación en la información de salud del sitio.

Checking WordPress Installation Size in WordPress Site Health

7. Habilitar IPV6, Copia de seguridad

enable ipv6 and automatic backup vultr

8. Añadir una clave SSH

Este es un paso recomendado y opcional para mejorar la seguridad.

Add SSH key
  • Haga clic en el botón Añadir nuevo para añadir una nueva clave SSH para presentar su clave 🔒Pública.
  • Genere las claves utilizando el siguiente método según su sistema operativo.
win os
  • Descargue la aplicación PuTTy.
  • Busque PuTTygen en el menú de Inicio
  • Haga clic en el botón Generar y pase el puntero del ratón por encima
  • Copiar la clave pública y proporcionarla a Vultr
  • Introduzca la frase clave
  • Guarde la clave privada en el lugar más seguro.
  • Esto se puede utilizar para iniciar sesión en SSH o SFTP.
linux 2
  • Ejecute: ssh-keygen -t rsa. Para una clave más segura de 4096 bits, ejecute: ssh-keygen -t rsa -b 4096
  • Pulse Intro cuando se le pregunte dónde quiere guardar la clave (se utilizará la ubicación por defecto).
  • Introduzca una frase de contraseña para su clave.
  • Ejecute cat ~/.ssh/id_rsa.pub – esto le dará la clave en el formato adecuado para pegar en el panel de control.
  • Asegúrese de hacer una copia de seguridad del archivo ~/.ssh/id_rsa. Este no se puede recuperar si se pierde.

Seleccione su clave SSH

Siguiendo estos pasos adjuntará su clave pública a su nueva Instancia. A continuación, podrá iniciar sesión en SSH utilizando tanto la contraseña de texto plano como la clave SSH.

select SSH public key

9. Vincular la regla del Firewall Web a la Instancia del Servidor

Firewall
  1. Haga clic en Gestionar y cree un nuevo Grupo de Cortafuegos.
  2. Permitir el puerto TCP 22 para SSH. 80 para HTTP y 443 HTTPS para las reglas IPV4 e IPV6.
  3. Una vez hecho esto, vincule el grupo Firewall a su Instancia.
firewall status
Acepta conexiones TCP sólo desde 22, 80, 443
Link Firewall Group
Vincular la regla del cortafuegos a la nueva instancia

10. Introduzca el nombre del host y la etiqueta y haga clic en «Desplegar ahora».

deploy vultr instance

Ahora, verá la instalación en el progreso

Instance Installing

11. Ir a la página de Nueva Instancia

Copie la dirección IP, el nombre de usuario y la contraseña. Su puerto por defecto es el 22.

login credentials

12. Desactivar el inicio de sesión con contraseña

Por razones de seguridad, se recomienda deshabilitar la autenticación por contraseña y permitir sólo la autenticación por clave.

  1. Editar el archivo de configuración nano /etc/ssh/sshd_config
  2. Buscar (CTRL + W) y buscar PasswordAuthentication
  3. Cambiar el valor de sí a no
  4. Para guardar el tipo, CTRL + O
  5. Reinicie el servicio SSH con el comando sudo service ssh restart
disable password auth
Desactivar la autentificación por contraseña

A partir de la próxima vez, puede utilizar SSH a través de la clave sólo como se muestra en el video.

Para Linux o Mac, utilice el Terminal con un comando como este

ssh root@192.168.1.1 -p 22 -i id_rsa

Paso 13. Desactivar UFW

Cuando se despliega una nueva instancia en VULTR viene con el UFW (Uncomplicated Firewall) activado que mantiene todos los puertos bloqueados excepto el puerto 22 de SSH. Esto puede devolver el error ERR_CONNECTION_REFUSED en el navegador. Para solucionar esto, sugeriría mantener el UFW deshabilitado.

ufw disable

Ahora, voy a acelerar el proceso original para desplegar WordPress en la pila LEMP.

Parte C. Implementar WordPress en la pila LAMP

1. Actualizar los repositorios

Escriba el siguiente comando y pulse la tecla Intro

sudo -s
apt update && apt upgrade -y && apt dist-upgrade && apt autoclean && apt autoremove -y && reboot

o

wget -qO update https://dl.gulshankumar.net/update && chmod +x update

La próxima vez, utilice siempre el siguiente comando de acceso directo para actualizar.

./update

2. Instalar MariaDB con seguridad

Inicie sesión de nuevo e introduzca el siguiente comando

sudo apt install mariadb-server -y && sudo mysql_secure_installation

Responda a las siguientes preguntas

  • Enter current password for root (enter for none): Pulse la tecla Intro
  • Switch to unix_socket authentication [Y/n]: Escriba n y pulse Intro
  • Set root password? [Y/n]: Pulse la tecla Intro
  • New password: Copie una contraseña segura del Generador de contraseñas de Dashlane. Para pegar una contraseña en la consola SSH, haga clic con el botón derecho y presione la tecla Intro. La contraseña no será visible en la pantalla.
  • Re-enter new password: Vuelva a escribir su contraseña.

Después de establecer correctamente la contraseña, verá

Password updated successfully!
Reloading privilege tables..
... Success!

Además, debe responder a las siguientes preguntas.

Remove anonymous users? [Y/n]: Pulse Y e introduzca
Disallow root login remotely? [Y/n]: Pulse Y e introduzca
Remove test database and access to it? [Y/n]: Pulse Y e introduzca
Reload privilege tables now? [Y/n]: Pulse Y e introduzca

3. Crear una nueva base de datos para WordPress

Inicie sesión en MySQL, pulse la tecla enter cuando le pida la contraseña.

mysql -u root -p

Crear una nueva base de datos, y conceder privilegios para utilizar su usuario con contraseña. Aquí es donde WordPress almacena toda la información de las entradas, páginas, temas, plugins, etc.

create database wordpress;
grant all on wordpress.* to gulshan@localhost identified by '5pY8CKJxDRJEGQNkX7';
flush privileges;
exit;

Donde su …
la base de datos es wordpress
el nombre de usuario es gulshan
la contraseña es 5pY8CKJxDRJEGQNkX7

Consejo: Considere el uso de credenciales de acceso únicas

4. Instalar PHP 8.2, Apache2 y establecer los permisos

A partir de ahora, PHP 8.2 es la última versión estable. Si necesita una versión diferente de PHP debe mantener la misma versión en todos los comandos a continuación.

sudo add-apt-repository ppa:ondrej/php -y && apt update && apt install php8.2-fpm php8.2-common php8.2-mysql php8.2-xml php8.2-xmlrpc php8.2-curl php8.2-gd php8.2-imagick php8.2-cli php8.2-dev php8.2-imap php8.2-mbstring php8.2-soap php8.2-zip php8.2-bcmath -y && sed -i 's/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/g' /etc/php/8.2/fpm/php.ini && service php8.2-fpm restart && apt install apache2 -y && chown -R www-data:www-data /var/www/ && chmod -R 755 /var/www/

Ajustar la configuración de PHP

La mayoría de los temas y plugins de lujo requieren una configuración de PHP de alto nivel para funcionar. Por lo tanto, debemos hacer estos cambios.

sed -i 's/memory_limit = 128M/memory_limit = 512M/g' /etc/php/8.2/fpm/php.ini
sed -i 's/post_max_size = 8M/post_max_size = 128M/g' /etc/php/8.2/fpm/php.ini
sed -i 's/max_file_uploads = 20/max_file_uploads = 30/g' /etc/php/8.2/fpm/php.ini
sed -i 's/max_execution_time = 30/max_execution_time = 900/g' /etc/php/8.2/fpm/php.ini
sed -i 's/max_input_time = 60/max_input_time = 3000/g' /etc/php/8.2/fpm/php.ini
sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 128M/g' /etc/php/8.2/fpm/php.ini
service php8.2-fpm restart

5. Instalar el certificado SSL Wildcard Let’s Encrypt

Create a cloudflare.ini file inside /root/.secrets/ directory.

mkdir -p /root/.secrets/ && cd /root/.secrets/ && nano cloudflare.ini

Añade el siguiente código y guárdalo con CTRL+O y sal con CTRL+X

dns_cloudflare_email = "your-cloudflare-email@example.com"
dns_cloudflare_api_key = "XXXXXXXXXXXXXXXXX"

Encuentre su correo electrónico de Cloudflare y su clave de API global en «Mi perfil» > Tokens de API > Clave de API global

chmod 0400 /root/.secrets/cloudflare.ini

Instalar Certbot y DNS Authenticator según el sistema operativo y el servidor web HTTP

apt install snapd -y
snap install --beta --classic certbot
snap set certbot trust-plugin-with-root=ok
snap install --beta certbot-dns-cloudflare
snap connect certbot:plugin certbot-dns-cloudflare

Obtenga un certificado SSL comodín

certbot certonly --dns-cloudflare --dns-cloudflare-credentials /root/.secrets/cloudflare.ini -d example.com,*.example.com --preferred-challenges dns-01

Establecer la renovación automática mediante un trabajo Cron

  • Type crontab -e
  • Type 1 for nano editor
  • Enter below command and save
0 0 * * *  /etc/init.d/apache2 reload >/dev/null 2>&1

Prueba de renovación

certbot renew --dry-run

Active estos útiles módulos

a2enmod proxy_fcgi ssl http2 expires headers rewrite remoteip
systemctl restart apache2

6. Cree un directorio de aplicaciones para cada sitio de WordPress que desee instalar

mkdir -p /var/www/example.com/public

Esta será la ruta de su documento raíz en su archivo de configuración de Apache. La razón de crear example.com dentro de www es para mantener cada sitio organizado. En segundo lugar, he creado el directorio público también con el objetivo de mantener todos los archivos del núcleo de WordPress allí, pero wp-config.php un nivel más arriba (/var/www/example.com/).

7. Crear la configuración de Apache2

Esto es importante cuando necesite configurar su dominio, cómo Apache2 debe manejar sus peticiones HTTP.

Borrar los archivos de configuración de los bloques del servidor por defecto de Apache2

rm /etc/apache2/sites-available/000-default.conf
rm /etc/apache2/sites-available/default-ssl.conf
rm /etc/apache2/sites-enabled/000-default.conf
source /etc/apache2/envvars

Ahora, cree un nuevo bloque de archivos de configuración del servidor. Es necesario hacer este paso cada vez que quiera añadir un nuevo WordPress en el mismo servidor.

Por favor, sustituya example.com por su propio dominio y no olvide terminar el nombre del archivo de configuración con la extensión .conf. De lo contrario, no funcionará.

cd /etc/apache2/sites-available/
nano example.com.conf
  1. Sustituir ejemplo.com por el propio dominio
  2. Introduce el siguiente código y pulsa ctrl+o para guardar y ctrl+x para salir.
##############################################################
#                                                               
# Por favor, busque y reemplace ejemplo.com por su propio dominio.
#                                                                
##############################################################


# Vamos a Forzar HTTPS non-www
# Si desea HTTPS www por favor mantenga https://www.example.com/ en la última línea.
# O puede que te encuentres con el problema del bucle de redirección.

<VirtualHost *:80>
   ServerSignature Off
   ServerName example.com
   ServerAlias www.example.com
   Redirect permanent / https://example.com/
</VirtualHost>

<VirtualHost *:443>
   ServerSignature Off
   ServerName example.com
   ServerAlias www.example.com
   Protocols h2 h2c http/1.1
   DirectoryIndex index.php index.html
    
   # Comente si planea utilizar usuarios de Cloudflare
   # RemoteIPHeader X-Forwarded-For
   
   # Ruta raíz del documento (Preste atención a esta ruta para evitar 404)
   DocumentRoot /var/www/example.com/public
   
   # La ruta de los registros es /var/log/apache2/example.com-access.log
   ErrorLog ${APACHE_LOG_DIR}/example.com-error.log
   CustomLog ${APACHE_LOG_DIR}/example.com-access.log combined
   
   # Let's Encrypt SSL
   SSLEngine On
   SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
   SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
   
   # Permitir el uso del archivo .htaccess para anular la configuración
   <Directory /var/www/example.com/public>
     Options FollowSymLinks
     AllowOverride All
     Require all granted
   </Directory>
   
   # Bloquear la ejecución de PHP dentro del directorio Uploads
   <Directory /var/www/example.com/public/wp-content/uploads>
    <Files *.php>
      deny from all
    </Files>
   </Directory>
   
   # Proteger wp-config.php
   <files wp-config.php>
      order allow,deny
      deny from all
   </files>

  # HTTP Auth para mayor seguridad
# Si quiere HTTP Auth para la página de Login de WordPress entonces considere descomentar este bloque de código.
  # Si lo hace debe generar el archivo .htpasswd también.
  # <Files wp-login.php>
  #  AuthName "Admins Only"
  #    AuthUserFile /var/www/.htpasswd
  #   AuthType basic
  #    require user gulshan
  #   <RequireAny>
  #      Require ip 127.0.0.1
  #       Require valid-user
  #   </RequireAny>
  # </Files>
   
   # Bloquear XML-RPC para prevenir ataques DDoS.
   <Files xmlrpc.php>
      Order Deny,Allow
      Deny from all
   </Files>
   
   # Manejar la ejecución de PHP
   <FilesMatch ".php$">
      SetHandler "proxy:unix:/var/run/php/php8.2-fpm.sock|fcgi://localhost/"
   </FilesMatch>
</VirtualHost>

Para guardar, pulse CTRL+O y la tecla Enter. A continuación, salga del editor nano con el comando CTRL+X.

Para activar el bloqueo del servidor, introduzca el comando

Antes de ejecutar el siguiente comando, sustituya example.com por su propio dominio.

a2ensite example.com.conf

Configuración de la prueba (opcional)

apache2 -t

Reiniciar y actualizar

service apache2 restart && service php8.2-fpm restart && service mysql restart && apt-get update && apt upgrade -y

8. Instalar los archivos de WordPress

Descargue los archivos de WordPress en el directorio /var/www/example.com/public/ y establezca los permisos.

cd /var/www/example.com/public/ && wget https://es.wordpress.org/latest-es_ES.tar.gz && tar -xvzf latest-es_ES.tar.gz && mv -v wordpress/* /var/www/example.com/public/ && rm -rf latest-es_ES.tar.gz wordpress && chown -R www-data:www-data /var/www/example.com/public/ && sudo chmod -R 755 /var/www/example.com/public/

Para actualizar los permisos en el futuro, utilice el siguiente comando. Esto establecerá www-data para todo dentro del directorio /var/www/

chown -R www-data:www-data /var/www/example.com/public/ && sudo chmod -R 755 /var/www/example.com/public/

9. Actualizar el DNS

Si estás alojando WordPress localmente, quieres saltarte el proxy o quieres realizar una migración sin tiempo de inactividad, este paso es útil. Generalmente lo prefiero en caso de área de desarrollo de WordPress estático 😉 .

  • Hay dos maneras de apuntar el DNS. Si está migrando el sitio a Vultr y quiere probar primero localmente, entonces edite su archivo de hosts y apunte allí.

Para Windows

  • Ir a las propiedades de ‪‪C:\Windows\System32\drivers\etc\hosts
  • Cambie el permiso de «Seguridad» a control total para su nombre de usuario actual
  • Ahora puede editar libremente el archivo de hosts bajo su usuario de Sistema y guardarlo.
# For same machine you can have localhost address else public IP
127.0.0.1 example.com
127.0.0.1 www.example.com

Un ejemplo, así es como debería verse

Para Mac o Linux

Puede editar el archivo de hosts utilizando este comando bajo el usuario sudo.

sudo nano /etc/hosts

Actualización de DNS con Cloudflare

  • Si todo se ve perfecto y quieres hacer tu sitio en vivo, ingresa a Cloudflare DNS y actualiza la nueva IP.
A@IPV4
AAAA@IPV6
CNAMEwwwexample.com

donde @ indica el dominio raíz example.com

9. Visite su nombre de dominio para configurar WordPress

Si desea mantener el dominio de la versión no www para su WordPress entonces visite la versión no www sino www.

https://example.com
  • Proporcione la credencial de inicio de sesión de la base de datos para comenzar la configuración de WordPress
  • Instalación de la carrera
  • Rellene los datos básicos de su nuevo sitio e instale WordPress.
  • Acceder a WordPress

Otras cosas necesarias

  • Aumentar la memoria de intercambio para hacer frente a la carga repentina
swapoff -a
fallocate -l 2G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
sudo cp /etc/fstab /etc/fstab.bak
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
  • Asegúrese de utilizar un plugin de caché de página para mantener la carga del servidor en el control. Como se trata de una pila LAMP, te recomiendo WP Fastest Cache.
  • Mantén siempre una copia de seguridad.
  • Utilice el plugin de servicios SMTP para el envío de correo electrónico saliente de WordPress, de lo contrario no será capaz de recibir el enlace de restablecimiento de contraseña, formulario de contacto 7 mensajes.

Finalmente, la instalación de WordPress se ha completado.

Le agradezco mucho su valioso tiempo en la lectura de este artículo. ¡Nos vemos en el próximo tutorial!

¿Quieres más? 
¡Imagina recibir tutoriales todos los días! ESTO ES INCREÍBLE. Suscríbase ahora. 

Deja un comentario