Cómo configurar la pila LEMH (Linux, Nginx, MariaDB, HHVM) en Ubuntu Server

Cómo configurar la pila LEMH (Linux, Nginx, MariaDB, HHVM) en Ubuntu Server

Si ha administrado un servidor Linux anteriormente, estará familiarizado con la pila LAMP (Linux, Apache, MySQL, PHP) de uso común. Sin embargo, Apache, MySQL y PHP a veces pueden consumir muchos recursos y pueden no ser los mejores para su servidor. En este tutorial, vamos a reemplazar todas y cada una de las partes de la pila, excepto Linux, con una mejor alternativa: Nginx, MariaDB y HHVM.

Suposición

1. Este tutorial se realiza en un servidor Ubuntu 14.04, aunque las instrucciones también funcionarán para cualquier distribución basada en Debian.

2. Este tutorial solo se centra en la instalación y configuración de la pila LEMH. No toca el aspecto de seguridad del servidor.

3. Ya debe tener acceso SSH a su servidor (o acceso físico a su máquina) para realizar este tutorial.

Instalación de Nginx

Nginx es un reemplazo ligero, pero potente, de Apache. Es un servidor proxy inverso de código abierto, así como un servidor web con un fuerte enfoque en alta concurrencia, alto rendimiento y bajo uso de memoria. Tenga en cuenta que Nginx no es compatible con Apache, por lo que toda la configuración de Apache, en particular los archivos .htaccess que creó, no funcionarán en Nginx. También es posible ejecutar Apache y Nginx en el mismo servidor, pero eso implicará una configuración complicada que no trataremos aquí.

Nginx se encuentra en el repositorio de Ubuntu, pero a menudo está desactualizado. Para obtener la última versión estable, agregue el siguiente PPA a su sistema:

sudo add-apt-repository ppa:nginx/stable
sudo apt-get update

La última versión de Nginx a partir de esta publicación es 1.6.2. Alternativamente, si desea probar la última versión de desarrollo, puede usar este PPA en su lugar:

sudo add-apt-repository ppa:nginx/development
sudo apt-get update

La última versión de desarrollo a partir de esta publicación es 1.7.8.

Para instalar Nginx, ejecute el comando:

sudo apt-get install nginx

comando de instalación de nginx

Una vez instalado, ejecute el siguiente comando para asegurarse de que se inicie:

A continuación, en su navegador web, vaya a la URL «https://123.4.56.789» (reemplace 123.4.56.789 con la dirección IP de su servidor), y debería ver lo siguiente:

nginx-trabajando

Instalación de MariaDB

Durante muchos años, MySQL es el servicio de gestión de base de datos predeterminado para muchas aplicaciones. Desde que Oracle lo adquirió, muchas personas comenzaron a cuestionar su carácter de «código abierto», y la comunidad (que incluía al fundador de MySQL) decidió crear una bifurcación de MySQL y la llamó MariaDB. MariaDB es un reemplazo directo de MySQL, lo que significa que es totalmente compatible con las bases de datos MySQL y se puede usar como reemplazo total de MySQL.

Hecho interesante: MySQL fue fundado por Michael Widenius y lleva el nombre de su primera hija, My. El desarrollador principal de MariaDB también es Michael Widenius y lleva el nombre de su segunda hija, María.

En su servidor, si ha instalado MySQL previamente, es mejor eliminar MySQL por completo antes de instalar MariaDB:

sudo apt-get remove --purge mysql-server mysql-client mysql-common
sudo apt-get autoremove
sudo rm -rf /var/lib/mysql
sudo apt-get autoclean

A continuación, agregue el PPA para MariaDB:

sudo apt-get install software-properties-common
sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xcbcb082a1bb943db
sudo add-apt-repository 'deb https://sfo1.mirrors.digitalocean.com/mariadb/repo/10.0/ubuntu trusty main'
sudo apt-get update

Tenga en cuenta que también puede genera tu propio PPA aquí y encuentre la ubicación más cercana a su servidor.

Instale MariaDB con este comando:

sudo apt-get install mariadb-server

Durante la instalación, le pedirá que establezca una contraseña para el usuario raíz.

mariadb-set-root-contraseña

Después de la instalación, puede iniciar MariaDB con el comando:

