20
UbuntuOpenResty入れてLuaプログラミング イオシフ▼高倉佑輔

OpenRestyでLuaプログラミング

Embed Size (px)

DESCRIPTION

小江戸らぐ 2014年10月のオフな集まり(第147回)にて発表。 その後まさかのUbuntu PPAのメンテナンスを依頼されるとは。

Citation preview

Page 1: OpenRestyでLuaプログラミング

UbuntuにOpenResty入れてLuaプログラミング

イオシフ▼高倉佑輔

Page 2: OpenRestyでLuaプログラミング

OpenRestyとは?

NginxにLuaモジュールなどを組み込んだバンドル版

Page 3: OpenRestyでLuaプログラミング

Luaとは?

● この子(の名前の元ネタ)● (あ、この子は「エンドブレイカー!」というゲームの私の持ちキャラの一人です。)

● この作品は、株式会社トミーウォーカーのPBW『エンドブレイカー!』用のイラストとして、高倉佑輔が作成を依頼したものです。

● イラストの使用権は高倉佑輔に、著作権は春琴弥生に、全ての権利は株式会社トミーウォーカーが所有します。

Page 4: OpenRestyでLuaプログラミング

真面目にLuaの説明

● スクリプト型プログラミング言語。● プロトタイプ型オブジェクト指向● 高い移植性● Cとの親和性

● スクリプト言語最速のJITコンパイラ

などなど

Page 5: OpenRestyでLuaプログラミング

こんなところで使われています(1)

● Ragnarok Online

Page 6: OpenRestyでLuaプログラミング

こんなところで使われています(2)

● Civilization V

Page 7: OpenRestyでLuaプログラミング

こんなところで使われています(3)

● Europa Universalis IV

Page 8: OpenRestyでLuaプログラミング

他にもこんなところで……

● Osm2pgsql● VOCALOID3● PHANTASY STAR ONLINE 2● アイドルマスター2

Page 9: OpenRestyでLuaプログラミング

それはともかく

この言語をWebに使う方法はないかと探してました。とおもったらLapisなるWebフレームワークが。

(OpenResty + MoonScript)

Page 10: OpenRestyでLuaプログラミング

しかしまあ……

ほにゃららScript系メタ言語が作られてる言語って基本的に慣れづらいよねぇ

Javascriptとか。

Page 11: OpenRestyでLuaプログラミング

というわけで

MoonScriptこれまたCoffeeScriptのような言語。

要するにクラス型で書けるLuaコードを生成するメタ言語。

Lapisは、MoonScriptで書ける。もちろんLuaでも。

Lapisにはテンプレートエンジンもあるらしい。

Page 12: OpenRestyでLuaプログラミング

必要な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

Page 13: OpenRestyでLuaプログラミング

ソースのダウンロード

● 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

Page 14: OpenRestyでLuaプログラミング

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

Page 15: OpenRestyでLuaプログラミング

OpenRestyが動いたら……

● luarocksから色々取ってくる

– sudo luarocks install moonscript

– sudo luarocks install lapis

Page 16: OpenRestyでLuaプログラミング

Lapis スタートアップ

● lapis new

● すると以下のようなコードができる

lapis = require "lapis"

class extends lapis.Application

"/": =>

"Welcome to Lapis #{require "lapis.version"}!"

Page 17: OpenRestyでLuaプログラミング

ここでLuaにコンパイル

moonc app.moon

これを行うと、Luaコードが生成される。

Page 18: OpenRestyでLuaプログラミング

app.lua の中身

(実コードをご覧ください)

Page 19: OpenRestyでLuaプログラミング

app.lua の実行

lapis server

で、http://localhost:8080/

にアクセス!

(実際にご覧ください)

Page 20: OpenRestyでLuaプログラミング

ご清聴ありがとうございました