问题标签 [mod-perl2]

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 投票
3 回答
3575 浏览

ubuntu - VM 上的 Apache 2 *有时* 找不到启用 mods 的目录

我在 Ubuntu 10.04 服务器虚拟机(ESXi 4.1)上运行 Apache 2,得到了一些非常奇怪的东西:

有时会找到启用 mods 的目录。
有时不是。似乎没有大约 75% 没有找到。
两者之间没有任何改变。

以下是 error.log 中的一些摘录,结合命令行来演示正在发生的事情:

因此,我首先停止 Apache,以便更轻松地在日志中查找内容:

然后我开始它:

然后我重新启动它:

然后我将目录改回一个以测试它使用我的 shell 路径的理论

到目前为止看起来……有点……

看起来还是这样,但这次没有日志错误。换回apache目录再试一次

嗯,好像是这样吧?至于为什么……不知道……

除了那个 DNS 的东西之外,另一个 OK 重新启动......

到目前为止一切顺利......等等......糟糕,这显示在日志中,而我没有更改目录,而 Apache 正在尝试启动,而是关闭。

我去重新启动它,然后...

它已经备份了。我很困惑。

我不知道为什么会发生这种情况,而且应该这样做是没有意义的。我的直觉告诉我,它以某种方式没有走上正确的道路,并且出于某种原因期望启用 mod 与我所在的位置相关当 Apache 在运行过程中因同样的“错误”而自行关闭时

这是我的 httpd.conf:

这是我的 apache2.conf:

这是我的默认虚拟域:

和我的 envars 文件:

我难住了。

有什么想法吗?

0 投票
1 回答
164 浏览

apache2 - 用于从通配符获取子域的 Apache 插件 perl 脚本

我在这个阶段遇到了一个问题,我已经设法解决了这个问题,但唯一的问题是找出 perl 如何实现这一点。

这是链接的当前结构:

这是我目前拥有的 VirtualHost:

上面显示了当前的 VirtualHost 结构,以及需要子域模式的位置。我查看了 mod_perl 并启用了它,现在也明白我可以添加标签了。然而,我的 perl 技能是有限的,如果不是不存在的话。

我在这里看到了答案,我相信它与我的有点相似,但需要更多的模组:https ://serverfault.com/questions/85256/using-url-within-vhost-container-with-mod-perl-dynamically

有人可以告诉我如何实现这一目标和/或为我指明正确的方向吗?

非常感谢,肖恩

0 投票
1 回答
2825 浏览

html - CGI::escapeHTML() 不起作用

我是 CGI 新手,我的代码输出:

似乎escapeHTML()不起作用。

我在 winxp 上使用 XAMPP 1.7.2 开发我的 cgi 代码。我该如何解决。我需要为当前的 XAMPP 下载和安装额外的 CGI 插件吗?感谢您的帮助。

0 投票
1 回答
1116 浏览

perl - 已发送电子邮件中的附件为空白

我已经使用此脚本发送文本文件,电子邮件带有附件,但是当我打开附件时它是空白的。知道为什么吗?我错过了什么吗?谢谢

0 投票
3 回答
4012 浏览

perl - PSGI:它是什么,有什么大惊小怪的?

我一直在尝试确定我的 Web 项目是否适合使用 PSGI 实现,但我真的不知道在这个阶段它对我的应用程序有什么好处。

我真的不明白所有的大惊小怪。对我来说,PSGI 似乎是一个框架,它在不同的 Apache 模块之间提供了一个通用接口,让您可以在它们之间移动您的应用程序。例如,轻松地将您的应用程序从运行在 mod_perl 上移动到 fastcgi,并为在这两个选项上运行提供应用程序支持。

是这样吗,还是我错过了什么?

由于我和我的团队不仅参与了应用程序的开发,还参与了服务器的维护和设置工作,我不认为能够在 fastcgi、cgi 和 mod_perl 上运行对我们来说有什么价值,我们可以只需 mod_perl 就可以了。

我是否误解了 PSGI 功能,还是它不适合我的项目?

0 投票
1 回答
144 浏览

file-io - 由 mod_perl 执行的文件操作比在 CGI 中执行的要慢

我有一个在 cgi 上运行的应用程序。我已将其移植到 mod_perl2(使用 apache2::compat)并将 cgi 文件重写为 mod_perl 处理程序。奇怪的是,我通过 mod_perl 获得的性能被日志记录中的延迟所掩盖。

应用程序中的日志记录机制类似于 logger->logmsg(msg)

logger::logmsg { 我的 $msg = shift; 打开日志文件,“>>日志文件”;打印日志文件 $msg 关闭日志文件;}

