Cómo hacer una instalación de WordPress en Ubuntu con FTP y phpMyAdmin
A pesar de que FTP es un protocolo a evitar y considerado inseguro, para un proyecto he tenido que usarlo como vía de acceso a una instalación de WordPress en una máquina virtual (gestionada mediante Amazon Web Services) con Ubuntu. También le he instalado phpMyAdmin. Estos son los pasos que he seguido:
Nota: la instalación que queda al seguir los pasos es funcional, pero no tiene en cuenta varias cuestiones de seguridad que, en producción, es importante considerar. Es muy recomendable leer las referencias (al final del texto) para orientaciones más detalladas en torno a la seguridad.
- He actualizado la base de datos de apt para que se descarguen las versiones más nuevas y he instalado Apache:
sudo apt-get update sudo apt-get install apache2
- He instalado mysql:
sudo apt-get install mysql-server php5-mysql
y he ejecutado el script que genera los datos de estructura iniciales que mysql necesita para funcionar correctamente:
sudo mysql_install_db
- He instalado PHP junto con algunas librerías de manipulación de imágenes, seguridad, etcétera (se pueden localizar más librerías disponibles mediante
apt-cache search php5-
).sudo apt-get install php5 libapache2-mod-php5 php5-mcrypt php5-cli php5-gd php5-json php5-mysql php5-xmlrpc libphp5-embed php5-exactimage php5-imagick libssh2-php
- Luego he cargado el mod rewrite, un componente necesario para que WordPress pueda gestionar las URLs:
sudo a2enmod rewrite sudo service apache2 restart
para que mod rewrite haga caso de las instrucciones del
.htaccess
de WordPress hay que hacer lo siguiente:Editar el archivo del virtual host por defecto
sudo nano /etc/apache2/sites-available/000-default.conf
Localizar
DocumentRoot /var/www/html
y ahí añadir lo que sigue. En caso de que no aparezca en el archivo, simplemente añadir las siguientes líneas al final del mismo:<Directory "/var/www/html"> AllowOverride All </Directory>
Finalmente hay que reiniciar Apache para que los cambios tengan efecto:
sudo service apache2 restart
- El siguiente paso es crear una base de datos para WordPress:
mysql -u root -p CREATE DATABASE wordpress; CREATE USER wordpressuser@localhost IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON wordpress.* TO wordpressuser@localhost; FLUSH PRIVILEGES; exit
En el primer comando, la contraseña que pide es la contraseña de administración de la base de datos introducida en el paso 2. En esta secuencia,
wordpress
es el nombre de la base de datos;wordpressuser
, el nombre del usuario ypassword
, la contraseña. - Ahora hay que descargar WordPress, descomprimirlo y acceder a la carpeta que se crea tras descomprimir el archivo:
cd ~ wget http://wordpress.org/latest.tar.gz tar xzvf latest.tar.gz cd ~/wordpress
- Tras eso hay que crear el archivo
wp-config.php
, que contiene los datos de conexión con la base de datos y otras configuraciones de WordPress. Lo edito mediante nano y cambio los valores deDB_NAME
,DB_USER
yDB_PASSWORD
por los introducidos en el punto 5.cp wp-config-sample.php wp-config.php nano wp-config.php
- Una vez hecho esto, falta copiar los archivos a la ruta del directorio inicial que apache toma en consideración, que en Ubuntu es
/var/www/html/
, y darle la propiedad de esta carpeta y todos sus contenidos al usuario www-data del grupo www-data, que es el usuario con el que se ejecuta por defecto Apache en Ubuntu.sudo rsync -avP ~/wordpress/ /var/www/html/ sudo chown -R www-data:www-data /var/www
- WordPress ya está listo, lo que procede ahora es configurar el servidor FTP. Para ello hay que instalar el paquete vsftpd:
sudo apt-get install vsftpd
- Siguiente paso: configurarlo para que permita subir archivos, renombrarlos y sobreescribirlos:
sudo nano /etc/vsftpd.conf
En ese archivo de configuración hay que:
- Cambiar el
anonymous_enable=YES
aanonymous_enable=NO
(en caso de que no esté así ya por defecto) y asegurarse de que la línea no tiene una almoadilla inicial (#), es decir, descomentarla. - Descomentar (sacar la almohadilla inicial) las líneas pertinentes correspondientes a los valores
local_enable=YES
,write_enable=YES
,chroot_local_user=YES
yallow_writeable_chroot=YES
. En caso de que el archivo no disponga de alguna de estas líneas, ni comentadas con almohadilla inicial ni sin comentar, se puede crear una línea para cada valor al final del archivo, así:local_enable=YES write_enable=YES chroot_local_user=YES allow_writeable_chroot=YES
(Es importante comprobar que no haya valores duplicados, porque pueden causar problemas.)
- Reinicio
vsftpd
para que los cambios surtan efecto:sudo service vsftpd restart
- Cambiar el
- Ahora hay que crear un grupo para los usuarios con acceso FTP, un usuario para poder acceder por FTP y asignarle una contraseña y darle los permisos apropiados a su carpeta:
sudo groupadd ftp-users sudo mkdir /home/ftpuser sudo useradd --home /home/ftpuser --group ftp-users --shell /bin/bash ftpuser sudo passwd ftpuser chmod -Rf 770 /home/ftpuser
- Tras eso debe instalarse y configurarse
bindfs
. Para mayor detalle sobre qué hace este paquete y por qué es importante, véase Solving the web file permissions problem once and for all.sudo apt-get -y install bindfs sudo chown -Rf ftpuser:ftp-users /home/ftpuser
- Edito
/etc/fstab
para que se monte en la carpeta raíz del usuarioftpuser
el directorio que contiene los archivos de wordpress (es decir/var/www/html
) y cambie el propietario de cualquier modificación awww-data
.
Para abrir el editor:sudo nano /etc/fstab
En ese archivo, hay que incluir como última línea:
bindfs#/var/www/html /home/ftpuser fuse force-user=ftpuser,force-group=ftp-users,create-for-user=www-data,create-for-group=www-data,create-with-perms=0770,chgrp-ignore,chown-ignore,chmod-ignore 0 0
Ya se puede montar mediante el nuevo punto de montaje:
sudo mount /home/ftpuser
- A este punto ya debería funcionar el FTP mediante los siguientes datos:
Host: la URL o IP del servidor
Usuario: ftpuser
Contraseña: la asignada en el paso 11
Port: 21
El modo pasivo debe estar desactivado - Ya solo falta instalar phpMyAdmin, que necesita que el módulo
mcrypt
de PHP esté activo y, al término de dar todas estas instrucciones, hay que reiniciar apache para que los cambios tengan efecto:sudo apt-get install phpmyadmin sudo php5enmod mcrypt sudo service apache2 restart
Con esto phpMyAdmin debería estar disponible en añadiendo
/phpmyadmin
a la URL o la IP del servidor.
Referencias
- How To Install Linux, Apache, MySQL, PHP (LAMP) stack on Ubuntu 14.04
- How To Install WordPress on Ubuntu 14.04
- How To Set Up vsftpd on Ubuntu 12.04
- How do I enable WordPress to update itself through its back end?
- Solving the web file permissions problem once and for all
- VSFTPD Installation & Setup on Ubuntu
- Fixing 500 OOPS: vsftpd: refusing to run with writable root inside chroot()
- How to enable mod_rewrite in Ubuntu 14.04 LTS
- How To Install and Secure phpMyAdmin on Ubuntu 14.04