标签: plack

Plack :: App :: CGIBin通过Apache和mod_fastcgi - 找不到CGI脚本

我正试图Plack::App::CGIBin在FreeBSD 8.2上使用Apache2和FastCGI.最终的目标是能够使用这个设置通过Plack服务一大堆遗留的CGI脚本,以便利用其中间件功能,但我甚至无法得到一个简单的例子.

我已经按照关于Plack :: Handler :: FCGIPlack :: App :: CGIBin本身的CPAN文档,但我不确定我是否遗漏了某些内容或做错了哪些文档没有涵盖.

这是我添加的Apache配置:

# Set up external server
FastCgiExternalServer /tmp/placktest.fcgi -socket /tmp/fcgi.socket

# URL to be handled by FastCGI
Alias /plack/ /tmp/placktest.fcgi/
Run Code Online (Sandbox Code Playgroud)

运行外部服务器的命令:

plackup -s FCGI --listen /tmp/fcgi.socket /data/www/psgi/app.psgi
Run Code Online (Sandbox Code Playgroud)

服务器成功启动,返回以下内容:

FastCGI: manager (pid <pid>): initialized
FastCGI: manager (pid <pid>): server (pid <pid>) started
FastCGI: server (pid <pid>): initialized
Run Code Online (Sandbox Code Playgroud)

这是app.psgi:

#!/usr/bin/env plackup -s FCGI

use Plack::App::CGIBin;
use Plack::Builder;

my $app = Plack::App::CGIBin->new(
    root => '/data/www/plack',
)->to_app; …
Run Code Online (Sandbox Code Playgroud)

apache perl fastcgi plack psgi

34
推荐指数
1
解决办法
905
查看次数

nginx/starman/dancer网络堆栈的解释

我已经做了一段时间的网络编程,并且对LAMP堆栈非常熟悉.我决定尝试玩弄nginx的/接龙/舞者堆栈和我有点困惑如何理解,从一个高层次,所有的部分是如何相互关联的.设置堆栈似乎并不像设置LAMP堆栈那样简单,但这可能是因为我并不真正了解这些部分是如何相关的.

我理解nginx正在扮演的角色 - 一个轻量级的网络服务器/代理 - 但我对starman与pgsi,plack和舞者的关系感到困惑.

我将非常感谢这些部分如何相互关联以及为什么每个部分都需要(或不必要)来获得堆栈设置的高级细分.谢谢!

nginx plack starman dancer

32
推荐指数
3
解决办法
7026
查看次数

为什么在Catalyst/Plack/Starman中使用nginx?

我正在尝试使用Plack/Starman部署我的小型Catalyst Web应用程序.所有文档似乎都表明我想将它与nginx结合使用.这有什么好处?为什么不直接在Star 80上使用Starman?

perl nginx catalyst plack starman

23
推荐指数
2
解决办法
6355
查看次数

如何让Mason2 UTF-8干净?

重新提出问题,因为

评论:这个问题已经获得了"流行的问题徽章",所以可能我不是唯一没有希望的人.:)

不幸的是,展示完整的问题堆栈导致了一个非常长的问题,这是非常梅森特定的.

首先,只有意见的部分:)

我使用HTML :: Mason多年,现在尝试使用Mason2.在诗人梅森 都在CPAN最先进的框架.没有找到任何比较,开箱即用的东西允许写得如此干净/但非常黑客:)/ web-apps,包括许多电池(记录,缓存,配置管理,基于原生PGSI等......)

不幸的是,作者并不关心其余部分,例如默认情况下,它只是基于ascii, 没有任何手册,常见问题或建议:如何使用unicode

现在的事实.演示.创建一个诗人应用程序:

poet new my #the "my" directory is the $poet_root
mkdir -p my/comps/xls
cd my/comps/xls
Run Code Online (Sandbox Code Playgroud)

并添加到dhandler.mc下面(将说明两个基本问题)

<%class>
    has 'dwl';
    use Excel::Writer::XLSX;
</%class>
<%init>
    my $file = $m->path_info;

    $file =~ s/[^\w\.]//g;
    my $cell = lc join ' ', "ÅNGSTRÖM", "in the", $file;

    if( $.dwl ) …
Run Code Online (Sandbox Code Playgroud)

perl utf-8 mason moose plack

23
推荐指数
1
解决办法
1953
查看次数

现代perl - 准备运行应用程序 - 通过示例学习 - 从什么?

我正在学习现代perl - Moose,Plack等.在很多建议中你可以阅读"通过实例学习" - 所以开始搜索一些用Modern perl编写的可立即运行的应用程序.

浏览了很多页面:

还有更多(perl.org等) - 不幸的是 - 我找不到任何用现代perl编写的"准备运行"应用程序.

我没有找到任何Moose/Plack - CMS,既没有ShoppingCart,也没有Blog或任何Web应用程序.很难相信它们不存在,所以我可能在错误的地方寻找.

请问您能指出一些用Modern Perl(不仅仅是框架)编写的"Ready to run"Web应用程序吗?我检查了上面链接中的所有应用程序,没有人是Moose/Plack.


已经找到了"现代"的应用程序

基于催化剂:

其他Moose/Plack应用:

  • 还没有

perl moose plack

20
推荐指数
2
解决办法
2589
查看次数

nginx和Perl:FastCGI与反向代理(PSGI/Starman)

