Page cover

Instalando Wordpress en nginx

Instalación de LEMP Stack

LEMP hace referencia a Linux + EngineX + MySQL + PHP

1. Actualizamos el sistema:

sudo apt update
sudo apt upgrade

2. Instalación de Nginx:

sudo apt install nginx

3. Instalación de MySQL (MariaDB):

sudo apt install mariadb-server
sudo mysql_secure_installation

Sigue las instrucciones para configurar la seguridad de la base de datos y establecer una contraseña para el usuario root de MySQL.

4. Instalación de PHP y extensiones:

sudo apt install php-fpm php-mysql

5. Configuración de Nginx para PHP:

Crea un archivo de configuración para tu sitio en Nginx:

sudo nano /etc/nginx/sites-available/alexwp.org

Ejemplo de configuración básica para un servidor PHP:

server {
    listen 80;
    server_name alexwp.org www.alexwp.org;

    root /var/www/alexwp;
    index index.php index.html index.htm;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }
    # manejo de php
    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php8.1-fpm.sock; #Ajusta según tu versión de PHP
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
    #negacion de acceso a archivos .ht
    location ~ /\.ht {
        deny all;
    }
}

Las configuraciones antes vistas son directivas de manejo de php, vamos a desglosarlo:

  • location ~ \.php$: Esta directiva de ubicación utiliza una expresión regular para coincidir con las solicitudes que terminan en ".php".

  • include snippets/fastcgi-php.conf;: Incluye un archivo de configuración específico para FastCGI y PHP.

  • fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;: Especifica la ubicación del socket FastCGI para comunicarse con el servidor PHP-FPM.

  • fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;: Establece el parámetro SCRIPT_FILENAME para indicar la ruta del script PHP a ejecutar.

  • include fastcgi_params;: Incluye otros parámetros FastCGI necesarios para la comunicación con el servidor PHP-FPM.

Las que hay a continuación, son directivas de seguridad para la negación de acceso a archivos .ht:

  • location ~ /\.ht: Esta directiva de ubicación utiliza una expresión regular para coincidir con cualquier archivo cuyo nombre comience con ".ht". En servidores web como Apache, los archivos .htaccess y otros archivos que comienzan con ".ht" a menudo contienen configuraciones sensibles del servidor web.

  • deny all;: Niega el acceso a estos archivos, lo que significa que cualquier intento de acceder a un archivo que cumpla con la expresión regular será bloqueado y recibirá un código de estado de acceso denegado (403 Forbidden).

Crea un enlace simbólico para habilitar el sitio:

sudo ln -s /etc/nginx/sites-available/alexwp.org /etc/nginx/sites-enabled/

Creamos la carpeta donde guardaremos todos los archivos web y que ya hemos referenciado anteriormente.

sudo mkdir /var/www/alexwp

Elimina el archivo de configuración predeterminado si no lo necesitas:

sudo rm /etc/nginx/sites-enabled/default

Verificamos la configuración:

sudo nginx -t

Reiniciamos Nginx:

sudo service nginx restart

Instalación de WordPress:

1. Descargamos e instalamos WordPress:

sudo su
cd /tmp
curl -LO https://wordpress.org/latest.tar.gz
tar xzvf latest.tar.gz
sudo cp -R wordpress/* /var/www/alexwp

2. Configuración de la base de datos para WordPress:

sudo mysql -u root -p

En MySQL, crea una base de datos (alexwp) y un usuario (alex) para WordPress:

CREATE DATABASE alexwp CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'alex'@'localhost' IDENTIFIED BY 'P@ssw0rd';
GRANT ALL PRIVILEGES ON alexwp.* TO 'alex'@'localhost';
FLUSH PRIVILEGES;
EXIT;

Para comprobar las bases de datos creadas escribe:

SHOW databases;

Para comprobar los usuarios creados:

USE mysql;

SELECT User FROM user;

3. Configuración de WordPress:

Copia el archivo de configuración de ejemplo que vamos a modificar:

cd /var/www/alexwp
sudo cp wp-config-sample.php wp-config.php

Vamos a editar el archivo de configuración y realizar los cambios necesarios:

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

Busca las líneas en el archivo relacionadas con la configuración de la base de datos y actualízalas con la información de tu base de datos:

// Database configuration
define('DB_NAME', 'alexwp');
define('DB_USER', 'alex');
define('DB_PASSWORD', 'P@ssw0rd');
define('DB_HOST', 'localhost');

En nuestro caso la base de datos está en el mismo servidor por lo que ponemos "localhost".

Ahora puedes generar nuevas Secret keys y Salts de seguridad en el generador oficial de WordPress y reemplazar las líneas existentes en tu archivo wp-config.php:

define('AUTH_KEY',         'pon_aqui_tu_clave');
define('SECURE_AUTH_KEY',  'pon_aqui_tu_clave');
define('LOGGED_IN_KEY',    'pon_aqui_tu_clave');
define('NONCE_KEY',        'pon_aqui_tu_clave');
define('AUTH_SALT',        'pon_aqui_tu_clave');
define('SECURE_AUTH_SALT', 'pon_aqui_tu_clave');
define('LOGGED_IN_SALT',   'pon_aqui_tu_clave');
define('NONCE_SALT',       'pon_aqui_tu_clave');

4. Ajustes de permisos:

Asegúrate de que el servidor web tiene permisos para acceder y escribir en los directorios relevantes:

sudo chown -R www-data:www-data /var/www/alexwp

5. Finalizar la instalación a través del navegador:

Accede a tu dominio o dirección IP en un navegador y sigue el asistente de instalación de WordPress.

  • Completa los detalles del sitio y la información de administrador.

  • Haz clic en "Instalar WordPress".

Última actualización