Introducción
En este momento, WordPress es el CMS (sistema de gestión de contenido) más popular en Internet. Te permite configurar fácilmente blogs y sitios web flexibles en la parte alta de un servidor MySQL con procesamiento PHP. WordPress ha tenido una adopción increíble y es una excelente opción para poner en marcha un sitio web rápidamente.
En esta guía, nos centraremos en configurar una instancia de WordPress con un servidor web Apache en Ubuntu.
Prerrequisitos
Antes de comenzar esta guía, hay algunos pasos importantes que debes completar en tu servidor.
Continuaremos con estos pasos como un usuario no root con privilegios de sudo, por lo que deberás tener uno disponible. Puedes descubrir cómo crear un usuario con privilegios de sudo siguiendo los pasos de algún tutorial en línea
Además, deberás tener un conjunto LAMP (Linux, Apache, MySQL y PHP) instalado en tu instancia de VPS. Si aún no tienes estos componentes instalados y configurados, puedes usar esta guía para aprender a instalar LAMP en Ubuntu.
Cuando hayas terminado con estos pasos, puedes continuar con esta guía.
Paso uno: crear una base de datos MySQL y un usuario para WordPress
El primer paso que daremos es el preparatorio. WordPress utiliza una base de datos relacional para administrar y almacenar información del sitio y del usuario.
Tenemos instalado MySQL, que puede proporcionar esta funcionalidad, pero necesitamos hacer una base de datos y un usuario para que WordPress trabaje.
Para comenzar, inicia sesión en la cuenta root (administrativa) de MySQL emitiendo este comando:
1 |
mysql -u root -p |
Se te solicitará la contraseña que configuraste para la cuenta root de MySQL cuando instalaste el software. A continuación, se te dará un indicador de comando de MySQL.
Base de datos
Primero, podemos crear una base de datos separada que WordPress puede controlar. Puedes llamar a esto como quieras, pero lo llamaré wordpress porque es descriptivo y simple. Ingresa este comando para crear la base de datos:
1 |
CREATE DATABASE wordpress; |
Cada declaración de MySQL debe terminar en un punto y coma (;), así que verifica que esté presente si te encuentras con algún problema.
A continuación, vamos a crear una cuenta de usuario MySQL separada que usaremos exclusivamente para operar en nuestra nueva base de datos. Crear cuentas y bases de datos de una sola función es una buena idea desde el punto de vista de la administración y la seguridad.
Vamos a llamar a la nueva cuenta que estamos creando wordpressuser y le asignaremos una contraseña password. Definitivamente, deberías cambiar la contraseña de tu instalación y puedes nombrar al usuario como quieras. Este es el comando que necesitas para crear el usuario:
1 |
CREATE USER wordpressuser@localhost IDENTIFIED BY 'password'; |
En este punto, tienes una base de datos y una cuenta de usuario, cada una hecha específicamente para WordPress. Sin embargo, estos dos componentes todavía no tienen relación. El usuario no tiene acceso a la base de datos.
Corrigamos eso otorgando a nuestra cuenta de usuario acceso a nuestra base de datos con este comando:
1 |
GRANT ALL PRIVILEGES ON wordpress.* TO wordpressuser@localhost; |
Ahora el usuario tiene acceso a la base de datos. Necesitamos eliminar los privilegios para que la instancia actual de MySQL conozca los cambios recientes de privilegios que hemos realizado:
1 |
FLUSH PRIVILEGES; |
Ya estamos listos. Podemos salir del indicador de MySQL escribiendo:
1 |
exit |
Ahora deberías volver a tu línea de comandos habitual.
Paso Dos – Descargar WordPress
A continuación, descargaremos los archivos de WordPress reales del sitio web del proyecto.
Afortunadamente, el equipo de WordPress siempre vincula la versión estable más reciente de su software con la misma URL, para que podamos obtener la versión más actualizada de WordPress al escribir esto:
1 2 |
cd ~ wget http://wordpress.org/latest.tar.gz |
Esto descargará un archivo comprimido que contiene el contenido del directorio archivado de los archivos de WordPress a nuestro directorio principal.
Podemos extraer los archivos para reconstruir el directorio de WordPress que necesitamos escribiendo:
1 |
tar xzvf latest.tar.gz |
Esto creará un directorio llamado wordpress en tu directorio de inicio.
Mientras estamos descargando cosas, también deberíamos obtener algunos paquetes más que necesitamos. Podemos obtenerlos directamente de los repositorios predeterminados de Ubuntu después de actualizar nuestro índice de paquete local:
1 2 |
sudo apt-get update sudo apt-get install php5-gd libssh2-php |
Esto te permitirá trabajar con imágenes y también te permitirá instalar complementos y actualizar partes de tu sitio utilizando tus credenciales de inicio de sesión de SSH.
Paso Tres – Configurar WordPress
La mayor parte de la configuración que haremos será a través de una interfaz web más adelante. Sin embargo, necesitamos hacer algún trabajo desde la línea de comandos antes de que podamos ponerlo en marcha.
Comienza por pasar al directorio de WordPress que acabas de desempaquetar:
1 |
cd ~/wordpress |
Se incluye por defecto un archivo de configuración de muestra que coincide principalmente con la configuración que necesitamos. Sin embargo, debemos copiarlo en la ubicación predeterminada del archivo de configuración para que WordPress reconozca el archivo. Haz eso ahora escribiendo:
1 |
cp wp-config-sample.php wp-config.php |
Ahora que tenemos un archivo de configuración para trabajar, podemos generar algunas claves secretas que ayudan a asegurar la instalación. WordPress proporciona un generador seguro para estos valores para que no tengas que intentar obtener buenos valores por tu cuenta. Estos solo se usan internamente, por lo que no perjudicará la facilidad de uso para tener valores complejos y seguros aquí.
Para tomar valores seguros del generador de claves secretas de WordPress, escribe:
1 |
curl -s https://api.wordpress.org/secret-key/1.1/salt/ |
Obtendrás valores únicos que se ven así:
¡Advertencia!
Es importante que solicites valores únicos cada vez. ¡NO copies los valores que se muestran a continuación!
1 2 3 4 5 6 7 8 9 |
Output define('AUTH_KEY', '1jl/vqfs<XhdXoAPz9 DO NOT COPY THESE VALUES c_j{iwqD^<+c9.k<J@4H'); define('SECURE_AUTH_KEY', 'E2N-h2]Dcvp+aS/p7X DO NOT COPY THESE VALUES {Ka(f;rv?Pxf})CgLi-3'); define('LOGGED_IN_KEY', 'W(50,{W^,OPB%PB<JF DO NOT COPY THESE VALUES 2;y&,2m%3]R6DUth[;88'); define('NONCE_KEY', 'll,4UC)7ua+8<!4VM+ DO NOT COPY THESE VALUES #`DXF+[$atzM7 o^-C7g'); define('AUTH_SALT', 'koMrurzOA+|L_lG}kf DO NOT COPY THESE VALUES 07VC*Lj*lD&?3w!BT#-'); define('SECURE_AUTH_SALT', 'p32*p,]z%LZ+pAu:VY DO NOT COPY THESE VALUES C-?y+K0DK_+F|0h{!_xY'); define('LOGGED_IN_SALT', 'i^/G2W7!-1H2OQ+t$3 DO NOT COPY THESE VALUES t6**bRVFSD[Hi])-qS`|'); define('NONCE_SALT', 'Q6]U:K?j4L%Z]}h^q7 DO NOT COPY THESE VALUES 1% ^qUswWgn+6&xqHN&%'); |
Estas son líneas de configuración que podemos pegar directamente en nuestro archivo de configuración para establecer claves seguras. Copia la salida que obtuviste ahora.
A continuación, vamos a abrir el archivo de configuración en un editor de texto:
1 |
nano wp-config.php |
Busca la sección que contiene los valores ficticios para esas configuraciones. Se verá algo como esto:
1 2 3 4 5 6 7 8 9 10 |
. . . #define('AUTH_KEY', 'put your unique phrase here'); #define('SECURE_AUTH_KEY', 'put your unique phrase here'); #define('LOGGED_IN_KEY', 'put your unique phrase here'); #define('NONCE_KEY', 'put your unique phrase here'); #define('AUTH_SALT', 'put your unique phrase here'); #define('SECURE_AUTH_SALT', 'put your unique phrase here'); #define('LOGGED_IN_SALT', 'put your unique phrase here'); #define('NONCE_SALT', 'put your unique phrase here'); . . . |
Borra esas líneas y pega los valores que copiaste de la línea de comando:
1 |
/var/www/html/wp-config.php |
1 2 3 4 5 6 7 8 9 10 11 12 |
. . . define('AUTH_KEY', 'VALUES COPIED FROM THE COMMAND LINE'); define('SECURE_AUTH_KEY', 'VALUES COPIED FROM THE COMMAND LINE'); define('LOGGED_IN_KEY', 'VALUES COPIED FROM THE COMMAND LINE'); define('NONCE_KEY', 'VALUES COPIED FROM THE COMMAND LINE'); define('AUTH_SALT', 'VALUES COPIED FROM THE COMMAND LINE'); define('SECURE_AUTH_SALT', 'VALUES COPIED FROM THE COMMAND LINE'); define('LOGGED_IN_SALT', 'VALUES COPIED FROM THE COMMAND LINE'); define('NONCE_SALT', 'VALUES COPIED FROM THE COMMAND LINE'); . . . |
Después de eso, las únicas modificaciones que debemos hacer son los parámetros que contienen la información de nuestra base de datos.
Tendremos que encontrar la configuración de DB_NAME, DB_USER y DB_PASSWORD para que WordPress se conecte y autentique correctamente a la base de datos que creamos.
Completa los valores de estos parámetros con la información de la base de datos que creaste. Debe tener un aspecto como este:
1 2 3 4 5 6 7 8 9 |
// ** MySQL settings - You can get this info from your web host ** // /** The name of the database for WordPress */ define('DB_NAME', 'wordpress'); /** MySQL database username */ define('DB_USER', 'wordpressuser'); /** MySQL database password */ define('DB_PASSWORD', 'password'); |
Estos son los únicos valores que necesitas cambiar.
Cuando hayas terminado, guarda y cierra el archivo.
Paso cuatro – Copiar los archivos a la raíz del documento
Ahora que tenemos nuestra aplicación configurada, debemos copiarla en la raíz de documentos de Apache, donde se puede mostrar a los visitantes de nuestro sitio web.
Una de las formas más fáciles y confiables de transferir archivos de un directorio a otro es con el comando rsync. Esto preserva los permisos y tiene buenas características de integridad de datos.
La ubicación de la raíz del documento en la guía LAMP de Ubuntu es /var/www/html/. Podemos transferir nuestros archivos de WordPress allí escribiendo:
1 |
sudo rsync -avP ~/wordpress/ /var/www/html/ |
Esto copiará de forma segura todos los contenidos del directorio que desempaquetaste en la raíz del documento.
Ahora debes pasarte a la raíz del documento para realizar algunos cambios de permisos finales
1 |
cd /var/www/html |
Propiedades
Deberás cambiar la propiedad de nuestros archivos para aumentar la seguridad.
Queremos otorgarle la propiedad al usuario regular, no root (con privilegios sudo) que planeas usar para interactuar con tu sitio. Este puede ser tu usuario habitual si lo deseas, pero algunos pueden sugerirte que crees un usuario adicional para este proceso. Depende de ti lo que elijas.
Para esta guía, usaremos la misma cuenta que configuramos durante la guía de configuración inicial del servidor, a la que llamamos demo. Esta es la cuenta en la que estamos realizando todas las acciones de esta guía.
La propiedad del grupo que le daremos a nuestro proceso de servidor web, es www-data. Esto permitirá que Apache interactúe con el contenido según sea necesario.
Podemos asignar rápidamente estos valores de propiedad escribiendo:
1 |
sudo chown -R demo:www-data * |
Esto configurará las pertenencias de propiedad que estamos buscando.
Mientras nos ocupamos de la propiedad y los permisos, también deberíamos considerar asignar la propiedad correcta en nuestro directorio de subidas. Esto nos permitirá subir imágenes y otro contenido a nuestro sitio. Actualmente, los permisos son demasiado restrictivos.
Primero, crearemos manualmente el directorio uploads debajo del directorio wp-content en nuestra raíz de documentos. Este será el directorio padre de nuestro contenido:
1 |
mkdir /var/www/html/wp-content/uploads |
Ahora tenemos un directorio para alojar los archivos cargados, sin embargo, los permisos son todavía demasiado restrictivos. Necesitamos permitir que el propio servidor web escriba en este directorio. Podemos hacer esto asignando la propiedad de grupo de este directorio a nuestro servidor web, de esta manera:
1 |
sudo chown -R :www-data /var/www/html/wp-content/uploads |
Esto permitirá que el servidor web cree archivos y directorios bajo este directorio, lo que nos permitirá cargar contenido en el servidor.
Paso cinco – Instalación completa a través de la interfaz web
Ahora que tienes tus archivos en su lugar y tu software está configurado, puedes completar la instalación a través de la interfaz web.
En tu navegador web, navega hasta el nombre de dominio o la dirección IP pública de tu servidor:
1 |
http: // server_domain_name_or_IP |
Verás la página de configuración inicial de WordPress, donde crearás una cuenta de administrador inicial:
Completa la información del sitio y la cuenta administrativa que deseas realizar. Cuando hayas terminado, has clic en el botón de instalación en la parte inferior.
WordPress confirmará la instalación y luego te pedirá que inicies sesión con la cuenta que acabas de crear:
Presiona el botón en la parte inferior y luego completa la información de tu cuenta:
Se te presentará la interfaz de WordPress:
Paso seis (opcional): configurar Pretty Permalinks para WordPress
De forma predeterminada, WordPress crea URL’s dinámicamente que se parecen a esto:
1 |
http://server_domain_name_or_IP/?p=1 |
Esta no es exactamente la interfaz más útil para los visitantes o los motores de búsqueda, por lo que la mayoría de los usuarios quieren modificar esto. WordPress tiene la capacidad de crear permalinks “pretty” que limpiarán la URL en un formato más amigable para el ser humano.
Hay algunas cosas que debemos hacer para que esto funcione con Apache en Ubuntu
Modificar Apache para permitir la reescritura de URL
Primero, debemos modificar el archivo de host virtual de Apache para WordPress para permitir anulaciones .htaccess. Puedes hacer esto editando el archivo de host virtual.
Por defecto, este es 000-default.conf, pero tu archivo podría ser diferente si creaste otro archivo de configuración:
1 |
sudo nano /etc/apache2/sites-available/000-default.conf |
Dentro de este archivo, queremos configurar algunas cosas. Deberíamos establecer la sección ServerName y crear una sección de directorio donde permitamos anulaciones. Esto debería verse algo como esto:
1 2 3 4 5 6 7 8 |
<VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /var/www/html ServerName server_domain_name_or_IP <Directory /var/www/html/> AllowOverride All </Directory> . . . |
Cuando hayas terminado, guarda y cierra el archivo.
A continuación, debemos habilitar el módulo de reescritura, que te permite modificar las URL’s. Tú puedes hacer esto escribiendo:
1 |
sudo a2enmod rewrite |
Después de realizar estos cambios, reinicia Apache:
1 |
sudo service apache2 restart |
Crear un archivo .htaccess
Ahora que Apache está configurado para permitir reescrituras a través de archivos .htaccess, necesitamos crear un archivo real.
Necesitas colocar este archivo en la raíz de tu documento. Escribe lo siguiente para crear un archivo vacío:
1 |
touch /var/www/html/.htaccess |
Esto se creará con tu nombre de usuario y grupo de usuarios. Sin embargo, necesitamos que el servidor web sea el propietario del grupo, por lo que debemos ajustar la propiedad escribiendo:
1 |
sudo chown :www-data /var/www/html/.htaccess |
Ahora tenemos la propiedad correcta de este archivo.
Sin embargo, es posible que tengamos que ajustar los permisos. Esto depende de cómo prefieras trabajar. WordPress generará las reglas de reescritura necesarias para ti. Si tienes permisos de escritura para este archivo, puedes implementar las reglas automáticamente. Si no lo haces, tendrás que editar manualmente este archivo para agregar las reglas correctas.
La configuración que elijas dependerá de cuánto valores la comodidad sobre la seguridad. Permitir el acceso de escritura del servidor web a este archivo definitivamente será más conveniente, pero algunos dicen que es un riesgo de seguridad innecesario.
Si deseas que WordPress actualice automáticamente este archivo con reglas de reescritura, puedes asegurarte de que tiense los permisos correctos para hacerlo escribiendo:
1 |
chmod 664 /var/www/html/.htaccess |
Si deseas actualizar este archivo manualmente por una pequeña ganancia de seguridad, puedes permitir que el servidor web solo lea los privilegios escribiendo:
1 |
chmod 644 /var/www/html/.htaccess |
Cambiar la configuración de Permalink en WordPress
Cuando hayas terminado de hacer los cambios del lado del servidor, puedes ajustar fácilmente la configuración del enlace permanente a través de la interfaz de administración de WordPress.
En el lado izquierdo, debajo del menú Settings, puedes seleccionar Permalinks:
Puedes elegir cualquiera de las configuraciones preconfiguradas para organizar las URL’s, o puedes crear la tuya propia.
Cuando hayas realizado tu selección, has clic en “Guardar cambios” para generar las reglas de reescritura.
Si permitiste que el servidor web tenga acceso de escritura a tu archivo .htaccess, deberías ver un mensaje como este:
Si no permitiste el acceso de escritura del servidor web a tu archivo .htaccess, se te proporcionarán las reglas de reescritura que debes agregar al archivo manualmente.
Copia las líneas que te da WordPress y luego edita el archivo en tu servidor:
1 |
nano /var/www/html/.htaccess |
Esto debería darte la misma funcionalidad.
Conclusión
Ahora deberías tener una instancia de WordPress en funcionamiento en tu VPS de Ubuntu. Hay muchas opciones que puedes tomar desde aquí.