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. 😊
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.

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
- Encuentre sus Nameservers activos en https://www.whatsmydns.net/#NS/example.com
- Si ves que usas el NS por defecto de tu anterior Hosting o Registrador de dominios, entonces debes sustituirlo por Cloudflare.
- Conozca cómo utilizar el DNS de Cloudflare
Parte B: Preparar un servidor Ubuntu 22.04 LTS

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.

⚡ 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

3. Elija el tipo de servidor
Seleccione Cloud Compute para obtener una CPU compartida a un precio asequible.

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.

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.

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

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.

6. Elija el tamaño del servidor

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.

7. Habilitar IPV6, Copia de seguridad

8. Añadir una clave SSH
Este es un paso recomendado y opcional para mejorar la seguridad.

- 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.

- 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.

- 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.

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

- Haga clic en Gestionar y cree un nuevo Grupo de Cortafuegos.
- Permitir el puerto TCP 22 para SSH. 80 para HTTP y 443 HTTPS para las reglas IPV4 e IPV6.
- Una vez hecho esto, vincule el grupo Firewall a su Instancia.


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

Ahora, verá la instalación en el progreso

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.

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.
- Editar el archivo de configuración
nano /etc/ssh/sshd_config
- Buscar (CTRL + W) y buscar
PasswordAuthentication
- Cambiar el valor de sí a no
- Para guardar el tipo,
CTRL + O
- Reinicie el servicio SSH con el comando
sudo service ssh restart

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 = .*/memory_limit = 512M/g' /etc/php/8.2/fpm/php.ini
sed -i 's/post_max_size = .*/post_max_size = 128M/g' /etc/php/8.2/fpm/php.ini
sed -i 's/max_file_uploads = .*/max_file_uploads = 30/g' /etc/php/8.2/fpm/php.ini
sed -i 's/max_execution_time = .*/max_execution_time = 900/g' /etc/php/8.2/fpm/php.ini
sed -i 's/max_input_time = .*/max_input_time = 3000/g' /etc/php/8.2/fpm/php.ini
sed -i 's/upload_max_filesize = .*/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
- Sustituir
ejemplo.com
por el propio dominio - 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.
Record Type | Name | Value |
---|---|---|
A | @ | IPV4 Address |
AAAA | @ | IPV6 Address |
CNAME | www | example.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!