Skip to content

Cómo configurar un sitio de WordPress en sus propios servidores (con Ubuntu y NGINX)

  • by Jesús Torres
WordPress

Si bien siempre puede pagarle a otra persona una tarifa mensual para administrar su instancia de WordPress, el alojamiento propio tiene mucho sentido para muchas personas que tienen hardware existente para aprovechar, o simplemente quieren un proyecto divertido para configurar su blog. Le mostraremos cómo instalar y configurar un sitio básico de WordPress en Ubuntu Linux usando NGINX.

Instalación de dependencias

Primero, necesitaremos instalar NGINX. Actualizar apt e instalarlo:

sudo apt update
sudo apt install nginx

Si tiene un firewall habilitado, como UFW, deberá abrirlo:

sudo ufw allow 'Nginx HTTP'

Configuraremos NGINX una vez que WordPress esté instalado. Mientras tanto, necesitaremos crear una base de datos MySQL para que WordPress la utilice.

Si no tiene MySQL instalado, puede obtenerlo de apt. Asegúrate de correr mysql_secure_installation una vez que esté instalado para bloquearlo. Puede leer nuestra guía sobre seguridad general de bases de datos para obtener más información, pero siempre que MySQL se esté ejecutando en localhost, deberías estar bien.

sudo apt install mysql-server
sudo mysql_secure_installation

Cree una base de datos para que WordPress la utilice. No necesita configurar tablas ni nada, solo una base de datos en blanco servirá:

CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

Luego crea un usuario, llamado wordpressusery darle acceso a la base de datos. Asegúrate de cambiar la contraseña.

CREATE USER 'wordpressuser'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON * . * TO 'wordpressuser'@'localhost';
FLUSH PRIVILEGES;

WordPress se ejecuta en PHP, por lo que necesitará PHP instalado para funcionar. Instálelo junto con las siguientes extensiones:

sudo apt install php-fpm php-mysql
sudo apt install php-curl php-gd php-intl php-mbstring php-soap php-xml php-xmlrpc php-zip

Y reinicie el servicio PHP para asegurarse de que esté actualizado con las nuevas extensiones. Tenga en cuenta que es posible que deba cambiar el número de versión aquí.

sudo systemctl restart php7.4-fpm.service

Instalación de WordPress

Descargue la última versión de WordPress de su sitio:

cd /tmp
curl -LO https://wordpress.org/latest.tar.gz
tar xzvf latest.tar.gz

Luego copie la configuración de muestra en la ubicación desde la que WordPress realmente lee:

cp /tmp/wordpress/wp-config-sample.php /tmp/wordpress/wp-config.php

Mueva el directorio temporal a la ubicación de instalación adecuada y chown los datos:

sudo cp -a /tmp/wordpress/. /var/www/wordpress
sudo chown -R www-data:www-data /var/www/wordpress

Deberá configurar las sales que se utilizan para la seguridad y la gestión de contraseñas. Puede obtener un nuevo conjunto de sales de la API de WordPress:

curl -s https://api.wordpress.org/secret-key/1.1/salt/

Luego, abra el archivo de configuración de WordPress y pegue los valores en:

sudo nano /var/www/wordpress/wp-config.php

Mientras esté en este archivo, deberá configurar la base de datos.

define('DB_NAME', 'wordpress');

/** MySQL database username */
define('DB_USER', 'wordpressuser');

/** MySQL database password */
define('DB_PASSWORD', 'password');

define('FS_METHOD', 'direct');

Una vez hecho esto, WordPress debería estar configurado y necesitaremos configurar NGINX para entregar el contenido.

Configurando NGINX

NGINX usa archivos de configuración en /etc/nginx/sites-available/ para configurar diferentes puntos finales. Cree uno nuevo para su sitio en esta carpeta y pegue lo siguiente:

# Upstream to abstract backend connection(s) for php
upstream php {
        server unix:/var/run/php/php7.4-fpm.sock;
        server 127.0.0.1:9000;
}

server {
        ## Your website name goes here.
        server_name domain.tld;
        ## Your only path reference.
        root /var/www/wordpress;
        ## This should be in your http block and if it is, it's not needed here.
        index index.php;

        location = /favicon.ico {
                log_not_found off;
                access_log off;
        }

        location = /robots.txt {
                allow all;
                log_not_found off;
                access_log off;
        }

        location / {
                # This is cool because no php is touched for static content.
                # include the "?$args" part so non-default permalinks doesn't break when using query string
                try_files $uri $uri/ /index.php?$args;
        }

        location ~ .php$ {
                #NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
                include fastcgi_params;
                fastcgi_intercept_errors on;
                fastcgi_pass php;
                #The following parameter can be also included in fastcgi_params file
                fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
        }

        location ~* .(js|css|png|jpg|jpeg|gif|ico)$ {
                expires max;
                log_not_found off;
        }
}

Tenga en cuenta que deberá ingresar su información para el nombre de host y otras configuraciones, así como actualizar la versión de PHP si está usando una más nueva. Deberá guardar esto en sites-available, luego vincularlo simbólicamente a sites-enabled Encenderlo.

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/

Una vez que esté habilitado, reinicie NGINX y verá WordPress si visita el sitio en su navegador. Deberá realizar el tutorial de configuración por primera vez.

sudo service nginx restart

Ahora podrá ver su panel en cualquier momento en .

A continuación, deberá configurar SSL para proteger las conexiones en su sitio. Puedes hacer esto gratis usando certbot, una interfaz CLI para los certificados gratuitos de LetsEncrypt.

sudo apt-get install certbot

sudo apt install python3-certbot-nginx

Luego, ejecute certbot:

sudo certbot nginx -certonly

Después de eso, deberá reiniciar NGINX.

reinicio de nginx del servicio sudo

Configuración de su sitio

¡Felicidades! Tiene un sitio de WordPress en funcionamiento. Probablemente se vea terrible con el tema predeterminado. Lo primero que querrá hacer es cambiar el tema, lo que puede hacer desde el panel:

Sea cual sea el tema que elija, deberá activarlo desde la pestaña de apariencia.

Luego, puede configurar los ajustes y el estilo visitando el sitio y haciendo clic en “Personalizar” en el encabezado. Una de las mejores cosas que puede hacer es agregar CSS completamente personalizado al sitio, lo que puede cambiar cualquier elemento de la página.

Si desea editar algo en el tema y no le importa jugar con PHP, puede editar los archivos de su tema directamente. Por ejemplo, edité mi archivo de tema para diseñar una cuadrícula con dos publicaciones al lado, en lugar de solo una lista de publicaciones.

cd /var/www/wordpress/wp-content/themes/dark-press/
sudo nano index.php