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:
sudo apt updatesudo apt upgrade
sudo apt install nginx
sudo systemctl stop nginx.servicesudo systemctl start nginx.servicesudo systemctl enable nginx.service
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.servicesudo systemctl start mariadb.servicesudo 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:
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;
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 = Onmax\_execution\_time = 180memory\_limit = 256Mpost\_max\_size = 32Mupload\_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
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.gztar -zxvf latest.tar.gzsudo 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-contentsudo chmod -R g+w /var/www/html/wordpress/wp-content/themessudo 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');
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 instaladainclude 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/defaultsudo rm /etc/nginx/sites-available/default
Por último reiniciamos el servidor
sudo systemctl restart nginx.service
Ya podemos ir a visitar nuestro server