如今,运行Perl Web应用程序的一个非常流行的选择似乎是nginx webserver代理对FastCGI守护程序或PSGI启用的Web服务器(例如Starman)的请求.

关于为什么一般会这样做会有很多问题(例如为什么在Catalyst/Plack/Starman中使用nginx?)并且答案似乎适用于这两种情况(例如,允许nginx提供静态内容,轻松重启应用程序服务器,负载均衡等)

但是,我对使用FastCGI与反向代理方法的优缺点特别感兴趣.似乎Starman被广泛认为是最快和最好的Perl PSGI应用程序/网络服务器,我很难看到使用FastCGI的任何优势.这两种方法似乎都支持:

  • UNIX域套接字以及TCP套接字
  • fork/process manager样式服务器以及非阻塞基于事件的(例如AnyEvent)服务器.
  • 信号处理/正常重启
  • PSGI

同样,任一选项的nginx配置都非常相似.

那你为什么选择一个呢?

perl reverse-proxy fastcgi nginx plack

19
推荐指数
1
解决办法
8337
查看次数

Plack&taint模式

是否建议使用perl的污点模式开发Plack应用程序(中间件)?

如果是,如何在受污染的模式下启动plackup和/或Starman?在简单的CGI脚本中,很容易用shebang线完成.

perl -T /path/to/{plackup|starman}做这个工作吗?或者这是推荐的方式吗?或者不推荐?

关于组合Plack + Taint模式的任何想法,指针,文章?

perl plack psgi

11
推荐指数
1
解决办法
465
查看次数

你如何阻止perl Dancer/Starman/Plack服务器?

我使用以下方式启动了Dancer/Starman服务器:

sudo plackup -s Starman -p 5001 -E deployment --workers=10 -a mywebapp/bin/app.pl

但我不确定如何停止服务器.有人能给我一个快速的方法来阻止它以及它产生的所有工人吗?

perl plack starman dancer

10
推荐指数
1
解决办法
3007
查看次数

多站点感知PSGI应用程序开发

普拉克::生成器允许挂接多个主机,例如一些如下面的代码片段:

my @sites = load_site_names();
my $apps;
for my $site (@sites) {
    $apps->{$site} = Some::PsgiFramework::MyApp->new( config => get_config($site) );
}

use Plack::Builder;
builder {
    for my $site (@sites) {
        mount "$site" => $apps->{$site};
    }
    mount '/' => sub { ... };
}
Run Code Online (Sandbox Code Playgroud)

例如

  • load_site_names返回站点的列表一样http://example.com,http://some.other.site.com...
  • 每个"虚拟主机"都会使用相同的 Some::PsgiFramework::MyApp
  • 只是他们的配置不同

我完全需要以上内容 - 需要开发一个简单的网络应用程序,该应用程序应该部署在不同(低流量)站点的数据库中,并且不希望为每个站点设置不同的PSGI服务器.

然而,Plack本身的作者说(在Plack :: Request中)

请注意,此模块旨在供Plack中间件开发人员和Web应用程序框架开发人员而非应用程序开发人员(最终用户)使用.

使用Plack :: Request直接编写Web应用程序当然是可行的,但不推荐:它就像使用mod_perl的Apache :: Request那样:但是程度太低.

如果您正在编写Web应用程序而不是框架,那么建议您使用一个支持PSGI的Web应用程序框架(http://plackperl.org/#frameworks),或者查看HTTP :: Engine等模块在PSGI之上提供更高级别的请求和响应API.

这就是问题所在.

我在MetaCPAN中检查了许多不同的基于PSGI的框架.并且AFAIK每个都是基于单一的,例如,不允许写入应用程序可以多次共享(安装)同一个不同的站点app.psgi. …

perl plack psgi

10
推荐指数
1
解决办法
392
查看次数

使用Plack/PSGI/Poet应用程序进行身份验证和/或HTTPS

我需要构建一个简单的Web应用程序.我决定用Poet(Mason2)来做,它使用Plack.

应该允许应用程序仅由经过身份验证的用户使用,因此我需要构建一些登录/密码功能.

已经有一个Plack模块Plack :: Middleware :: Auth :: Basic允许使用Basic用户auth,可以设置检查.htpasswd或类似.但基本身份验证不是很安全; 任何人都可以通过数据包捕获等方式获取登录密码.

以下是两种可能的解决方案

  • 通过HTTPS运行我的app.psgi(443) - 链接级加密
  • 或者是否有一些更好的auth方法允许在没有https的情况下进行安全身份验证?

问题:

  • 关于HTTPS - 我不知道如何运行我的app.psgiHTTPS.我需要稍微修改一下我的应用程序吗?什么链接显示我如何运行plackuphttps?
  • 或者第二种:是否有一些方法(中间件/或perl模块)允许我在标准的未加密端口上构建 安全认证?(80)

那么,使用Plack应用程序实现安全身份验证的相对简单方法是什么?

PS:我不关心其余的沟通.我只需要不允许获取密码的安全身份验证.

PPS:https很容易使用apache(和自签名)证书.但我不知道如何使用它plackup(以及任何其他基于Plack的服务器)

perl plack psgi poet

9
推荐指数
1
解决办法
1533
查看次数

标签 统计

plack ×10

perl ×9

psgi ×4

nginx ×3

starman ×3

dancer ×2

fastcgi ×2

moose ×2

apache ×1

catalyst ×1

mason ×1

poet ×1

reverse-proxy ×1

utf-8 ×1