如何在没有apache的情况下运行perl CGI脚本?这是出于测试目的,所以某种只处理一个请求的单进程服务器应该足够我。
答案 0 :(得分:5)
Plack::App::WrapCGI或Plack::App::CGIBin代表了一种方法(与plackup
和默认的单线程Plack HTTP服务器一起),但它并没有在他们真正期望的上下文中运行CGI (独立进程)运行所以它并不完全漂亮(与使用modperl注册表相同的注意事项,或多或少)。我不知道一个纯粹的perl网络服务器,它实际上将CGI作为CGI进行分支和运行(也不是非perl的一个做CGI并且需要零配置,尽管lighttpd很接近)。
“你使用CGI.pm”的原因是一个相关的问题是因为如果你还没有启动应用程序,你可能会考虑写几乎任何其他,例如< / p>
(以随机顺序隐藏我明显的偏袒)并获得能够轻松运行相同的应用程序作为独立的HTTP服务器,FastCGI,mod_perl应用程序或普通CGI,如果推动推,并没有阻抗不匹配,你写到CGI.pm的界面时得到
答案 1 :(得分:3)
由于您在评论中提到您正在使用CGI.pm,请注意CGI.pm提供了一系列从命令行运行CGI脚本的选项。见http://perldoc.perl.org/CGI.html#DEBUGGING。即使没有CGI.pm,您也可以随便伪造必要的环境变量并在文件中输入管道。基本上,从命令行运行CGI所需要做的就是设置
QUERY_STRING = blah=x&fu=bar
用于GET方法,或
CONTENT_LENGTH = length of your file
用于POST方法。
答案 2 :(得分:1)
脚本应该作为特定用户运行,目前我不想在测试
suexec
上设置apache
。
除了要运行httpd
的用户,要绑定到的接口/端口以及可能的cgi-bin
目录并运行一个以外,没有什么可以阻止您复制必需的Apache配置httpd
的单独副本(使用-f
选项)。这将是在应该运行的环境中测试应用程序的最安全的方法。
请参阅Starting Apache:
可以使用
-f
命令行选项在运行时指定其位置,如/usr/local/apache2/bin/apachectl -f /usr/local/apache2/conf/httpd.conf
答案 3 :(得分:0)
让自己成为虚拟机并随心所欲地做任何事情,包括运行apache。尽可能复制目标设置。