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.exelocal 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する方法は次回調べようと思います。

1件のコメント

  • Имеется такая услуга – добровольное медицинское обслуживание . Она предполагает, что вы платите небольшую сумму за абонемент и ходит на прием целый год бесплатно. Однако опросы показали, что лишь 6% жителей Санкт-Петербурга знают об этом. По какой причине? Потому что частным клиникам выгоднее брать плату за каждый визит. А если честный врач попытается рассказать про добровольное медицинское обслуживание клиенту – это сулит ему увольнением. Информация о ДМО уже спровоцировала много скандалов, сразу после того как информацию об этом распространил один возмущенный врач. Его уволили , после того, как он предложил ДМО постоянному клиенту. Самое ужасное, что информация по ДМО есть в открытом доступе, просто натыкались на эту информацию только случайные люди. Как отстоять свои права? О правилах предоставления такой услуги и обязанностях клиник можно узнать, сделав запрос в Яндексе: “добровольное медицинское обслуживание”. И именно обслуживание, а не страхование.

    34j5c6h86

コメントする

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


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

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください