使えるシステムから使いたいシステムへ、有限会社アテージ

LuaのWeb Frameworkの需要はほとんどないと思いますが、LapisというFrameworkを見かけたので触ってみました。

LuaのWeb Frameworkといえば、OrbitTirがありますが、いずれも開発は止まっていて寂しい限りでした。そこへ最近になって現れたのがLapisです。

Lapisのホームページの頭には、MoonScriptとOpenRestyのWeb Frameworkと書かれています。

MoonScriptはCoffeeScriptにインスパイアされて作られた言語で、CoffeeScriptがJavaScriptに変換されるように、Luaに変換することができます。

また、OpenRestyはNginxに拡張モジュールを入れたもので、コアはNginxそのものです。

インストール

moonscriptとlapisはluarocksでインストールできます。

openrestyはtarballをダウントードしてmakeします。

Lapisプロジェクト

Lapisプロジェクトを作成します。空のディレクトリで以下のコマンドを実行します。生成されるファイルは2つのみです。

サーバーを起動

以下のコマンドでopenrestyが起動します。デフォルトで8080ポートで起動します。

コマンドを実行するとディレクトリやファイルが追加されて以下のような構成になります。この状態でhttp://localhost:8080/にアクセスするとInternal Server Errorとなります。

Hello World!

Hello World!を書いてみます。

デフォルトのnginx.conf設定では、DocumentRootにアクセスした時にweb.luaというファイルを読みにいきます。Luaのコードを書いてもよいのですが、MoonScriptを使ってみます。

web.moon

以下のコマンドを実行すると、web.luaというファイルが生成されMoonScriptからLuaのコードに変換されます。

web.lua

http://localhost:8080/にアクセスするとHello World!が表示されればOKです。

Tips

MonnScriptを編集するたびにLuaのコードに変換するのは面倒なので、以下のコマンドでmooncを常駐させておくことができます。mooncはカレントディレクトリ以下の.moonファイルの監視していて、更新されるとLuaのコードに変換してくれます。

ベンチマーク

apache benchをとってみました。キャッシュを有効にすることで劇的に処理能力が向上します。

キャッシュ無効(lua_code_cache off)

キャッシュ有効(lua_code_cache on)

おまけ

前回紹介しましたPHPのフレームワークPhalconでHello World!のベンチマークをとってみました。WebサーバーはApache、PHPにはAPCを入れています。

Lapis(Nginx+Lua)速いです。