raku fastcgi nativecall

其他类别 2025-08-17

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”。

下载源码

通过命令行克隆项目:

git clone https://github.com/jonathanstowe/raku-fastcgi-nativecall.git