Entre los sistemas de gestión de contenidos (CMS) más populares y usados de todo internet encontramos a WordPress. En el presente artículo explicaremos el proceso de instalación de WordPress desde cero y paso a paso en un servidor privado virtual (VPS) desde la terminal de comandos forma rápida y sencilla.
Requisitos para seguir esta guía
¿Qué es un VPS?
VPS: Virtual Private Server o en español, Servidor privado virtual, en términos simples, un servidor virtual en al cual disponemos de acceso administrativo completo por ssh. En la mayoría de los servicios que se brindan en internet de este tipo, son máquinas virtuales conocidas como instancias.
¿Qué es LAMP?
LAMP: es una pila de soporte para aplicaciones conformada por Linux, Apache, MySQL y PHP, aunque existen otras como WAMP, LEMP, WEMP, LAPP y muchas más. En esta guía usaremos LAMP por ser la más popular en todos los servicios de hospedaje web (web hosting) para WordPress en internet.
Lo primero es acceder al servidor usando SSH u otra vía que de acceso a la shell de comandos. Una vez dentro del servidor para comenzar a preparar el entorno del despliegue, el primer paso es verificar que el servidor linux disponga de los repositorios de software debidamente configurados. En nuestro caso como estamos usando Ubuntu 20.04, usando las siguientes líneas de configuración en el archivo
/etc/apt/sources.list
#--- Repositorios oficiales en internet de Ubuntu 20.04 (Focal) ---
deb http://archive.ubuntu.com/ubuntu focal main universe multiverse restricted
deb http://archive.ubuntu.com/ubuntu focal-security main universe multiverse restricted
deb http://archive.ubuntu.com/ubuntu focal-updates main universe multiverse restricted
deb http://archive.ubuntu.com/ubuntu focal-proposed main universe multiverse restricted
deb http://archive.ubuntu.com/ubuntu focal-backports main universe multiverse restricted
Seguidamente procederemos a recargar los índices de los repositorios usando el comando
sudo apt update
Después para garantizar que el sistema esté actualizado completamente ejecutaremos el comando
sudo apt full-upgrade
Una vez completada la actualización del sistema, verificamos que el servidor tenga la fecha y hora correctamente y la zona horaria debidamente configurada. Atención esto es de suma importancia ya que de la fecha y hora del sistema dependen muchos factores importantes.
Podemos ver la fecha y hora con el comando
date
En caso de la fecha y hora estar incorrecta debemos arreglarla antes de continuar con esta guía.
Para instalar el servidor de base de datos relacionales MySQL desde los propios repositorios de linux usaremos el comando que se muestra a continuación.
sudo apt install mysql-server mysql-client
Una vez completada la instalación ejecutaremos el comando mysql_secure_installation para cambiar algunos valores básicos en la configuracion de nuestro servidor.
sudo mysql_secure_installation
Presionamos Y y enter para continuar
Escogemos la opción 2, y presionamos enter
Presionamos “y” y enter para continuar
Nuevamente presionamos “y” y enter para continuar
Volvemos a presionar “y” y enter para continuar
“y” y enter para finalizar el asistente.
Lo próximo que haremos será asegurar el usuario root con una contraseña robusta. Este usuario debe usarse solamente para tareas adminstrativas dentro del servidor. Nuestro próximo paso será acceder al servidor de base de datos mysql recién instalado y cambiar la contraseña del usuario root.
//-Conectarse al servidor mysql
mysql -h localhost -u root
En el promt del servidor mysql cambiaremos la clave del usuario root ejecutando la siguiente consulta. Fíjese que allí especificaremos la contraseña que usará, siéntase libre de escojer una. Tenga presente de que la contraseña debe cumplir con parámetros de complejidad (Más de 8 caracteres, Letras mayúsculas y minúsculas, números y caracteres especiales). Para nuestro ejemplo usaremos como contraseña: My.New.P455w0rd.Strong* , esta es solo un ejemplo, por favor no use esta misma y genere la suya propia. Puede hacer uso de un generador de contraseñas como LastPass Online y anótela igual que los próximos datos importantes para que no se le olvide.
Ahora para cambiar la contraseña del usuario root ejecutamos la siguiente consulta.
ALTER USER 'root'@'localhost' IDENTIFIED BY 'My.New.P455w0rd.Strong*';
La salida debe verse como la imagen a continuación
El próximo paso que haremos dentro del servidor de base de datos es crear una base de datos para nuestro nuevo wordpress ejecutando la consulta a continuación. En este caso le llamaremos mywpdb pero puede usar el nombre que usted quiera.
//-Crear la base de datos llamada mywpdb.
CREATE DATABASE mywpdb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Seguidamente crearemos un usuario que es el que usará la aplicación de wordpress para acceder a la base de datos, ya que no se debe usar el usuario root por cuestiones de seguridad. El nuevo usuario solamente tendrá acceso a la base de datos del wordpress. Nuevamente genere una contraseña robusta para este usuario. Puede hacer uso de un generador de contraseñas como LastPass Online
//-Crear el usuario que se usará para acceder a la base de datos: mywpuser
CREATE USER 'mywpuser '@'localhost' IDENTIFIED BY 'UW3.s9TF9@*';
El siguiente paso es otorgarle los permisos al usuario que acabamos de crear sobre la base de datos que usará nuestro wordpress.
//-Asignar permisos al usuario creado a la base de datos
grant all on mywpdb .* to 'mywpuser '@'localhost';
Ya solo nos va quedando recargar todos los permisos y salir de la consola del servidor de bases de datos mysql, para eso ejecutaremos los dos comandos a continuación.
//-Recargar los permisos asignados al nuevo usuario sobre la bd que se creó
flush privileges;
//-salir del servidor de base de datos mysql
quit
Llegados a este punto ya tenemos:
Para la instalación de WordPress, es necesario instalar el servidor web apache, para ello ejecutaremos el siguiente comando en la consola de nuestro VPS
sudo apt install apache2 openssl
Una ves completada la instalación de apache, si tenemos un registro de dns de tipo “A” apuntando a la dirección IP del servidor ya podemos abrir un navegador web y poner la url que se conformaría de la siguiente forma: http://miregistrotipoa.midominio
Por ejemplo: Si tenemos el dominio “misitio.com” y el IP de nuestro servidor es 120.10.15.1 y agregamos en nuestro proveedor de dominio el registro de tipo “A” llamado www apuntando al IP de nuestro servidor VPS tendríamos la url siguiente: www.misitio.com la cual abrimos en nuestro navegador web favorito. Ya deberíamos poder ver la página del servidor como se muestra en la siguiente imagen.
Si vemos una página como se muestra en la imagen ya tenemos el servidor web instalado, así que procedemos a instalar el intérprete de PHP que usará nuestro servidor web.
Para instalar el php usaremos el repositorio de terceros ondrej/php.
Cuando vamos a agregar repositorios de terceros debemos instalar el paquete de software “software-properties-common” el cual instalaremos con el comando
apt install software-properties-common
Para agregar este repositorio a nuestro sistema ejecutaremos el siguiente comando
add-apt-repository ppa:ondrej/php
Una vez ejecutado el comando nos pedirá que presionemos Enter para continuar o Ctrol+c para cancelar, como se muestra en la siguiente imagen
En nuestro caso para agregar el repositorio presionaremos enter.
Una vez agregado el repositorio de terceros vamos a proceder a instalar el PHP 8.2 usando el siguiente comando. Tenga en cuenta que el siguiente comando es una sola línea.
apt install php8.2-cgi php8.2-cli php8.2-common php8.2-curl php8.2-enchant php8.2-gd php8.2-gmp php8.2-igbinary php8.2-imagick php8.2-intl php8.2-ldap php8.2-mbstring php8.2-memcached php8.2-msgpack php8.2-mysql php8.2-odbc php8.2-opcache php8.2-redis php8.2-soap php8.2-sqlite3 php8.2-tidy php8.2-xml php8.2-xsl php8.2-zip php8.2-apcu php8.2-bcmath php8.2-bz2 libapache2-mod-php8.2
Después de instalar el PHP con todas las extensiones especificadas, reiniciamos el apache con el comando a continuación y crearemos el archivo index.php para probar que el php se integró correctamente al servidor web apache.
// Comando para reinciar al servidor web apache
sudo systemctl restart apache2
Comando para crear archivo index.php en la raiz por defecto del servidor web apache llamando a la función de información de PHP.
echo "<?php phpinfo();?>" > /var/www/html/index.php
Si todo se realizó correctamente, ingresamos a la url que probamos anteriormente y agregamos al final de la url /index.php ( ejemplo: http://www.misitio.com/index.php ). Nos debe salir una página como la que se muestra a continuación.
Para optimizar el rendimiento del intérprete de PHP para nuestro wordpress realizaremos algunos cambios en el archivo de configuración de PHP. Para hacer los cambios editaremos el archivo de configuración usando en editor nano en la consola pero usted puede usar el que desee.
//-Editar archivo de configuracion de PHP usado por el servidor web apache
nano /etc/php/8.2/apache2/php.ini
El archivo de configuración de PHP es bien extenso y llenos de comentarios que son las líneas que comienzan con “;”
Dentro del archivo de configuración si usamos el editor de consola nano podemos buscar presionando Control+W y escribiendo una parte de lo que desea buscar y presiona la tecla enter.
//-Cambiar estos valores, si está comentado alguno quitar el “;” de delante y asignarle el valor que se muestra en la tabla de abajo.
; parámetro de configuración = valor
realpath_cache_size = 5M
realpath_cache_ttl = 3600
max_execution_time = 300
max_input_time = 120
max_input_vars = 10000
;Este especifica el límite máximo de memoria que puede usar el PHP
memory_limit = 1024M
;Define el tamaño máximo de contenido de una petición
;Es útil un valor grande cuando se suban archivos grandes
post_max_size = 1024M
file_uploads = On
upload_max_filesize = 1024M
; Este parámetro se debe adecuar a la zona horaria de donde se encuentra el servidor
date.timezone = Europe/Madrid
opcache.enable = 1
opcache.enable_cli = 1
opcache.memory_consumption = 256M
opcache.max_accelerated_files = 80000
opcache.use_cwd = 1
opcache.save_comments = 1
Después de cambiar los parámetros antes mencionados presionamos Control+X para salir del editor y nos mostrará una mensaje como el siguiente preguntando si queremos guardar los cambios.
Presionaremos Y
Finalmente presionamos enter para que guarde todo en el archivo que se muestra en la línea resaltada.
Seguidamente reiniciamos el servidor web para que tome los parámetros con los valores que hemos configurado previamente.
sudo systemctl restart apache2
Si todo ha ido bien volvemos a entrar a la url antes vista que termina en /index.php y en la página que sale podemos buscar los valores que cambiamos en los pasos anteriores
ejemplo:
Llegados a este punto ya debemos tener instalado el servidor web apache2 y el PHP integrados. Ahora procederemos a configurar el virtualhost de apache para nuestro wordpress.
VirtualHost de apache
//-Crear el archivo de virtualhost de apache para nuestro wordpress.
nano /etc/apache2/sites-available/mywordpress.conf
Cuando abra el editor en la consola ponemos dentro el siguiente contenido, recuerde reemplazar “www.misitio.com” por el nombre de su servidor, el que tiene apuntando a ese servidor mediante el registro de tipo A en su dominio.
<VirtualHost *:80>
ServerName www.misitio.com
ServerAdmin webmaster@misitio.com
DocumentRoot /var/www/html/wordpress
DirectoryIndex index.php
AddDefaultCharset UTF-8
<Directory "/var/www/html/wordpress">
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Una vez establecido el contenido cerramos el nano con Control+X, “y” para decirle que si queremos guardar y enter.
Hasta aquí hemos preparado parte del entorno pero todavía no hemos tocado nada de wordpress, así que comenzamos.
// Movernos hacia la carpeta raiz del servidor web
cd /var/www/html
El próximo paso es descargar el wordpress, el cual podemos descargar desde su sitio oficial. Use cualquiera de los dos comandos según el idioma en el que quiera tenerlo.
//-Descargar el wordpress en inglés
wget https://wordpress.org/latest.zip -O wordpress.zip
//-Descargar el wordpress en español
wget https://es.wordpress.org/latest-es_ES.zip -O wordpress.zip
Si se descargó correctamente entonces continuamos, de lo contrario deberá descargarlo a su pc y subirlo al servidor a la ubicacion /var/www/html/ para continuar con esta guía paso a paso
//-Descomprimir el archivo
unzip wordpress.zip
//-Cambairle los permisos a la carpeta
chmod 755 -R wordpress/
//-Cambiamos el propietario de la carpeta para que el usuario del servidor web (www-data) pueda escribir sin problemas
chown www-data:www-data wordpress -R
a2ensite mywordpress
a2dissite 000-default
systemctl restart apache2
Ahora probamos acceder por el navegador a la url del sitio y debe salir la página del wordpress. Allí todavía no debemos hacer nada, solo es para comprobar que funciona correctamente el virtual host. Falta hacer que funcione por https con los certificados de Let’s Encrypt, que es nuestro próximo paso.
Instalamos el cliente certbot y los complementos para apache
sudo apt install certbot python3-certbot-apache
Ejecutamos el asistente de configuración para apache
certbot --apache
Se nos solicita el email al cual se enviarán las notificaciones. Allí ponemos el nuestro y presionamos enter
Seguidamente nos saldrá para aceptar los términos del servicio, para lo cual presionaremos A y enter para continuar.
Luego nos preguntará si deseamos compartir nuestro correo electrónico a lo que podemos decir si o no usando “y” o “n” y luego presionando enter.
Ahora nos aparecerá la lista de virtualhost que tengamos configurados para especificar el que queremos habilitarle el certificado para https. En nuestro caso es el único que sale en la lista con el número 1 así que entramos 1 y damos enter.
Luego nos preguntará si queremos que el tráfico se redireccione automáticamente al HTTPS o no, a lo que escogeremos la opción 2 y presionamos enter.
A continuación se nos mostrará toda la información del proceso de configuración automática como se muestra en la siguiente imagen.
Ahora vamos a poner para que se renueve automáticamente el certificado, para eso ejecutaremos el comando.
crontab -e
y agregaremos al final la siguiente línea
14 5 * * * /usr/bin/certbot renew --quiet --post-hook "/usr/sbin/service apache2 reload" > /dev/null 2>&1
debe quedar así
Si todo salió bien ya podemos entrar por el navegador y debemos ver la página del wordpress. Esta ves por https y con el candado correctamente en la barra de direcciones del navegador. Ahora si procedemos a instalar el wordpress.
Si todo está listo debemos ver la siguiente página en la cual haremos clic en el botón en la esquina inferior izquierda “¡Vamos a ello!”
Seguidamente entramos los datos que pide el formulario y hacemos clic en el botón enviar en la esquina inferior izquierda.
Ya esta lista la primera parte de la instalación que es donde se configura el acceso de wordpress a la base de datos. Ahora vamos con la segunda. En la página que se muestra a continuación hacemos clic en el botón que aparece en la esquina inferior izquierda “Realizar la instalación”
Ahora entraremos el título del sitio, el nombre de usuario que usaremos para administrar nuestro wordpress, la contraseña la cual se genera automática o podemos especificar una, el correo al que wordpress enviará las notificaciones, y debemos marcar el cuadro de selección para que los motores de búsqueda todavía no indexen el sitio. Una vez llenados todos los datos debemos asegurarnos de no olvidar el usuario y la contraseña y hacemos clic en el botón en la esquina inferior izquierda que dice “Instalar wordpress”
Ya en unos segundos se completa la instalación de wordpress y sale una página como la que se muestra a continuación.
Podemos hacer clic en acceder y nos aparecerá el formulario de acceso como se muestra en la siguiente imagen.
Una ves puesto usuario y contraseña ya accederemos al panel de administración de wordpress desde donde podemos hacer todo el trabajo administrativo con este gestor de contenidos.
Solo nos queda hacer una par de ajustes y habremos acabado.
Por último vamos a agregar estas dos líneas de configuraciones en el archivo de configuración de WordPress. La primera es para desactivar el uso de FTP y que el WordPress pueda escribir directamente en su carpeta y la segunda es para aumentar el límite de memoria de WordPress.
//deshabilitar FTP requerido para actualizaciones de WordPress y complementos, con esto logramos que el WordPress escriba directamente en la carpeta en vez de usar un servidor FTP.
define(‘FS_METHOD’, ‘direct’);
//Aumentar la memoria RAM que usará WordPress
define(‘WP_MEMORY_LIMIT’, ‘256M’);
Para esto volvemos a la terminal de nuestro VPS y editamos el archivo de configuración
//-Editar el archivo de configuración del WordPress
nano /var/www/html/wordpress/wp-config.php
//- Allí agregar después de la linea "define( 'WP_DEBUG', false );"
// Pegar estas 2
define('FS_METHOD', 'direct');
define('WP_MEMORY_LIMIT', '256M');
Agregadas esas dos líneas cerramos el archivo guardando los cambios, con Control+X, luego “Y” y finalmente Enter.
Ya hemos terminado de instalar nuestro WordPress en el VPS desde la terminal.
Recuerde que siempre puede acceder al panel de administración de su WordPress escribiendo la url de su sitio+/wp-admin
Antes de concluir haremos una corrección de los permisos de WordPress en sus directorios garantizando que no se puedan modificar los archivos que no deban ser modificados y deshabilitando la ejecución de archivos desde el directorio de subidas.
Para garantizar la seguridad de tu instalación de WordPress en un servidor Linux con Apache2, es importante ajustar correctamente los permisos de archivos y carpetas. Aquí te dejo una configuración recomendada:
Carpeta raíz de WordPress (por ejemplo, /var/www/html/wordpress):
Permisos: 755 (directorios)
Propietario: El usuario que corre el servicio de Apache (por lo general www-data).
Comandos a usar:
sudo chown -R www-data:www-data /var/www/html/wordpress
sudo find /var/www/html/wordpress/ -type d -exec chmod 755 {} \;
Archivos en la carpeta de WordPress:
Permisos: 644 (archivos)
Comandos a usar:
sudo find /var/www/html/wordpress/ -type f -exec chmod 644 {} \;
wp-config.php (archivo sensible de configuración):
Permisos: 600 (solo el propietario puede leer y escribir)
Comando a usar:
sudo chmod 600 /var/www/html/wordpress/wp-config.php
Carpeta wp-content/uploads (donde se suben archivos):
Permisos: 755 o 775 (si necesitas permisos de escritura para el grupo).
Comandos a usar:
sudo find /var/www/html/wordpress/wp-content/uploads/ -type d -exec chmod 755 {} \;
sudo find /var/www/html/wordpress/wp-content/uploads/ -type f -exec chmod 644 {} \;
Detalles adicionales:
Asegúrate de que los permisos sean lo más restrictivos posible. Apache solo debe tener permiso para leer los archivos, excepto en carpetas donde es necesario subir contenido, como wp-content/uploads.
El propietario de los archivos debe ser www-data (o el usuario del servidor web), pero evita dar permisos de escritura a nivel global.
Hasta aquí la instalación de WordPress vía terminal de comandos en un VPS con Linux Ubuntu 20.04. En posteriores artículos abordaremos otros temas sobre Worpress y configuraciones más avanzadas en sus despliegues y servidores.
Evelyn Berezin fue una pionera en el mundo de la informática. Es considerada la creadora…
Cuando comencé a investigar sobre esta mujer nunca pensé que me resultarían tan divertidas sus…
Delphi es un entorno de desarrollo visual de tipo RAD (Rapid Application Development). Es un…
Un navegador web, también llamado navegador de Internet o simplemente "navegador", es un programa informático…
En este artículo veremos paso por paso cómo se realiza la instalación de GNU Linux…
En la actualidad existe una gran cantidad de empresas y freelancer dedicados al desarrollo del…