取势 明道 优术

作者为 扶 凯 发表

本文为我的译文,原文地址:http://advent.plackperl.org/2009/12/day-3-using-plackup.html

前二个文章讲了怎么样使用 plackup 的命令来运行 Hello World 的 PSGI 的应用.我们知道Plackup 是 PSGI 协议的实现.
这个 Plackup 是用来做什么的啦,其实这个是用来加载 PSGI 应用的命令行工具.是从 Rack's 的 rackup 得到的灵感.它能用来运行任何的 PSGI 的应用.我们只需要给 PSGI 存成 .psgi 的文件就行了.
使用 Plack 来来启动 PSGI 的 web 服务器做很容易.

$ plackup hello.psgi
HTTP::Server::PSGI: Accepting connections at http://0.0.0.0:5000/

你只需要指定你当前目录真实应用的文件名就行了.

 

选择不同的后端服务器的有下面的方法

  • 如果环境变量中 PLACK_SERVER 设置了后端服务器,就会使用设置的这个.也可以使用 -s 来指定可以选择合适自己的应用.
  • 如果环境变量中指定了象 GATEWAY_INTERFACE 和 FCGI_ROLE 那么后端会使用相应地 CGI 和 FCGI 来处理.
  • 如果加载的 .psgi 的文件指定的象 AnyEvent, Coro or POE ,就会自动的使用这些来进行处理
  • 都没有的话,就使用默认的 "Standalone" 的后端.

(1. 你能指定使用什么来处理.使用参数 -s or –server 就行了.我们讲过 plackup 能做为后端服务模型的选择.

$ plackup -s Starman hello.psgi

常用的有 Starman ,Twiggy,和 Feersum.

(2. plackup 的命令默认会加载 2 个中间件 AccessLog 和 StackTrace,这会帮助你开发,但是生产环境你如果想禁止这些中间件,可以使用 -E (or –environment) 来改变这个.

$ plackup -E production -s Starman hello.psgi

 

(3. 其它的一些命令行的参数可以修改象服务器的地址,端口之类

$ plackup -s Starlet --host 127.0.0.1 --port 8080 hello.psgi
Plack::Server::Standalone: Accepting connections at http://127.0.0.1:8080/

 

(4. 使用使用域套接字的 socket 的 FCGI 的后端监听

$ plackup -s FCGI --listen /tmp/fcgi.sock app.psgi

plackup 更加多的选项的参数,请运行 perldoc plackup 查看.

 

来了就留个评论吧! 3个评论



    lwp 2011年12月18日 的 08:25

    感觉翻译有点问题:

    If the environment variable PLACK_SERVER is set, it is used
    ==>
    如果环境变量中 PLACK_SERVER 设置了不同的

    plackup command would by default enable two middleware components, AccessLog and StackTrace to help aid the development,
    ==>
    plackup 的命令默认会加载一些中间件。 AccessLog 和 StackTrace 会帮助你开发,