Introducción
WordPress es el sistema de gestión de contenido (CMS) más popular del mundo. Te permite tener fácilmente tu sitio o blog en funcionamiento. Después de la instalación, puedes administrar casi todo en una interfaz web muy fácil.
En esta guía, veremos cómo instalar WordPress en un servidor Ubuntu. Para el componente de servidor web, usaremos nginx, un servidor web potente y eficiente que ha sido ampliamente adoptado debido a sus capacidades de rendimiento.
Prerrequisitos
Antes de comenzar con esta guía, hay algunos procedimientos que debes realizar.
Primero, necesitarás un usuario no root con privilegios sudo.
También necesitará un conjunto LEMP (sistema operativo Linux, servidor web Nginx, base de datos MySQL y procesamiento PHP) instalado y configurado en tu servidor. Puedes aprender cómo instalar y configurar los componentes necesarios siguiendo nuestra guía para instalar un conjunto LEMP en Ubuntu aquí.
Cuando hayas terminado con los pasos anteriores, puedes continuar.
Paso uno: crear una base de datos MySQL y un usuario para WordPress
Lo primero que debemos hacer para comenzar con WordPress es preparar nuestra base de datos.
Tenemos instalado el software de base de datos MySQL, pero no hemos creado una base de datos para nuestra información de WordPress. También debemos crear una cuenta que WordPress pueda usar para acceder a la base de datos que crearemos.
Deberíamos comenzar iniciando sesión en una sesión interactiva con nuestra cuenta administrativa de MySQL de esta manera:
1 |
mysql -u root -p |
Se te solicitará la contraseña que elegiste para la cuenta root de MySQL cuando instalaste el software. Se te mostrará un indicador de comando de MySQL.
Base de datos
Ahora, podemos crear una base de datos separada que será utilizada exclusivamente por nuestra aplicación WordPress. El nombre no es importante, pero probablemente debería ser descriptivo para que puedas reconocerla fácilmente. En esta guía, llamaremos a nuestra base de datos wordpress:
1 |
CREATE DATABASE wordpress; |
Ten en cuenta el punto y coma (;) en que termina la sentencia MySQL. Cada sentencia de MySQL debe terminar con una, por lo tanto, comprueba que no tengas problemas.
Ahora tenemos una base de datos, por lo que estamos listos para crear una cuenta de usuario. Luego entregaremos el control de la base de datos a este nuevo usuario para que nuestra aplicación pueda interactuar con la base de datos. Este sistema de creación de una base de datos y un usuario separados para cada aplicación ayuda a mantener nuestros datos separados de otros datos almacenados por MySQL, lo que es bueno para la seguridad y la administración de datos.
Para esta guía, usaremos wordpressuser como el nombre del usuario de la cuenta. Le asignaremos una contraseña password para autenticarnos. Cuando estés configurando tus propios ajustes, debes seleccionar una contraseña más segura:
1 |
CREATE USER wordpressuser@localhost IDENTIFIED BY 'password'; |
Ahora, tenemos una base de datos y un usuario, pero aún no hemos establecido una relación entre los dos. Necesitamos decirle a MySQL que nuestro nuevo usuario puede acceder y controlar la base de datos. Puedes hacer eso con este comando:
1 |
GRANT ALL PRIVILEGES ON wordpress.* TO wordpressuser@localhost; |
Todo debería estar configurado correctamente ahora. Necesitamos descargar los privilegios en el disco para que nuestra instancia actual de MySQL conozca los cambios de privilegios que hemos realizado:
1 |
FLUSH PRIVILEGES; |
Ahora, sal del indicador de MySQL:
1 |
exit |
Ahora estamos de vuelta en nuestra línea de comandos, listos para seguir adelante.
Paso Dos – Descarga WordPress a tu Servidor
A continuación, debemos descargar el contenido actual de WordPress en nuestro servidor. Esto está disponible en el sitio web de WordPress.
La última versión estable de la aplicación siempre está en la misma URL, lo que facilita esta parte. Queremos descargar el archivo al directorio de inicio de nuestro usuario:
1 2 |
cd ~ wget http://wordpress.org/latest.tar.gz |
Nuestros archivos de aplicación se han descargado como una estructura de directorio comprimida y archivada almacenada en un archivo llamado latest.tar.gz. Podemos extraer los contenidos escribiendo:
1 |
tar xzvf latest.tar.gz |
Esto creará un directorio llamado wordpress que contiene los archivos del sitio.
Debemos aprovechar esta oportunidad para descargar algunos componentes adicionales que necesitará nuestra instancia de WordPress. Podemos obtener estos directamente desde los repositorios de software de Ubuntu usando apt:
1 2 |
sudo apt-get update sudo apt-get install php5-gd libssh2-php |
Estos dos paquetes te permiten trabajar con imágenes e instalar/actualizar complementos y componentes utilizando SSH respectivamente.
Paso Tres – Configurar WordPress
Tenemos los archivos ahora, por lo que podemos comenzar a configurar nuestra instancia de WordPress.
Necesitamos modificar el archivo de configuración principal ubicado en nuestro nuevo directorio. Ve al directorio que extrajiste en la última sección:
1 |
cd ~/wordpress |
Dentro de este directorio, tenemos un archivo de configuración de ejemplo llamado wp-config-sample.php. Esto tiene la mayoría de los detalles de configuración correctos, por lo que podemos copiarlos para usarlos como base de nuestro archivo de configuración:
1 |
cp wp-config-sample.php wp-config.php |
Cuando abramos el archivo, nuestra primera tarea será ajustar algunas claves secretas para proporcionar algo de seguridad para nuestra 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 recibiste ahora.
Ahora, abre el archivo de configuración de WordPress:
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 11 12 13 |
/var/www/html/wp-config.php . . . 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'); . . . |
Valores
Borra esas líneas y pega los valores que copiaste de la línea de comandos:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
/var/www/html/wp-config.php . . . 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'); . . . |
El archivo ahora es adecuado para nuestras necesidades; solo falta la información para conectarse a la base de datos que creamos. Los parámetros que necesitamos para establecer la conexión son DB_NAME, DB_USER y DB_PASSWORD.
Podemos encontrar estos parámetros en este archivo y configurarlos para usar la base de datos y los detalles del usuario que creamos. Mi archivo se ve así:
1 2 3 4 5 6 7 8 9 10 11 |
. . . // ** 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'); . . . |
Cuando hayas realizado los cambios anteriores, guarda y cierra el archivo.
Paso cuatro – Copiar los archivos a la raíz del documento
Tenemos nuestros cambios en nuestros archivos de configuración. El siguiente paso es copiarlos en nuestra raíz de documentos para que nuestro servidor web pueda encontrarlos y mostrarlos.
Usaremos la utilidad rsync para realizar la transferencia. Esto tiene la ventaja de preservar los permisos, la propiedad y garantizar la integridad de los datos.
La ubicación de la raíz predeterminada del documento de nginx en Ubuntu es /usr/share/nginx/html/.
Sin embargo, vamos a configurar nuestra raíz de documentos /var/www/html/ para evitar modificar una ubicación de directorio controlada por el paquete nginx. Vamos a cambiar esto en nuestra configuración nginx un poco más tarde.
Podemos crear el nuevo directorio raíz de documentos escribiendo:
1 |
sudo mkdir -p /var/www/html |
Copiar archivos
Ahora, podemos copiar los archivos a esta ubicación escribiendo:
1 |
sudo rsync -avP ~/wordpress/ /var/www/html/ |
Esto copiará recursivamente los contenidos de nuestro directorio ~/wordpress en nuestra raíz de documentos.
A continuación, vamos a la raíz del documento para que podamos ajustar algunos permisos:
1 |
cd /var/www/html/ |
El problema con la estructura de directorios actual es que todos nuestros archivos tienen propiedad de usuario y grupo asignada a nuestro usuario habitual. Esto está bien, excepto que nuestro servidor web necesita poder modificar ciertos directorios y archivos.
Podemos otorgar este permiso sin exponer demasiado nuestro sistema si le damos al grupo que nuestro servidor web se ejecuta bajo la propiedad grupal de los archivos. Entonces podemos abrir los permisos de grupo ligeramente según sea necesario.
El grupo bajo el cual opera nginx es www-data. Para la porción de usuario, ingresa tu nombre de cuenta de usuario. Vamos a demostrar con una cuenta llamada demo aquí:
1 |
sudo chown -R demo:www-data /var/www/html/* |
Esto le dará a nuestros archivos la propiedad necesaria.
Antes de continuar, debemos crear un nuevo directorio para las subidas de usuarios:
1 |
mkdir wp-content/uploads |
El nuevo directorio ya debe tener un conjunto de escritura de grupo, pero el nuevo directorio aún no tiene asignada la propiedad www-data del grupo. Vamos a arreglar eso:
1 |
sudo chown -R :www-data /var/www/html/wp-content/uploads |
Paso Cinco – Modificar Server Blocks de Nginx
Tenemos nuestros archivos y directorios configurados. Ahora necesitamos modificar nuestra configuración nginx para mostrar el contenido correctamente.
Podemos usar Server Blocks de nginx predeterminado como base para nuestro nuevo bloque de servidor. Cópialo de esta manera:
1 |
sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/wordpress |
Abre el nuevo archivo que hicimos para que podamos hacer algunos cambios:
1 |
sudo nano /etc/nginx/sites-available/wordpress |
Queremos hacer los siguientes cambios:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
server { listen 80 default_server; listen [::]:80 default_server ipv6only=on; root /var/www/html; index index.php index.html index.htm; server_name your_domain.com; location / { # try_files $uri $uri/ =404; try_files $uri $uri/ /index.php?q=$uri&$args; } error_page 404 /404.html; error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; include fastcgi_params; } } |
Un resumen de los cambios que debes hacer:
- Cambiar el valor de la directiva root para que apunte a nuestra nueva raíz de documentos en /var/www/html.
- Modificar el parámetro index para buscar un archivo index.php antes que los otros archivos.
- Cambia el valor de la directiva server_name para que apunte al nombre de dominio o la dirección IP de tu servidor.
- Ajustar dentro try_files del bloque location/ para enviar solicitudes a PHP cuando no coincidan exactamente.
Algunos de estos ya podrían estar configurados desde tu instalación de LEMP. Cuando hayas terminado con estos cambios, guarda y cierra el archivo.
Necesitamos vincular nuestro nuevo archivo al directorio sites-enabled para activarlo. Podemos hacer eso así:
1 |
sudo ln -s /etc/nginx/sites-available/wordpress /etc/nginx/sites-enabled/ |
El archivo que acabamos de vincular está en conflicto con nuestro archivo predeterminado anterior, ya que tomaste mucho de él. Necesitamos deshabilitar el archivo antiguo:
1 |
sudo rm /etc/nginx/sites-enabled/default |
Ahora, reinicia el servidor web y el procesador PHP para habilitar nuestros cambios:
1 2 |
sudo service nginx restart sudo service php5-fpm restart |
Paso Seis – Completar la Instalación a través de la Interfaz Web
Ahora, nuestro WordPress está listo para funcionar y podemos finalizar la instalación a través de nuestro navegador web.
Escribe en tu navegador al nombre de dominio o la dirección IP de tu servidor, de esta manera:
1 |
http://your_domain.com |
Si esto muestra tu antigua página nginx predeterminada, es posible que debas actualizar la página sin el caché.
Verás la etapa básica de bienvenida de WordPress. Elije tus opciones (nombre del sitio, nombre de usuario, contraseña y correo electrónico) y luego has clic en el botón “Instalar WordPress”:
Tendrás que iniciar sesión con la cuenta que acabas de crear:
Se te presentará tu panel de WordPress, donde puedes comenzar a personalizar tu configuración y crear contenido:
Conclusión
Ahora debería tener tu instancia de WordPress en funcionamiento en un servidor web nginx en Ubuntu. WordPress es una plataforma bastante flexible que puedes utilizar para personalizar tu sitio. Experimenta con algunos complementos, temas, etc. diferentes para descubrir qué funciona mejor para ti.