Después de montar muchísimos servidores corriendo siempre todos bajo Apache, esta vez me he decidido a montarlo con Ngnix que hablan tan bien de él. Sobretodo para alojar y optimizar al máximo WordPress como es mi caso, así que lo instalaremos junto a MariaDB 10.4 y PHP 7.4 que son las últimas versiones a la hora de hacer este post.
Al instalar el sistema operativo en el servidor he elegido Debian 10 Buster, así que todos los comandos y configuraciones serán de dicha distribución.
Empezamos por la base de datos, pero como siempre primero lo actualizamos todo.
$ sudo apt -y update && apt -y upgrade && apt -y dist-upgrade && apt -y autoremove
Base de Datos
Instalamos el software necesario, y añadimos el repositorio de la última versión de MariaDB, a día de hoy la 10.4, y seguidamente procedemos a instalarla.
$ sudo apt -y install software-properties-common gnupg2
$ sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xF1656F24C74CD1D8
$ sudo add-apt-repository 'deb [arch=amd64] http://mariadb.mirror.liquidtelecom.com/repo/10.4/debian buster main'
$ sudo apt update
$ sudo apt -y install mariadb-server mariadb-client
$ sudo service mysqld restart
Una vez instalada y reiniciada la base de datos vamos a configurarla respondiendo a unas simples preguntas.
$ sudo mysql_secure_installation
Set root password? [Y/n]: Y Remove anonymous users? [Y/n]: Y Disallow root login remotely? [Y/n]: Y Remove test database and access to it? [Y/n]: Y Reload privilege tables now? [Y/n]: Y
No es necesario que respondías lo mismo que yo en las preguntas pero os aconsejo poner una contraseña «segura» y desactivar el login de root remoto 😉
$ sudo service mysqld restart
$ sudo mysql --version
mysql Ver 15.1 Distrib 10.4.12-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2
Como podéis ver nos devuelve la versión 10.4.12 de MariaDB. Ahora vamos a por el serivdor Web.
Servidor Web
Como he comentado al principio del post vamos a instalar nginx, así que volvemos a actualizar el sistema, lo instalamos, lo activamos y lo reiniciamos.
$ apt -y update && apt -y upgrade && apt -y dist-upgrade && apt -y autoremove
$ apt -y install nginx nginx-extras
$ sudo service nginx stop
$ sudo service nginx enable
$ sudo service nginx start
El siguiente paso sería configurar y activar al menos la compresión gzip, el HSTS y el HTTP2 y de paso asegurarlo un poco, pero eso ya lo explicaré en otro post 😛
Servidor PHP
Y por último instalamos PHP, que a día de hoy la última versión estable es la 7.4. Antes de nada instalamos algunos paquetes necesarios y añadimos un nuevo repositorio para después actualizar el sistema y proceder a instalar PHP.
$ sudo apt -y install apt-transport-https lsb-release ca-certificates
$ sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
$ sudo sh -c 'echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
$ sudo apt -y update && apt -y upgrade && apt -y dist-upgrade && apt -y autoremove
$ sudo apt -y install php7.4 php7.4-fpm php7.4-common php7.4-dev php7.4-cli php7.4-bcmath php7.4-curl php7.4-gd php7.4-imap php7.4-json php7.4-mbstring php7.4-mysql php7.4-opcache php7.4-soap php7.4-xml php7.4-xmlrpc php7.4-zip php-imagick php-libsodium php-ssh2 php-xdebug libgeoip-dev
En última linea, la de instalación he hecho referencia a la versión 7.4 pero si omitís ese dato os instala la última versión disponible en los repositorios, eso ya vosotros mismos.
Posiblemente se nos instalen paquetes de Apache que al usar Nginx no necesitamos, así que procedemos a eliminarlos.
$ sudo apt -y purge apache2*
Y para comprobar que no queda ningúno:
$ sudo dpkg --get-selections | grep apache
Si nos devolviese alguno:
$ sudo apt remove --purge nombredelpaquete
Vamos a configurar un poco PHP así que tendremos que editar el archivo php.ini. Yo uso el editor Vi porque es al que estoy acostumbrado pero si preferís lo podéis hacer con nano que es más fácil de usar. Recomiendo que siempre hagáis una copia de seguridad de cualquier archivo que editéis por si acaso, vamos a ello:
$ cp /etc/php/7.4/fpm/php.ini /etc/php/7.4/fpm/php.ini-ORIGINAL
$ sudo /etc/php/7.4/fpm/php.ini
Las principales lineas a cambiar son estas, y los valores son los que yo creo que necesito pero a cada uno le puede poner lo que crea conveniente o la configuración que crea que mejor le encaja para su servidor web.
max_execution_time = 60 memory_limit = 256M post_max_size = 32M upload_max_filesize = 32M expose_php = Off display_errors = Off track_errors = Off html_errors = Off
Ahora que ya tenemos PHP correctamente instalado, vamos a activarlo de forma que cuando se reinicie el sistema se ejecute automáticamente.
$ sudo service php7.4-fpm stop
$ sudo service php7.4-fpm enable
$ sudo service php7.4-fpm start
$ sudo service nginx.4-fpm restart
Finalización de la configuración
Y esto es todo amigos, ahora si queréis para acabar de dejarlo todo limpio y actualizado volvemos a ejecutar el update && update && autoremove y por último reiniciamos el servidor.
$ sudo apt -y update && apt -y upgrade && apt -y dist-upgrade && apt -y autoremove
$ sudo reboot
En los próximos días seguiré publicando artículos de las siguientes instalaciones y configuraciones que deberíamos hacer en nuestros servidores.