如何在Nginx上使用FastCGI运行Perl脚本?

10
所以我正在遵循这个指南:http://technotes.1000lines.net/?p=23,按照步骤进行。我有一个使用Debian Etch的VPN(slicehost.com),使用nginx提供网站(目前为静态网站)。我使用wget下载了FastCGI,并进行了通常的make make install例程。
因此,我认为由于FastCGI通常无法运行CGI脚本,您必须使用某种Perl包装程序来解释Perl。
现在我运行这个脚本 http://technotes.1000lines.net/fastcgi-wrapper.pl 并且我遇到了与该脚本提交页面上的人遇到的完全相同的问题: http://www.ruby-forum.com/topic/145858 (我不是Ruby专业人员,里面没有任何与Ruby相关的内容)
我的问题是一直得到一个

# bind/listen: No such file or directory

我不知道该怎么处理。我将感激任何帮助,并且我可以提供任何其他人需要的更多细节。

3个回答

12

Web服务器需要一个Unix域套接字来连接FastCGI应用程序,但无法创建套接字。最有可能的原因是您想要创建套接字的目录不存在(因为当您执行bind时它们会自动创建)。


4
这就是我喜欢StackOverflow的原因。我花了大约3个小时来解决这个问题,但没有任何进展,而你很快就能够总结出它的原因。非常感谢你,你帮我省了很多麻烦。 - rey

4

Leon说得很对。允许套接字监听有两个前提条件:

  1. 确保套接字目录存在。
  2. 在fastcgi-wrapper.pl脚本中定义为/var/run/nginx/perl_cgi-dispatch.sock。因此,您需要确保/var/run/nginx存在。
  3. 确保套接字目录的所有者与执行fastcgi-wrapper.pl的用户相同。

0

我打算尝试将 fastcgi-wrapper.pl 进行“简化”,以便可以与 spawn-fcgi 一起使用。

我已经使用了其中的两个套接字:

spawn-fcgi -C 3 -u www-data -s /var/run/php-fcgi.sock -P /var/run/php-fcgi.pid -- /usr/bin/php5-cgi
spawn-fcgi -F 3 -u www-data -s /var/run/lua-fcgi.sock -P /var/run/lua-fcgi.pid -- /usr/bin/wsapi.fcgi

/var/run 目录下有:

-rw-r--r-- 1 root     root     14 2010-08-07 12:14 /var/run/lua-fcgi.pid
srwxr-xr-x 1 www-data www-data  0 2010-08-07 12:14 /var/run/lua-fcgi.sock=
-rw-r--r-- 1 root     root      4 2010-08-07 12:14 /var/run/php-fcgi.pid
srwxr-xr-x 1 www-data www-data  0 2010-08-07 12:14 /var/run/php-fcgi.sock=

我可以轻松地启动和停止FastCGI包装器,我也想用Perl做到这一点。

如果有人已经有一个与spawn-fcgi一起工作的脚本,我很乐意使用它,或者至少看一下它。

干杯, --polemon


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接