OpenResty Установка Lapis и MoonScript в OpenResty на CentOS 7

OpenResty 

Установка Lapis и MoonScript в OpenResty на CentOS 7

В предыдущей статье мы рассмотрели установку OpenResty на CentOS 7:
Сейчас мы узнаем, как установить Lapis и MoonScript.

MoonScript - это динамический скриптовый язык, который компилируется в Lua. Он упрощает написание кода, реализует классы с наследованием. Он также обеспечивает чистый синтаксис, используя отступы, что позволяет избежать do, then, end и т.д., которые имеются в скрипте Lua. То есть MoonScript чувствителен пробелам и переносам строк.
Если вы новичок в Lua, то сначала можно потренироваться без MoonScript, чтобы поближе познакомиться с Lua.

Lapis - это веб-фреймворк, написанный для Lua и MoonScript, который построен на основе дистрибутива OpenResty. Помимо веб-фреймворка, Lapis также предоставляет инструменты для управления OpenResty в различных конфигурационных средах. Даже если вы не хотите использовать веб-фреймворк, он может оказаться полезным, если вы работаете с OpenResty.
Lapis включает в себя URL-маршрутизатор, HTML-шаблоны, защиту от CSRF-атак и поддержку сеансов, систему активной записи PostgreSQL или MySQL для работы с моделями и несколько других полезных функций, необходимых для разработки веб-сайтов.

Для установки Lapis и MoonScript нам потребуется сначала установить LuaRocks - это менеджер пакетов для Lua (перед установкой проверьте последнюю версию http://luarocks.org/releases/):
Установка LuaRocks:
wget http://luarocks.org/releases/luarocks-3.5.0.tar.gz
tar -xzvf luarocks-3.5.0.tar.gz
cd luarocks-3.5.0/
./configure --prefix=/usr/local/openresty/luajit \
    --with-lua=/usr/local/openresty/luajit/ \
    --lua-suffix=jit \
    --with-lua-include=/usr/local/openresty/luajit/include/luajit-2.1
make && sudo make install
Теперь установим Lapis:
Установка Lapis:
cd ~
yum install git -y
/usr/local/openresty/luajit/bin/luarocks install lapis
Установим MoonScript:
Установка MoonScript:
/usr/local/openresty/luajit/bin/luarocks install moonscript
Примечание: если вы внесли правку в PATH (как в описании по установке OpenResty), то можно запустить команду так: luarocks install [package] В дальнейшем будут использоваться команды без указания путей.

Все готово, теперь создадим костяк нашего сайта на MoonScript в папке example:
Bash:
mkdir /usr/local/openresty/site/example && cd "$_"
lapis new
Примечание: если вы хотите создать стартовый проект на Lua, то нужно использовать такую команду: lapis new --lua

Создадим в каталоге /usr/local/openresty/site/example файл конфигурации config.lua, который будет автоматически подхватывать Lapis:
Bash:
printf "local config = require(\"lapis.config\")

config(\"development\", {
  port = 8080
})

config(\"production\", {
  port = 80,
  num_workers = 4,
  code_cache = \"on\"
})
" > /usr/local/openresty/site/example/config.lua
Почитать больше о конфигурациях Lapis можно здесь:

После этого в каталоге example появится новый проект с файлами .moon (или .lua), config.lua и nginx.conf. Откройте и посмотрите файлы, которые были сгенерированы. Обратите внимание, на nginx.conf:
nginx.conf:
worker_processes ${{NUM_WORKERS}};
error_log stderr notice;
daemon off;
pid logs/nginx.pid;

events {
  worker_connections 1024;
}

http {
  include mime.types;

  server {
    listen ${{PORT}};
    lua_code_cache ${{CODE_CACHE}};

    location / {
      default_type text/html;
      content_by_lua '
        require("lapis").serve("app")
      ';
    }

    location /static/ {
      alias static/;
    }

    location /favicon.ico {
      alias static/favicon.ico;
    }
  }
}
Здесь имеются макросы типа ${{VARIABLE}}, которые при запуске сервера заменятся на соответствующие опции из файла config.lua. Также конфиг сконфигурирован таким образом, что позволяет видеть в консоли текущий лог. За это отвечают следующие директивы:
NGINX:
error_log stderr notice;
daemon off;
Директива lua_code_cache будет сгенерирована так: lua_code_cache "off" - то есть, код lua не будет кешироваться и любые изменения в файлах .lua тут же будут отображаться в браузере.
Эти опции используются исключительно для отладки и их следует отключить в рабочем проекте.

Далее, чтобы выполнить код из файла .moon, его нужно сначала перевести в lua-код. Это можно сделать такой командой: moonc app.moon, после чего в текущем каталоге появится файл app.lua, который, в итоге, и будет выполняться. Т.е. на MoonScript мы пишем код, затем переводим его в lua и выполняем.
Можно также автоматически переводить из .moon в .lua такой командой:
moonc -w /usr/local/openresty/site/example
Таким образом moonc будет постоянно проверять файлы .moon на изменения и переводить их в .lua "на лету".

Пришло время запустить OpenResty с помощью Lapis. Сделать это можно так:
lapis server - lapis найдет путь установки OpenResty и запустит его, а в качестве конфига будет использован файл nginx.conf из текущего каталога в котором мы запускаем данную команду (при этом, app.lua должен быть предварительно сгенерирован командой moonc app.moon).

Остановить сервер можно нажав клавиши CTRL+C.

Перейдите на адрес http://ваш_ip:8080/ - там вы должны увидеть "Welcome to Lapis", с чем я Вас и поздравляю! :)
 

Популярные теги

Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нём некорректно.
Вам необходимо обновить браузер или попробовать использовать другой.

Сверху