NGINX fue escrito específicamente para eliminar las limitaciones de rendimiento de los servidores web de Apache. Fue creado en 2002 por Igor Sysoev. Administrador de sistemas para un sitio ruso popular (Rambler.ru). Fue creado como una solución para ayudar a administrar este portal ya que cada vez recibía más volumen de tráfico. Fue abierto en octubre de 2004.

Las ventajas de tener Wordpress sobre este servidor son muchas, entre las principales es el rendimiento y optimización, adicional la documentación es más clara y lo más importante es el trabajo que le genera al procesador del equipo que lo esta hosteando.

Requisitos:

  • Ubuntu server o Desktop.

Paso 1: Instalamos NGINX

Primero iniciamos actualizando el server

sudo apt update

sudo apt upgrade

Instalamos el nginx con el siguiente comando

sudo apt install nginx

Después ejecutamos los siguientes comandos para detener, iniciar y habilitar el servicio de nginx

sudo systemctl stop nginx.service

sudo systemctl start nginx.service

sudo systemctl enable nginx.service

Paso 2: Instalar MariaDB y crear Base de datos

Wordpress requiere de una base de datos, nosotros utilizaremos MariaDB para esta instalación.

sudo apt-get install mariadb-server mariadb-client

Después ejecutamos los siguientes comandos para detener, iniciar y habilitar el servicio de mariadb

sudo systemctl stop mariadb.service

sudo systemctl start mariadb.service

sudo systemctl enable mariadb.service

Seguido, ejecutamos el script de seguridad para resguardarla:

sudo mysql_secure_installation

A continuación nos realizará unas preguntas a las cuales contestaremos:

  • Ingrese la contraseña actual para root (ingrese para ninguno): simplemente presione el  botón Enter
  • configurar contraseña de root [Y/n]: Y
  • Nueva contraseña:  Ingresar contraseña
  • Vuelva a ingresar la nueva contraseña: Repita la contraseña
  • Quitar usuarios anonimos? [Y/n]: Y
  • ¿Inhabilitar el inicio de sesión de forma remota? [Y/n]: Y
  • ¿Eliminar la base de datos de prueba y acceder a ella? [Y/n]: Y
  • Recargar privilegios de tablas ya? [Y/n]: Y

Procedemos a reiniciar el servidor de MariaDB

sudo systemctl restart mariadb.service

Luego, procedemos a crear la base de datos que utilizaremos. Primero accedemos a la Base de datos

sudo mysql -u root -p

Creamos una base de datos. Nosotros le llamaremos wordpress para este tutorial:

CREATE DATABASE wordpress;

Creamos un usuario que será el encargado de la conexión entre el wordpress y su base de datos (recuerda poner tu propio usuario y contraseña)

CREATE USER 'wordpressuser'@'localhost' IDENTIFIED BY 'new_password_here';

Ahora concedemos los permisos necesarios para la base de datos

GRANT ALL ON wordpress.* TO 'wordpressuser'@'localhost' IDENTIFIED BY 'user_password_here' WITH GRANT OPTION;

Finalmente guardamos los cambios y salimos.

FLUSH PRIVILEGES;

EXIT;

Paso 3: Instalar PHP-FPM y módulos relacionados

Wordpress requiere de php para funcionar y el nginx necesita el módulo php-fpm para hacer el manejo adecuado de los datos no estáticos.

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

Ahora procedemos a hacer algunos ajustes en el archivo .ini de php que lo encontraremos en la ruta /etc/php/[version]/cli/php.ini. En nuestro caso /etc/php/7.2/cli/php.ini y en el archivo /etc/php/7.2/fpm/php.ini

sudo vi /etc/php/7.2/cli/php.ini

Editamos los siguientes parámetros

file_uploads = On
max_execution_time = 180
memory_limit = 256M
post_max_size = 32M
upload_max_filesize = 64M

Después editamos los mismos parametros pero en este otro archivo

sudo vi /etc/php/7.2/fpm/php.ini

Procedemos a reiniciar el servicio del fpm sudo systemctl restart php7.2-fpm.service

Paso 4: Instalación y configuración de Wordpress

Ahora visitamos el sitio de wordpress y nos descargama la versión más reciente de wordpress, esto lo haremos en una carpeta temporal

cd /tmp && wget https://wordpress.org/latest.tar.gz

tar -zxvf latest.tar.gz

sudo mv wordpress /var/www/html/wordpress

Corregimos los permisos de las carpetas para manejo del wordpress

sudo chown -R www-data:www-data /var/www/html/wordpress/

sudo chmod -R 755 /var/www/html/wordpress/

sudo find /var/www/html/wordpress -type d -exec chmod g+s {} \;

sudo chmod g+w /var/www/html/wordpress/wp-content

sudo chmod -R g+w /var/www/html/wordpress/wp-content/themes

sudo chmod -R g+w /var/www/html/wordpress/wp-content/plugins

Ahora procedemos a configurar los parametros de conexión de nuestro wordpress, primero creamos el archivo de configuración

sudo mv /var/www/html/wordpress/wp-config-sample.php /var/www/html/wordpress/wp-config.php

Procedemos a editarlo

sudo vi /var/www/html/wordpress/wp-config.php

Procedemos a poner nuestro nombre de base de datos, usuarios y contraseña que creamos en los pasos anteriores

// ** 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’, ‘user_password_here‘);

/** MySQL hostname */ define(‘DB_HOST’, ‘localhost’);
/** Database Charset to use in creating database tables. */
define(‘DB_CHARSET’, ‘utf8’);

/** The Database Collate type. Don’t change this if in doubt. */

define(‘DB_COLLATE’, »);

Adicional debemos agregar el siguiente comando para que nuestro wordpres pueda subir archivos directo al servidor (plugins, temas, imagenes, documentos, etc)

define(‘FS_METHOD’, ‘direct’);

Paso 4: configuramos NGINX

Finalmente configuramos nuestro nginx para que levante nuestro wordpress. Lo primero es crear el archivo que utilizará el nginx para levantar el wordpress

sudo vi /etc/nginx/sites-available/wordpress

Y agregamos lo siguiente en dicho archivo

server {
listen 80;
listen [::]:80;
root /var/www/html/wordpress;
index index.php index.html index.htm;
server_name example.com www.example.com;

location / {
try_files $uri $uri/ /index.php?$args;
}

location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_index index.php;
fastcgi_pass unix:/var/run/php/php7.3-fpm.sock; #deben cambiar a la versión de php que tienen instalada
include fastcgi_params;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}

}

Ahora procedemos a habilitar al nginx para poder subir archivos de tamaños hasta 100M (no poner esto podría molestar a la hora de subir los temas o plugins), esto lo hacemos con el parámetro client_max_body_size 100M; en el archivo de configuración del nginx ubicado en /etc/nginx/nginx.conf agregamos el parámetro en la sección http.

Habilitamos el sitio de wordpress

sudo ln -s /etc/nginx/sites-available/wordpress /etc/nginx/sites-enabled/

Debemos borrar el archivos de configuración que viene con la instalación del nginx, esto lo hacemos con los siguientes comandos:

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

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

Por último reiniciamos el servidor

sudo systemctl restart nginx.service

Ya podemos ir a visitar nuestro server