luvitを使ってLuaでWebアプリ!

luvitはNode.jsの機能をLuaで実現しようみたいな?
もののようです。(まだよくわかっていない...)

試しにインストールとブラウザ上で"Hello world"を
表示するところまでやってみます。


最初 Mac OS X 10.6.8 に入れたのですが

luaL_newstate has failed

が出て実行できませんでした。。
解決策を調べて色々と試してはみたのですが
力不足で解決できず、諦めましたw

環境

CentOS 6.2
luvit 0.3.1-61-g95c2503

インストール

git clone https://github.com/luvit/luvit.git
cd luvit
make
make install

※予めLua, LuaJITを入れておく必要はありません。

コーディング

githubから落としてきたなかにexamplesがあって
実装例が豊富にあるので参考になります。

今回はブラウザで表示するだけなので
luvit/examples/http-server.lua
を使用します。

-- http-server.lua
local http = require("http")

http.createServer(function (req, res)
  local body = "Hello world\n"
  res:writeHead(200, {
    ["Content-Type"] = "text/plain",
    ["Content-Length"] = #body
  })
  res:finish(body)
end):listen(8080)

print("Server listening at http://localhost:8080/")

このサンプルファイルを実行して

luvit http-server.lua

"http://localhost:8080/"にアクセスするだけ。簡単!

localhostではなくIPアドレスを指定する方法

検索しても見つからなかったのでソースコードを調べてみました。
"luvit/lib/luvit/net.lua"
を見るとlisten()の第二引数に指定でいけそうです。

-- my-http-server.lua
local http = require("http")

http.createServer(function (req, res)
  local body = "Hello world\n"
  res:writeHead(200, {
    ["Content-Type"] = "text/plain",
    ["Content-Length"] = #body
  })
  res:finish(body)
end):listen(8080, "192.168.212.197")

print("Server listening at http://localhost:8080/")

実行!

luvit my-http-server.lua

ブラウザで"http://192.168.212.197:8080/"にアクセス

Hello world

できた!