问题标签 [psgi]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
515 浏览

perl - 除了 Catalyst 之外,还有其他现代(Moose/PSGI)Web 框架吗?

除了 Catalyst 之外,是否还有其他 Perl Web 开发框架:

  • 写着Moose
  • 为 PSGI 原生编写的(不使用一些 PSGI 仿真)
  • Unicode 就绪/安全 - 所以 Perl 5.10+
  • 小巧、可扩展且美观

或者是Catalyst镇上唯一的人?:)

AFAIK, Dancer, Mojolicious,Jifty不是 Moose 核心

0 投票
1 回答
1618 浏览

perl - 使用 Plack::Handler::Apache2 和 Apache2 的 PSGI 应用程序导致“未找到”

第一次发帖,好久没来了。

我在 plackup 中使用了一个小型 PSGI 应用程序,但我喜欢切换到 Apache2 的子域。我使用“ plackup /home/ath88/work/kolle/script/dir.psgi -port 80 ”运行应用程序。它可以完美地运行在 plackup 上。该应用程序非常简单,可以在https://github.com/ath88/Kolletilmelding/blob/master/script/dir.psgi找到

但是,出于显而易见的原因,我想运行 Apache2 而不是 plackup。为此,我想使用 Plack::Handler::Apache2。我的 VirtualHost 如下所示:

Apache2 重新启动正常。但是当我尝试访问 aths.dk 时,我只是得到一个 404 未找到。应用程序的目录是正确的,因为它会导致 500 内部错误。查看 apache2/error.log 我得到这个:[无关,见编辑]

每次我重新启动 Apache2 时都会发生这种情况。

我花了 4 个小时试图调试它。我完全难以置信。

编辑:原来 SIGTERM 是从停止 Apache2 重新启动。当我启动它时它不会发生。傻我。

0 投票
2 回答
257 浏览

perl - 如何在 dotcloud 上使用 psgi 部署 bugzilla?

我想在dotcloud上部署bugzilla,但是perl环境是psgi。

文档说我必须使用“模块将 PSGI 挂钩添加到传统 CGI 或 FastCGI 应用程序”。

我找到了CGI::Emulate::PSGI模块,但不知道该怎么做。

我是一名 Python 程序员,没有 Perl 经验。

0 投票
1 回答
234 浏览

perl - 使用 Starman 在 PLACKUP 下动态加载包

我正在使用 starman 在 plackup 下运行一个 Web 应用程序,并尝试根据用户请求动态加载和实例化包。我正在使用“需要 $packageName;” 要加载包,其中 $packageName 包含包的名称,名称存储在配置文件中。然后我在实例上执行一组已知的命令,因为所有类都继承自基类并包含一组已知方法。

这在 Apache 下工作正常,但由于某种原因,plackup 说它无法找到包,即使 @INC 包含库路径并且包名称是库路径中最后一个目录的绝对名称。也就是说,包名是 Base::My::Package。

有人遇到过这个问题吗?我是否需要更新 Starman 中的其他路径?我正在使用 -I 标志执行 plackup 并更新我的环境 PERL5LIB 变量。我也在主应用程序类中尝试过'use lib /...',但这些都不起作用。

谢谢

0 投票
1 回答
1707 浏览

perl - PSGI 日志记录 (Perl)

尽管文档相当少且不明确,并且对于初学者来说是一个有效的 How-To,但我已经成长为喜欢 PSGI 并且目前正在我的一个应用程序中使用它。我想知道的是如何管理跨多节点应用程序的日志记录?关于登录 PSGI,什么被认为是“最佳实践”?

0 投票
3 回答
3584 浏览

perl - 部署 Perl 应用程序

部署 Perl 应用程序的最佳实践是什么?假设您正在部署到一个带有很少 CPAN 模块安装的 vanilla 盒子。理想的构建、部署方法是什么?模块::构建,ExtUtils::MakeMaker,其他?我正在从那些为大规模应用反复这样做的人那里寻找一些最佳实践想法。

该应用程序正在部署到服务器上。它不是 CPAN 或脚本。它实际上是一个 PSGI Web 应用程序。也就是说,大量的 Perl 包。

