Introducción al uso de OpenResty

Smartisan donó los ingresos de las entradas en la conferencia de lanzamiento del T2 al proyecto de código abierto OpenResty. Hoy les explicaremos qué demonios es OpenResty.


Introducción a OpenResty

OpenResty (también conocido como: ngx_openresty) es una plataforma web escalable basada en NGINX, iniciada por el chino Zhang Yichun, y ofrece muchos módulos de terceros de alta calidad.

OpenResty es un potente servidor de aplicaciones web. Los desarrolladores web pueden usar el lenguaje de scripts Lua para invocar diversos módulos de C y Lua compatibles con Nginx. Más importante aún, en cuanto a rendimiento, OpenResty puede construir rápidamente sistemas de aplicaciones web de alto rendimiento capaces de manejar más de 10K conexiones concurrentes.

360, UPYUN, Alibaba Cloud, Sina, Tencent, Qunar, Kugou Music, etc., son usuarios avanzados de OpenResty.


Instalación de OpenResty

El tutorial para novatos se basa en Ubuntu 14.04 para instalar OpenResty.

Las bibliotecas de las que depende OpenResty son: perl 5.6.1+, libreadline, libpcre, libssl.

Por lo tanto, primero debemos instalar estas bibliotecas de dependencia, y es muy sencillo:

apt-get install libreadline-dev libpcre3-dev libssl-dev perl

Si tu sistema es Centos o RedHat, puedes usar el siguiente comando:

yum install readline-devel pcre-devel openssl-devel

A continuación, podemos desde el sitio oficial (https://openresty.org/cn/) descargar el último paquete fuente de OpenResty, descomprimirlo y compilarlo para instalarlo:

wget https://openresty.org/download/ngx_openresty-1.9.7.1.tar.gz   # 下载
tar xzvf ngx_openresty-1.9.7.1.tar.gz       # 解压
cd ngx_openresty-1.9.7.1/ 
./configure
make 
make install

De forma predeterminada, el programa se instalará en el directorio /usr/local/openresty. Puedes usar ./configure --help para ver más opciones de configuración.


Ejemplo de Hello World

Una vez instalado correctamente, podemos usar openresty para generar directamente páginas HTML.

Primero, podemos crear un directorio de trabajo:

mkdir /home/www
cd /home/www/
mkdir logs/ conf/

El directorio logs se utiliza para almacenar registros, y conf para almacenar archivos de configuración.

A continuación, creamos un archivo nginx.conf en el directorio conf. El código es el siguiente:

worker_processes  1;
error_log logs/error.log;
events {
    worker_connections 1024;
}
http {
    server {
        listen 9000;
        location / {
            default_type text/html;
            content_by_lua '
                ngx.say("<p>Hello, World!</p>")
            ';
        }
    }
}

Si estás familiarizado con la configuración de nginx, deberías reconocer el código anterior. Aquí hemos escrito el código HTML directamente en el archivo de configuración.

Iniciar openresty

De forma predeterminada, openresty se instala en el directorio /usr/local/openresty. El comando para iniciarlo es:

cd /home/www
/usr/local/openresty/nginx/sbin/nginx -p `pwd`/ -c conf/nginx.conf

Si no hay ninguna salida, significa que el inicio fue exitoso. -p especifica nuestro directorio de proyecto, -c especifica el archivo de configuración.

A continuación, podemos usar curl para probar si se puede acceder correctamente:

curl http://localhost:9000/

El resultado de salida es:

<p>Hello, World!</p>

O accede a http://localhost:9000/ a través del navegador:

¿Ves? El HTML que escribimos en el archivo de configuración se ha mostrado correctamente.

El objetivo de OpenResty es hacer que tus servicios web se ejecuten directamente dentro del servidor Nginx, aprovechando al máximo el modelo de E/S no bloqueante de Nginx, no solo para las solicitudes de clientes HTTP, sino también para backends remotos como MySQL, PostgreSQL, ~Memcaches y ~Redis, proporcionando respuestas consistentes de alto rendimiento.

Por lo tanto, para algunos servicios de alto rendimiento, se puede usar directamente OpenResty para acceder a MySQL o Redis, etc., sin necesidad de pasar por un lenguaje de terceros (PHP, Python, Ruby) para acceder a la base de datos y luego devolver los resultados, lo que mejora enormemente el rendimiento de la aplicación.


Sitios relacionados