OpenResty® - это веб-сервер, являющийся некой версией Nginx с расширенным функционалом. Кроме различных плюшек, он славится тем, что идет со встроенным LuaJIT - это самая быстрая реализация скриптового языка программирования Lua. Иными словами, после установки Вы сможете программировать на языке Lua и выполнять этот код в Nginx!
В этой статье мы рассмотрим установку OpenResty на CentOS 7, после чего установим lua-resty-template - шаблонизатор для Lua и OpenResty, который повысит удобство при разработке. Также выполним несколько примеров на Lua.
Примечание: установку OpenResty желательно выполнять в систему, на которой не установлен Nginx!
Установим необходимые пакеты, если они еще не установлены:
Далее настроим OpenResty с регулярными выражениями PCRE, поддержкой IPv6 и некоторыми другими модулями Nginx (перед установкой проверьте последнюю версию на сайте openresty.org):
Если все прошло без ошибок, то проверим, что openresty установлен:
Запустить openresty можно следующей командой:
Остановить так:
Теперь создадим сервис для openresty, чтобы к нему можно было обращаться через
Далее:
Перезагрузить конфигурацию Nginx можно такой командой:
Теперь, если в браузере перейти на http://ваш_ip, то должна появиться страница с приветствием:
Welcome to OpenResty!
Установим lua-resty-template:
Подробное описание шаблонизатора смотрите здесь:
И так, у вас установлен OpenResty и вы теперь можете конфигурировать веб-сервер так, как вы это привыкли делать на Nginx.
Файл конфига находится здесь:
Добавьте новый локейшн:
перезагрузите конфигурацию:
и перейдите http://ваш_ip/test - в результате вы должны увидеть "Hello, World!"
Теперь, вместо
В нем говорится, что если в урле передать параметр
И изменим локейшн:
Обратите внимание на 3-ю строку
В результате консоль выдаст предупреждение, что использование
Поэтому в реальных условиях использовать ее не рекомендуется.
Проверим работу http://ваш_ip/test?name=John
Чтобы повысить удобство при веб-разработке подключим шаблонизатор lua-resty-template. Для этого создайте новый файл
И измените файл index.lua (2 варианта использования = один результат):
При этом, перезагружать конфигурацию Nginx не нужно, т.к. в
Остальные директивы OpenResty смотрите здесь:
Модули здесь:
А теперь я пожелаю Вам дальнейшего приятного погружения в мир OpenResty и Lua
В этой статье мы рассмотрим установку OpenResty на CentOS 7, после чего установим lua-resty-template - шаблонизатор для Lua и OpenResty, который повысит удобство при разработке. Также выполним несколько примеров на Lua.
Примечание: установку OpenResty желательно выполнять в систему, на которой не установлен Nginx!
Установим необходимые пакеты, если они еще не установлены:
yum -y install gcc pcre-devel zlib-devel openssl-devel gd gd-devel wget curl perl unzip zip perl-Digest-MD5
Далее настроим OpenResty с регулярными выражениями PCRE, поддержкой IPv6 и некоторыми другими модулями Nginx (перед установкой проверьте последнюю версию на сайте openresty.org):
Bash:
wget https://openresty.org/download/openresty-1.19.9.1.tar.gz
tar -xvf openresty-1.19.9.1.tar.gz
cd openresty-1.19.9.1/
./configure -j2 --with-pcre-jit --with-ipv6 --with-http_iconv_module --with-http_image_filter_module --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream_realip_module
make -j2 && sudo make install
export PATH=/usr/local/openresty/bin:/usr/local/openresty/nginx/sbin:/usr/local/openresty/luajit/bin:$PATH
sed -i 's~export PATH~export PATH=/usr/local/openresty/bin\:/usr/local/openresty/nginx/sbin\:/usr/local/openresty/luajit/bin\:\$PATH\nexport PATH~g' /etc/profile
openresty -v
или nginx -v
Запустить openresty можно следующей командой:
sudo /usr/local/openresty/bin/openresty
Остановить так:
sudo /usr/local/openresty/bin/openresty -s quit
Теперь создадим сервис для openresty, чтобы к нему можно было обращаться через
systemctl
и чтобы он запускался автоматически при перезапуске сервера:
Bash:
printf "[Unit]
Description=The nginx HTTP and reverse proxy server
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/usr/local/openresty/nginx/logs/nginx.pid
ExecStartPre=/usr/local/openresty/bin/openresty -t
ExecStart=/usr/local/openresty/bin/openresty
ExecReload=/bin/kill -s HUP \$MAINPID
ExecStop=/bin/kill -s QUIT \$MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
" > /usr/lib/systemd/system/nginx.service
Bash:
systemctl enable nginx
systemctl start nginx
nginx -s reload
Теперь, если в браузере перейти на http://ваш_ip, то должна появиться страница с приветствием:
Welcome to OpenResty!
Установим lua-resty-template:
Код:
opm get bungle/lua-resty-template
GitHub - bungle/lua-resty-template: Templating Engine (HTML) for Lua and OpenResty.
Templating Engine (HTML) for Lua and OpenResty. Contribute to bungle/lua-resty-template development by creating an account on GitHub.
github.com
И так, у вас установлен OpenResty и вы теперь можете конфигурировать веб-сервер так, как вы это привыкли делать на Nginx.
Файл конфига находится здесь:
/usr/local/openresty/nginx/conf/nginx.conf
- откройте его и давайте, скорее уже, напишем что-нибудь на Lua! Добавьте новый локейшн:
Hello, World!:
location = /test {
default_type 'text/plain';
content_by_lua_block {
ngx.say('Hello, World!')
}
}
nginx -s reload
и перейдите http://ваш_ip/test - в результате вы должны увидеть "Hello, World!"
Теперь, вместо
content_by_lua_block
, подключим файл index.lua
, в котором будем выполнять lua-код. Создайте файл /usr/local/openresty/nginx/html/index.lua
:
Hello, Anonymous!:
local name = ngx.var.arg_name or "Anonymous"
ngx.say("Hello, ", name, "!")
name
, то этот параметр отобразится в браузере. Если перейти без параметра, то выведет "Hello, Anonymous!"И изменим локейшн:
NGINX:
location = /test {
default_type 'text/plain';
lua_code_cache off;
content_by_lua_file /usr/local/openresty/nginx/html/index.lua;
}
lua_code_cache off;
- она говорит, что любые изменения в файле index.lua
будут применяться "на лету", без необходимости перезагружать конфигурацию Nginx. Но для применения изменений в nginx.conf
перезагрузить конфигурацию все же нужно:nginx -s reload
В результате консоль выдаст предупреждение, что использование
lua_code_cache is off;
снизит производительность:
Код:
nginx: [alert] lua_code_cache is off; this will hurt performance in /usr/local/openresty/nginx/conf/nginx.conf:77
Проверим работу http://ваш_ip/test?name=John
Чтобы повысить удобство при веб-разработке подключим шаблонизатор lua-resty-template. Для этого создайте новый файл
/usr/local/openresty/nginx/html/view.html
с таким содержимым:
HTML:
<!DOCTYPE html>
<html>
<body>
<h1>{{message}}</h1>
</body>
</html>
1-й вариант:
local template = require "resty.template"
-- Using template.render:
template.render("view.html", {
message = "Hello, World!"
})
2-й вариант:
local template = require "resty.template"
-- Using template.new:
local view = template.new "view.html"
view.message = "Hello, World!"
view:render()
nginx.conf
мы ранее добавили строку lua_code_cache off;
Остальные директивы OpenResty смотрите здесь:
Directives - OpenResty Reference
openresty-reference.readthedocs.io
Модули здесь:
А теперь я пожелаю Вам дальнейшего приятного погружения в мир OpenResty и Lua
[OpenResty] Установка Lapis и MoonScript в OpenResty на CentOS 7 | Nginx / Tengine / OpenResty
Любопытно, а аналог есть?
stackobject.com