登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Code@Pig Home

喜欢背着一袋Code傻笑的Pig .. 忧美.欢笑.记忆.忘却 .之. 角落

 
 
 

日志

 
 

[nginx] nginx + spawn-fcgi + wsapi/lua(搭建lua的web dev平台)  

2011-01-09 18:46:35|  分类: web_nginx |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
nginx, web server
spawn-fcgi, 一个 fastcgi wrapper
wsapi.fcgi, WSAPI是针对lua的web标准,wsapi.fcgi就是把fcgi请求变成wsapi协议。

FreeBSD 8.1

安装 wsapi-fcgi
/usr/ports/www/fcgi
# pkg_add -r fcgi-devkit

# luarocks install wsapi-fcgi

安装 spawn-fcgi
/usr/ports/www/spawn-fcgi
# pkg_add -r spawn-fcgi

启动 spawn-fcgi
spawn-fcgi -F 1 -s /var/run/nginx-fcgi.sock -P /var/run/nginx-fcgi.pid -U nobody -- /usr/local/bin/wsapi.fcgi 

安装nginx
/usr/ports/devel/pcre
# pkg_add -r pcre

下载 nginx-0.8.54
# ./configure && gmake install

---------------- nginx.conf ----------------
worker_processes  1;

events {
    worker_connections  1024;
}

http {
    server {
        listen 8080;
        server_name localhost;

        location / {
            fastcgi_pass unix:/var/run/nginx-fcgi.sock;
            fastcgi_index hello.lua;
            fastcgi_param SCRIPT_FILENAME /home/kasicass/sandbox/kepler/wsapi$fastcgi_script_name;
        }
    }
}
-----------------------------------------------

启动 nginx
# /usr/local/nginx/sbin/nginx

WSAPI Hello World Program
------------------ hello.lua ---------------------
#!/usr/bin/env wsapi.cgi

module(..., package.seeall)

function run(wsapi_env)
    local headers = { ["Content-type"] = "text/html" }

    local function hello_text()
        coroutine.yield("<html><body>")
        coroutine.yield("<p>Hello WSAPI!</p>")
        coroutine.yield("<p>PATH_INFO: " .. wsapi_env.PATH_INFO .. "</p>")
        coroutine.yield("<p>SCRIPT_NAME: " .. wsapi_env.SCRIPT_NAME .. "</p>")
        coroutine.yield("</body></html>")
    end

    return 200, headers, coroutine.wrap(hello_text)
end
---------------------------------------------------

然后通过浏览器访问:
http://127.0.0.1/hello.lua

碰到的问题
spawn-fcgi 中的 "-U nobody" 参数,让 spawn-fcgi 以 nobody 权限启动。否则 nginx worker (nobody权限) 无法正确 connect()。

nginx.conf 配置中 "fastcgi_index hello.lua;" 让 127.0.0.1/ 的访问变成 127.0.0.1/hello.lua

参考资料
老外的一篇 lua + nginx + fastcgi 的配置资料

nginx + fastcgi + spawn-fcgi + mysql

nginx + fastcgi
  评论这张
 
阅读(4530)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018