应用程序完成了大量日志记录,并由不同级别的日志记录控制。当我关闭日志记录时,在 mod_perl 上的事务工作速度比在 cgi 上快 80%(代码库相同。我只是使用 mod_perl 的处理程序和 cgi 的网关脚本运行)。当我在 mod_perl 上打开日志记录应用程序时,运行速度会慢 80%。

从日志中,我可以看到相同的日志模块在作为 cgi 脚本运行时将 msg 附加到文件中需要 0.01 秒,而在运行 thro mod_perl 处理程序时需要 0.03 秒。

我尝试了不同的方法,例如使用 STDOUT 并将其重定向到日志文件、使用 request_obj->log 方法等,但我无法击败 cgi 所花费的时间。这种方法我做错了什么吗?

为什么在同一个 apache 服务器中通过 mod_perl 脚本执行文件操作时慢 3 倍。

任何指针都受到高度赞赏。

谢谢。

0 投票
0 回答
63 浏览

perl - 请求生命周期对象

我想创建一个具有请求生命周期的对象。此外,它必须从不同的处理程序访问。例如:我在 PerlMapToStorageHandler 中创建它,然后可以在 PerlResponseHandler 中访问它。

PS我读过“笔记”,但它不适合(恕我直言)。

PSS。对不起,我的英语不好。

0 投票
2 回答
210 浏览

perl - 用于 Web 抓取服务的 Perl、mod_perl2 或 CGI?

我将设计一个开源网络服务,它应该从多个(目前是三个)网站收集(“网络抓取”)一些数据。

这些网站不公开任何网络服务或任何 API,它们只是发布网页。

数据将根据来自所有网站的任何客户端的请求“实时”收集,然后将其解析为 XML 以返回给客户端。

服务器操作系统将是 Linux。

客户端最初只是我的一个 Android 应用程序。

如果项目成功的话,并发客户可能会达到 100 个或更多... ;-)。

目前我的偏好是采用:

  • perl(用于服务语言)
  • 带有ModPerl::Registry的mod_perl2(用于 Apache 嵌入式快速 perl 解释器)
  • perl 模块CHI::Driver::FastMmap(用于现代快速缓存处理程序)
  • perl 模块Coro(用于异步事件循环以并行放置许多请求)

由于我认为该项目的规范可能具有一般用途和兴趣,并且由于 Coromod_perl2 的组合使用我遇到了很多问题,所以我问:

我的收养偏好是否匹配?

您是否发现任何不兼容或潜在问题?

您有什么建议可以增强(按此顺序):

  • 组件之间的兼容性
  • 实施的整洁度
  • 易于维护
  • 表演
0 投票
1 回答
586 浏览

apache2 - 如何在 mod_perl2 下为 Apache2 的每个子进程创建一个持久连接句柄(用于 MySQL 和 memcached)?

我无计可施。我当前(失败)的小型 MySQL 支持网页的实现很大程度上依赖于一个模块 Project::Connection,该模块存储两个包范围(我们的)句柄(mysql_handle 和 memc_handle),这些句柄通过调用 Project::Connection 进行初始化: :child_init 在 PerlChildInitHandler 阶段。同样,我(想)在 PerlChildExitHandler 阶段断开连接。问题是我的调试确认在 ChildInit 子例程期间正确创建了处理程序,但是当我请求“GET /”时,处理请求的模块(Project::Web::Home,它使用的 Project::Connection)报告两个句柄都未定义!

以下是相关代码:

startup.pl(在服务器配置中使用 PerlRequire 调用):

Project/Connection.pm(保存连接句柄):

项目.pm:

项目/Web/home.pm:

现在,我的理解是在Apache的启动过程中,当它编译并运行startup.pl时,所有的模块都会被编译到父进程中。然后父进程分叉成子进程,复制编译后的代码,使子进程成为父进程的副本。之后,子进程应该运行 Project::Connection::child_init 初始化 mysql 和 memcache 的句柄,以便当子进程处理“GET /”时,Project::Web::home 模块可以“使用 Project::Connection " 得到那些句柄;最后,这些句柄应该为整个子进程定义。

您可能想知道的额外信息:

来自日志:“Apache/2.2.16 (Debian) mod_apreq2-20090110/2.7.1 mod_perl/2.0.4 Perl/v5.10.1 已配置”来自 /etc/apache2/sites-available/project:

0 投票
1 回答
430 浏览

linux - 如何更改 Apache2/mod_perl2 的工作目录

我有一个 mod_perl2 模块,它将一些文件写入工作目录。mod_perl2 或 Apache2 的标准工作目录似乎是“/”。当然,Apache 是不允许在这个目录下写文件的。

谁能告诉我如何更改工作目录或 mod_perl2 写入的目录?

我在 SLES 10 上使用 Apache2 Prefork。