Fastcgi :: NativeCall
这是使用NativeCall的FastCGI用于Raku的实现
概要
use FastCGI::NativeCall; my $ fcgi = FastCGI::NativeCall . new ( path => \" /tmp/fastcgi.sock \" , backlog => 32 ); my $ count = 0 ; while $ fcgi . accept() { say $ fcgi . env; $ fcgi . header( Content-Type => \" text/html \" ); $ fcgi . Print( \" { ++ $ count } \" ); }
示例目录中有一个示例NGINX配置。
如果使用MOD_FCGID使用Apache HTTPD,则将脚本通过其stdin(文件描述符0)执行为侦听套接字,因此您不需要创建自己的套接字,并且上面的脚本变成了:
use FastCGI::NativeCall; my $ fcgi = FastCGI::NativeCall . new ( socket => 0 ); my $ count = 0 ; while $ fcgi . accept() { say $ fcgi . env; $ fcgi . header( Content-Type => \" text/html \" ); $ fcgi . Print( \" { ++ $ count } \" ); }
示例目录中有一个Apache配置段。您几乎可以肯定希望根据自己的要求进行调整。
描述
FastCGI是一项协议,允许HTTP服务器通过插座与持久应用程序进行通信,从而删除了传统CGI应用程序的流程启动开销。最常见的HTTP服务器软件(例如Apache,Nginx,Lighthttpd等)将其作为标准(或通过支持模块)支持。
该模块提供了一种简单的机制,可以在Raku中创建FastCGI服务器应用程序。
FastCGI服务器是单线螺纹,但是在前端服务器的良好支持下,配置的调整可能非常有效。
安装
为了正确使用此功能,您需要一些前端服务器,该服务器使用UNIX域插座支持FASTCGI。
假设您有一个工作Rakudo安装,您应该能够使用ZEF安装此操作:
zef install FastCGI::NativeCall
# Or from a local clone of the distribution
zef install .
支持
我可能不是询问为FastCGI配置各种HTTP服务器的合适人选。尽管我想提供任何示例配置感兴趣。
如果您在Selinux和Apache下运行,您可能会发现它不会运行您的脚本,您需要做类似的事情:
chcon -R -t httpd_sys_script_exec_t /var/www/fcgi
显然将其调整为您自己的情况。
同样,测试有点垃圾,我还没有弄清楚如何模拟快速行为的HTTP服务器。
如果您有任何建议/错误等
许可证和版权
这是免费软件,请参阅发行版中的许可证文件。
©Carbin 2015©Jonathan Stowe 2016-2021
FastCGI C应用程序库是根据自己的许可分发的。有关许可证,请参见“ ext/licensen.terms”。
