Lua勉強日記(7)

今日は、CGIを動かそうとして、かなり回り道しました。

正しい方法とは違うみたいですが、嵌ったのを記録しておきます。

以下は多分、正しいLuaでのCGIの動かし方ではありませんので、ご了承ください。

ダウンロード

cgiluaをダウンロードする。

http://luaforge.net/frs/download.php/3399/cgilua-5.1.2.zip

ダウンロード後に展開すると、srcディレクトリの中に*.luaという拡張子のファイルが12個ありました。

始めて遭遇する動的言語のライブラリらしいライブラリです。

lfs.dllが必要になるので、LuaFileSystemをダウンロードする。

http://luaforge.net/frs/download.php/3347/luafilesystem-1.4.1-win32-lua51.zip

ダウンロード後に展開すると、こちらは、lfs.dllしか無い。展開するとdll一個というのも、もう慣れました。

インストールというか配置

展開した中のsrcディレクトリにある、cgilua が、cgiluaの全体のようです。

今回も簡単のために、CGIを置くディレクトリ配下に、cgiluaディレクトリを配置します。

早速、Hello world.を動かそうとしたけど、SAPI がnilとかいうエラーが出た。

SAPIって何?

CIGLua は、cgi, fcgi mod_lua(Apacche), isapi(IIS) での各動作環境の違いを吸収する SAPI(Server API)という層を用意しているようです。

仕切直し

keplerという、Luaのパッケージの集合みたいなプロジェクトのソース中に、CGI用のASPIの実装があったので、それを利用します。

C:\lua5.1
│  lfs.dll
│  lua5.1.dll
│  lua5.1.exe
│
├─cgilua
│      authentication.lua
│      cgilua.lua
│      cookies.lua
│      dispatcher.lua
│      loader.lua
│      lp.lua
│      mime.lua
│      post.lua
│      readuntil.lua
│      serialize.lua
│      session.lua
│      urlcode.lua
│
└─sapi
└─cgi
info.lua       kepler-1.1から拝借
request.lua    kepler-1.1から拝借
response.lua   kepler-1.1から拝借
hello.cgi
#!c:/lua5.1/lua5.1.exe
local info = require "sapi.cgi.info"
local req = require "sapi.cgi.request"
local res = require "sapi.cgi.response"
SAPI = {
Info = info.open (),
Request = req.open (),
Response = res.open (),
}
require "cgilua.cgilua"
cgilua.htmlheader()
cgilua.put([[
<html>
<head>
  <title>Hello World</title>
</head>
<body>
  <strong>Hello World!</strong>
</body>
</html>]])

これで、ApacheのDocumentRoot配下に置いた hello.cgiにブラウザからアクセスしたら、ようやく、Hello worldが表示されました。

遠回りしたけど、本当は、keplerのWindows版をインストールして使うのが、正面玄関のようですね。

http://luaforge.net/frs/download.php/2722/kepler-1.1-beta2-win32-lua51.exe

これを使ってCGIする方法は次回調べようと思います。

コメントする

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です


reCaptcha の認証期間が終了しました。ページを再読み込みしてください。