Upload
iosif-takakura
View
470
Download
1
Embed Size (px)
DESCRIPTION
小江戸らぐ 2014年10月のオフな集まり(第147回)にて発表。 その後まさかのUbuntu PPAのメンテナンスを依頼されるとは。
Citation preview
UbuntuにOpenResty入れてLuaプログラミング
イオシフ▼高倉佑輔
OpenRestyとは?
NginxにLuaモジュールなどを組み込んだバンドル版
Luaとは?
● この子(の名前の元ネタ)● (あ、この子は「エンドブレイカー!」というゲームの私の持ちキャラの一人です。)
● この作品は、株式会社トミーウォーカーのPBW『エンドブレイカー!』用のイラストとして、高倉佑輔が作成を依頼したものです。
● イラストの使用権は高倉佑輔に、著作権は春琴弥生に、全ての権利は株式会社トミーウォーカーが所有します。
真面目にLuaの説明
● スクリプト型プログラミング言語。● プロトタイプ型オブジェクト指向● 高い移植性● Cとの親和性
● スクリプト言語最速のJITコンパイラ
などなど
こんなところで使われています(1)
● Ragnarok Online
こんなところで使われています(2)
● Civilization V
こんなところで使われています(3)
● Europa Universalis IV
他にもこんなところで……
● Osm2pgsql● VOCALOID3● PHANTASY STAR ONLINE 2● アイドルマスター2
それはともかく
この言語をWebに使う方法はないかと探してました。とおもったらLapisなるWebフレームワークが。
(OpenResty + MoonScript)
しかしまあ……
ほにゃららScript系メタ言語が作られてる言語って基本的に慣れづらいよねぇ
Javascriptとか。
というわけで
MoonScriptこれまたCoffeeScriptのような言語。
要するにクラス型で書けるLuaコードを生成するメタ言語。
Lapisは、MoonScriptで書ける。もちろんLuaでも。
Lapisにはテンプレートエンジンもあるらしい。
必要なdebパッケージのインストール
● sudo apt-get install libreadline-dev libncurses5-dev libpcre3-dev libssl-dev perl make
● sudo apt-get install libpq-dev● sudo apt-get install ruby1.9.1 ruby1.9.1-dev git-core libxslt1-
dev libgd2-xpm-dev libgeoip-dev unzip zip build-essential● sudo apt-get install luarocks● sudo apt-get install postgresql postgresql-contrib● sudo apt-get install mariadb-server-5.5
ソースのダウンロード
● git clone https://github.com/openresty/ngx_openresty.git
● cd ngx_openresty● cd ngx_openresty-1.7.4.1rc2● vim openresty-ubuntu-build.sh● sh openresty-ubuntu-build.sh
openresty-ubuntu-build.sh の内容
./configure \
--sbin-path=/usr/sbin/openresty \
--conf-path=/etc/openresty/nginx.conf \
--error-log-path=/var/log/openresty/error.log \
--http-client-body-temp-path=/var/lib/openresty/body \
--http-fastcgi-temp-path=/var/lib/openresty/fastcgi \
--http-log-path=/var/log/openresty/access.log \
--http-proxy-temp-path=/var/lib/openresty/proxy \
--http-scgi-temp-path=/var/lib/openresty/scgi \
--http-uwsgi-temp-path=/var/lib/openresty/uwsgi \
--lock-path=/var/openresty/nginx.lock \
--pid-path=/var/run/openresty.pid --with-luajit --with-http_dav_module \
--with-http_flv_module --with-http_geoip_module \
--with-http_gzip_static_module --with-http_realip_module --with-http_stub_status_module \
--with-http_ssl_module --with-http_sub_module \
--with-ipv6 --with-sha1=/usr/include/openssl \
--with-md5=/usr/include/openssl --with-http_stub_status_module \
--with-http_secure_link_module --with-http_sub_module \
--with-http_postgres_module # <- Only if you want to access Postgres
make
sudo make install
OpenRestyが動いたら……
● luarocksから色々取ってくる
– sudo luarocks install moonscript
– sudo luarocks install lapis
Lapis スタートアップ
● lapis new
● すると以下のようなコードができる
lapis = require "lapis"
class extends lapis.Application
"/": =>
"Welcome to Lapis #{require "lapis.version"}!"
ここでLuaにコンパイル
moonc app.moon
これを行うと、Luaコードが生成される。
app.lua の中身
(実コードをご覧ください)
ご清聴ありがとうございました