Руководство по использованию OpenResty

Smartisan пожертвовала выручку от продажи билетов на мероприятие по запуску T2 проекту OpenResty с открытым исходным кодом. Сегодня мы расскажем, что же такое OpenResty.


Введение в OpenResty

OpenResty (также известный как: ngx_openresty) — это масштабируемая веб-платформа на основе NGINX, инициированная китайским разработчиком Чжан Ичунь и предоставляющая множество высококачественных сторонних модулей.

OpenResty — это мощный сервер веб-приложений. Веб-разработчики могут использовать язык сценариев Lua для вызова различных модулей C и Lua, поддерживаемых Nginx. Что ещё важнее, с точки зрения производительности OpenResty позволяет быстро создавать сверхвысокопроизводительные системы веб-приложений, способные обрабатывать ответы при более чем 10K одновременных подключений.

360, UPYUN, Alibaba Cloud, Sina, Tencent, Qunar, Kugou Music и т. д. — все они активно используют OpenResty.


Установка OpenResty

В этом примере руководства установка OpenResty выполняется на основе Ubuntu 14.04.

Библиотеки зависимостей OpenResty включают: perl 5.6.1+, libreadline, libpcre, libssl.

Итак, сначала нам нужно установить эти библиотеки зависимостей, что также очень просто:

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

Если ваша система — CentOS или RedHat, вы можете использовать следующие команды:

yum install readline-devel pcre-devel openssl-devel

Далее мы можем с официального сайта (https://openresty.org/cn/) скачать последний пакет исходного кода OpenResty, затем распаковать, скомпилировать и установить его:

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

По умолчанию программа будет установлена в каталог /usr/local/openresty. Вы можете использовать ./configure --help для просмотра дополнительных параметров конфигурации.


Пример Hello World

После успешной установки мы можем использовать openresty для непосредственного вывода HTML-страниц.

Сначала мы можем создать рабочий каталог:

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

Каталог logs используется для хранения логов, а conf — для хранения файлов конфигурации.

Далее мы создаём файл nginx.conf в каталоге conf. Код выглядит следующим образом:

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>")
            ';
        }
    }
}

Если вы знакомы с конфигурацией nginx, приведённый выше код должен быть вам очень знаком. Здесь мы записали HTML-код прямо в файл конфигурации.

Запуск openresty

По умолчанию openresty установлен в каталог /usr/local/openresty. Команда запуска:

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

Если вывода нет, это означает, что запуск прошёл успешно. -p задаёт наш каталог проекта, а -c задаёт файл конфигурации.

Далее мы можем использовать curl, чтобы проверить, можно ли к нему нормально обратиться:

curl http://localhost:9000/

Вывод:

<p>Hello, World!</p>

Или откройте http://localhost:9000/ в браузере:

Видите? HTML, который мы написали в файле конфигурации, был выведен нормально.

Цель OpenResty — позволить вашим веб-сервисам работать непосредственно внутри сервера Nginx, полностью используя неблокирующую модель ввода-вывода Nginx, обеспечивая стабильно высокопроизводительные ответы не только на запросы HTTP-клиентов, но и на удалённые бэкенды, такие как MySQL, PostgreSQL, Memcached и Redis.

Поэтому для некоторых высокопроизводительных сервисов вы можете напрямую использовать OpenResty для доступа к MySQL или Redis, без необходимости использовать сторонние языки (PHP, Python, Ruby) для обращения к базе данных и последующего возврата, что значительно повышает производительность приложения.


Связанные сайты