Migrar WordPress a VPS en DigitalOcean
Voy a contar mi experiencia de migrar mi blog en WordPress a un servidor VPS, con los servicios de DigitalOcean.
En primer lugar el motivo de mi cambio fueron algunos aspectos:
- Mayor control del servidor, poder instalar otros programas, dado que anteriormente tenia un Hosting compartido y no tenia acceso al terminal del servidor y eso me limitaba mucho dado que yo quería hacer otro tipos de pruebas para mejorar el sitio web e investigar otros programas.
- El precio no varia mucho, pero el beneficio esta en la posibilidad de cambiar de servidor a uno que cuesta menos o que cueste más, dependiendo los requerimientos de tu web.
- Otro motivo fue la curiosidad, hace buen tiempo quería probar un VPS, así que ya esta.
El primer paso fue crear el servidor en DigitalOcean, para eso tuve que crear un cuenta individual en PayPal dado que mi tarjeta débito no lo soportaba. Se crean una cuenta en PayPal, que es fácil, pero solo demora para verificar la cuenta bancaria, en mi caso demoro unos 5 días, en su cuenta PayPal hay una opción verificar tarjeta, donde ingresan los datos de su tarjeta, una vez que envían, PayPal le hace un cobro de 1.9 dolares, esto me cobro en mi caso en Perú, pero este costo se le devolverá después. En su estado de cuenta de su tarjeta después de 5 días aparecerá en el detalle del cobro un código el cual tendrán que ingresar en su cuenta de PayPal en la opción verificar tarjeta, con este paso su cuenta ya estará validada y disponible para usarla.
Ahora crean una cuenta en DigitalOcean, una vez creado van a Billing y en Manage Payments escogen la opción de PayPal, esta opción les llevara a Paypal donde ingresan a su cuenta y confirmarán la compra.
Ahora ya podemos crear nuestro servidor, vamos a crear un Droplet, así lo llaman a un servidor VPS.
Ingresen el Hostname del servidor y seleccionen el tamaño de su servidor, según las características que deseen.
Ahora seleccionen en que región quieren que este su servidor.
Aquí seleccionan el sistema operativo que va ser su servidor y si desean algunas aplicaciones que se instalen por defecto.
Ahora hacen click en el botón Create Droplet, les debe quedar algo así.
Hasta aquí ya hemos creado nuestro servidor, el acceso al servidor nos llegará vía correo.
Ahora necesitamos instalar los programas a nuestro servidor, instalaremos lo básico Apache, PHP, MySql, Exim para el servidor de correo SMTP y lo configuraremos con Dovecot para los protocolos POP3 e IMAP, dovecot viene por defecto en Ubuntu. fail2ban para banear IP maliciosas.
Para ingresar lo haremos con el programa Putty.
Cuando ingresemos por primera vez nos pedirá cambiar la clave del root.
Ahora agregamos un nuevo usuario, porque no debemos usar el usuario root por seguridad.
adduser demo |
y agregamos al grupo de sudo
gpasswd -a demo sudo |
Ahora cambiamos el archivo
sudo nano /etc/ssh/sshd_config |
Es opcional
Port 2222 |
Cambiamos a no en:
PermitRootLogin no |
Con ctrl + o guardamos, enter para confirmar y con ctrl + x salimos del programa nano, ahora reiniciamos el servicio.
sudo service ssh restart |
Actualizamos el servidor.
sudo apt-get update sudo apt-get upgrade |
Instalamos apache
sudo apt-get install apache2 -y |
Después de instalar ingresan desde su navegador a http://ip_de_servidor
Instalamos MySql
sudo apt-get install mysql-server php5-mysql sudo mysql_install_db |
Luego para una instalación segura
sudo mysql_secure_installation |
Ahora instalamos PHP
sudo apt-get install php5 libapache2-mod-php5 php5-mcrypt |
Editamos
sudo nano /etc/apache2/mods-enabled/dir.conf |
Y cambiamos el orden en que Apache va leer el index.php.
<IfModule mod_dir.c> DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm </IfModule> |
sudo a2enmod rewrite headers expires sudo service apache2 restart |
Probamos que funcione el PHP
sudo nano /var/www/html/info.php |
<?php phpinfo(); ?> |
http://ip_del_servidor/info.php
Por seguridad borramos el archivo.
sudo rm /var/www/html/info.php |
Seguridad en apache y php
No mostrar la versión de apache en los mensajes de error.
sudo nano /etc/apache2/conf-available/security.conf |
ServerSignature Off |
sudo service apache2 restart |
sudo nano /etc/apache2/conf-available/security.conf |
ServerTokens Prod |
sudo nano /etc/php5/apache2/php.ini |
expose_php = Off |
sudo service apache2 restart |
Vamos a instalar fail2ban, este programa es para banear a IPs que estén tratando de aplicar fuerza bruta al acceso ssh.
sudo apt-get install fail2ban |
Configuramos fail2ban.
sudo vi /etc/fail2ban/jail.conf |
[ssh] enabled = true port = ssh filter = sshd logpath = /var/log/auth.log maxretry = 6 |
Instalamos PhpMyAdmin
sudo apt-get install phpmyadmin |
Comprobamos
http://ip_del_servidor/phpmyadmin
Aseguremos PhpMyAdmin
Cambiamos la url de acceso.
sudo nano /etc/phpmyadmin/apache.conf Alias /dbadmin253 /usr/share/phpmyadmin sudo service apache2 restart |
http://ip_del_servidor/dbadmin253
Ahora usemos un protocolo seguro.
sudo a2enmod ssl sudo service apache2 restart sudo mkdir /etc/apache2/ssl sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt sudo nano /etc/apache2/sites-available/default-ssl.conf |
SSLEngine on SSLCertificateFile /etc/apache2/ssl/apache.crt SSLCertificateKeyFile /etc/apache2/ssl/apache.key |
sudo a2ensite default-ssl sudo /etc/init.d/apache2 restart |
Forzando a https.
sudo nano /etc/phpmyadmin/config.inc.php |
$cfg['ForceSSL'] = true; |
Ya hemos instalado lo básico para que funcione nuestro blog, ahora vamos hacer un backup del WordPress de nuestro Hosting compartido y luego subirlo al VPS.
En el Hosting ingresamos al Administrador de Archivos.
Luego en la siguiente ventana seleccionamos todo los archivos de la carpeta public_html y comprimimos en formato backup.tar.gz y descargamos el archivo.
Para la base de datos ingresamos a phpMyAdmin.
Seleccionamos la base de datos y exportamos.
Ahora ingresamos a https://ip_del_servidor/dbadmin253
creamos una base de datos wordpress
ingresamos a la base de datos y creamos un nuevo usuario en la pestaña Privilegios, agregar nuevo usuario.
Ahora importamos la base de datos, seleccionamos el archivo y continuar.
Ahora tenemos que subir los archivos al servidor, lo vamos hacer con el programa WinSCP, descargamos e instalamos.
Ahora subimos el backup a la carpeta /var/www/html del servidor.
Primero cambiamos el propietario.
sudo chown -R demo:demo /var/www/html |
cd /var/www/html sudo rm index.html sudo tar -xzvf backup.tar.gz sudo rm backup.tar.gz |
Editamos
sudo nano /var/www/html/wp-config.php |
Cambiamos a los nuevos datos.
Si usan el plugin WP Super Cache.
define( 'WPCACHEHOME', '/var/www/html/wp-content/plugins/wp-super-cache/' ); define('DB_NAME', 'wordpress'); define('DB_USER', 'wordpress'); define('DB_PASSWORD', 'xxxxxxxx'); define('DB_HOST', 'localhost'); |
Cambiar los DNS
Ya hemos terminado configurar el servidor con el WordPress, ahora nos toca cambiar los DNS del dominio para que apunten a los DNS de DigitalOcean, si la administración de tu dominio esta en otro proveedor, cambia solo los DNS en tu panel de administración que apunten a:
ns1.digitalocean.com ns2.digitalocean.com ns3.digitalocean.com |
Transferir dominio
En mi caso yo he trasferido mi dominio a otro proveedor, para transferir tienes que desbloquear el dominio desde tu panel de dominio, luego debe haber una opción de código de transferencia, ese código le envías a tu nuevo proveedor de dominios y haces el pago por la transferencia y ellos se encargan de lo demás, debes estar al pendiente de las confirmaciones que te van a llegar a tu correo para que prosiga con la transferencia, en mi caso demoró unos 4 días.
Luego que ya este la transferencia, ingresa los DNS de DigitalOcean, la actualización debe tomar unos minutos, mientras debemos configurar en la cuenta de DigitalOcean los DNS para nuestro servidor.
En DNS agrega un dominio, ingresa el nombre del dominio, selecciona en el combo tu Droplet, al seleccionar el Droplet automáticamente aparece la ip de tu servidor.
Al crearlo debería quedar así.
Una vez que actualicen los DNS el blog ya debería estar funcionando en tu VPS.
Instalar el servidor de correo
Debo mencionar que no he podido hacer que funcione bien con hotmail, llegaban como span, pero de todos modos les dejo la configuración que hice:
Configurar los DNS, quedaría así.
Instalamos Exim
apt-get install exim4
dpkg-reconfigure exim4-config |
Respondemos a las preguntas.
internet site; mail is sent and received directly using SMTP (OK) Enter FQDN hostname.yourdomain.tld SMTP Listener 127.0.0.1; ::1; ip_del_servidor Al siguiente (ok) Mail Destinations mail.midominio.com; midominio.com; localhost.localdomain; localhost Relay Options (ok) Al siguiente (ok) DNS Queries (No) Delivery Method mbox Configuration File (No) |
Instalamos dovecot
Responder si crea certificado.
apt-get install dovecot-imapd dovecot-pop3d vim /etc/dovecot/conf.d/10-auth.conf |
disable_plaintext_auth = no |
vim /etc/dovecot/conf.d/10-mail.conf |
mail_location = mbox:~/mail:INBOX=/var/mail/%u |
Estas son las primeras configuraciones que tuve que hacer para migrar a un servidor VPS en DigitalOcean.