Руководство по использованию 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) для обращения к базе данных и последующего возврата, что значительно повышает производительность приложения.
Связанные сайты
- Официальный сайт OpenResty на английском:http://openresty.org/
- Официальный сайт OpenResty на китайском:http://openresty.org/cn/
- Официальный сайт Nginx Wiki:http://wiki.nginx.org/
- Учебник по началу работы с Lua:Учебник по началу работы с Lua