我目前有一个部署脚本,它使用 Net::SSH::Expect 将 SSH 连接到新服务器,安装一些工具并配置服务器,然后从源代码控制中拉下所需的应用程序分支。这感觉不错,但这是最佳实践吗?

下一步是构建应用程序。跟踪和管理依赖项、从 CPAN 安装这些依赖项以及确保应用程序准备好运行的最佳实践是什么?

谢谢

0 投票
1 回答
602 浏览

perl - 如何将静态 CGI 风格的 perl 脚本(xxx.pl)转换为动态 PSGI 应用程序?

CGI 风格的 perl 脚本很难用这种风格进行测试:

(注意:代码在 ruby​​ 中,使用Rack::Test)。

但是,如果我可以将静态文件转换为 PSGI 应用程序(代码引用,接受$env作为参数,返回[$status, $header, $body]),事情就会变得简单,Plack::Test剩下的就交给我了。

我正在阅读 PSGI 规范,通常我可以看到这条路线。但我还是想知道这有没有存在之轮?

另外,我认为Plack::Test它的界面不如Rack::Test任何替代品漂亮?

0 投票
1 回答
675 浏览

perl - 如何为 PSGI / Plack Web 应用程序(在 Perl 中)提供静态文件(图像等)?

如何为基于 PSGI / Plack 的 Web 应用程序提供静态文件(图像、javascript、样式表)?

答案可能取决于使用的 Web 服务器,无论是 CGI、FastCGI、mod_psgi 还是像 Starman 这样的纯 Perl。我听说使用 Plack::Middleware::Static 或 Plack::App::File(连同 Plack::App::URLMap)仅用于开发......

0 投票
2 回答
1158 浏览

windows - Windows 上的持久、预分叉(阻塞)Perl Web 服务

我想以合理的速度/容量在 Windows(假设 2008 R2 x64)上运行 Perl Web 应用程序。

目前我的应用程序基于 Mojolicious,使用 Strawberry Perl 并通过 Apache 2.2-win32 作为 CGI 运行。大约 20000 行代码,perl 进程的创建需要很多时间,几乎一两秒,而实际处理只是一眨眼的时间。如果应用程序配置为快速 CGI 或持久样式,我会想象它运行得更快并且能够提供更多请求/秒。

如果我在 Linux 上,我可能会坚持使用 PSGI/Plack/Starman 和 Nginx 反向代理。不幸的是,Starman/Starlet 不支持 Win32。

Morbo/Twiggy 不能满足我的需要,因为 webapp 确实会阻塞(数据库调用),并且对于某些请求,它确实需要一段时间才能完成。

所以我现在正在寻找快速 CGI 解决方案。不幸的是 Apache 和 mod_fcgid 不适用于 Perl ( Stackoverflow )。而且我还能够找到或制定与 mod_fastcgi 与 2.4 兼容的二进制文件。我还没有尝试过的是 mod_fastcgi + Apache 2.2,但我希望我可以继续使用 Apache 2.4。

我也在考虑是否可以运行我自己的 FCGI 进程管理器(管理预分叉的东西),连同 Mojo::Server::FastCGI,并使用 mod_proxy_fcgi 来代替做反向代理。Perl 模块 FCGI::ProcManager 也不支持 Win32。可能有任何其他流程管理器,可能在 C# 中?(最好在 C# 中进行进一步的黑客攻击)

让我总结一下这个问题 -

  • 在 Windows 上以比 CGI 快得多的速度运行 Perl Web 应用程序的最佳方式是什么,但不是以非阻塞方式。
  • 并且可能会导致一个问题 - 如何使 mod_fcgid 与 Perl 一起工作?或者那里有任何 fcgi 进程管理器吗?
0 投票
1 回答
281 浏览

perl - Plack::Builder 得到职位

有没有办法在特定方法(GET 或 POST)的构建器部分中指定,但不能同时指定两者?我的构建器部分示例。

它处理 get 和 post 请求,如何禁用 GET 请求的处理?

谢谢。