Instalación de PHP y HHVM

HHVM no reemplaza a PHP. Es una máquina virtual de código abierto diseñada para ejecutar programas escritos en Hack y PHP. HHVM utiliza un enfoque de compilación justo a tiempo (JIT) para lograr un rendimiento superior mientras mantiene la flexibilidad de desarrollo que proporciona PHP.

Antes de instalar HHVM, es importante instalar primero PHP en el servidor. En lugar de instalar el paquete PHP5 completo, que incluye un montón de archivos Apache, solo instalaremos php5-fpm, que luego instalará las dependencias de PHP necesarias. Además, necesitaremos php5-fpm como alternativa para HHVM.

sudo apt-get install php5-fpm php5-mysql php5-curl

php5-instalación

Una vez hecho esto, instale HHVM con los comandos:

wget -O - https://dl.hhvm.com/conf/hhvm.gpg.key | sudo apt-key add -
echo deb https://dl.hhvm.com/ubuntu trusty main | sudo tee /etc/apt/sources.list.d/hhvm.list
sudo apt-get update
sudo apt-get install hhvm

hhvm-después-de-la-instalación-configuración

Después de instalar HHVM, proceda a configurarlo para Nginx con el comando:

sudo /usr/share/hhvm/install_fastcgi.sh

hhvm-install-fastcgi

Por último, reinicie HHVM

sudo service hhvm restart

Para probar si HHVM está funcionando, cree un archivo «phpinfo.php» en la carpeta raíz de Nginx.

sudo nano /var/www/html/phpinfo.php

y pega la siguiente línea:

Presione «Ctrl + o» para guardar y «Ctrl + x» para salir.

En su navegador, cargue la url: https://123.4.56.789/phpinfo.php (reemplace 123.4.56.789 con la dirección IP de su servidor). Debería ver solo la palabra «HipHop» para mostrar que HHVM está funcionando.

hhvm-hiphop-pantalla

Configuración de sitios para que se ejecuten en Nginx y HHVM (con respaldo de php5-fpm)

Ahora que tiene todo configurado, es hora de crear un host virtual para ejecutar su sitio web.

Cree un nuevo archivo de configuración que contenga los detalles de su sitio web:

sudo nano /etc/nginx/sites-available/my-site

y pega el siguiente fragmento:

server {
        listen 80;
        listen [::]:80;
 
        root /var/www/html;
 
        # Add index.php to the list if you are using PHP
        index index.html index.htm;
 
        server_name mywebsite.com;
        include hhvm-with-fallback.conf;
 
        location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                try_files $uri $uri/ =404;
        }
 
        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        location @fallback {
        #       include snippets/fastcgi-php.conf;
        #
        #       # With php5-fpm:
               fastcgi_pass unix:/var/run/php5-fpm.sock;
               fastcgi_index index.php;
               include fastcgi_params;
        }
 
        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        location ~ /\.ht {
                deny all;
        }
}

Puedes cambiar el server_name para apuntar a su propio dominio y el root ubicación de la carpeta donde desea que se sirvan los archivos.

HHVM tiene este error de bloquearse ocasionalmente sin reiniciarse; esto hará que el sitio web falle con un error 500. En este caso, crearemos un sistema alternativo mediante el cual PHP5-FPM se hará cargo cuando falle HHVM. Observe la location @fallback bloque en el fragmento de configuración de arriba? Esa es la devolución de llamada cuando falla HHVM. Para completar la ecuación, aún necesitamos crear el archivo «hhvm-with-fallback.conf», que es una versión modificada del archivo «hhvm.conf».

sudo nano /etc/nginx/hhvm-with-fallback.conf

Pegue el siguiente fragmento:

location ~ \.(hh|php)$ {
    proxy_intercept_errors on;
    error_page 500 501 502 503 = @fallback;
 
    fastcgi_keep_conn on;
 
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include        fastcgi_params;
}

Guardar y salir del archivo.

Por último, pruebe la configuración de Nginx con

y si todo está bien, reinicie Nginx.

sudo service nginx restart

Eso es todo. Ha completado la configuración de la pila LEMH en su servidor Linux.

Experto Geek - Tu Guía en Tendencias Tecnológicas