标签: fastcgi

在Apache和NGINX之间共享PHP-CGI

我一直在我的网站上运行我的大部分PHP应用程序,在fastcgi后端,由NGINX提供服务.我有一个新的应用程序,似乎很好地与Apache集成; 例如,它严重依赖于动态编写的.htaccess文件.我正在努力修改它以与NGINX本地工作,但还没有准备好.与此同时,我将把NGINX代理连接到该路径直接连接到Apache,并让Apache处理它.

但是,我的内存限制为VPS,我宁愿不为NGINX(带有自己的APC缓存)运行一组PHP-CGI进程,而为Apache运行另一组PHP(使用更多内存用于 APC缓存).有没有人有幸在两者之间分享PHP?

mod_ fcgid似乎不支持使用已经运行的服务器,所以我尝试了mod_ fastcgi.这似乎最初起作用,但吸收了相当多的内存(承诺 - 它正在增长,而不仅仅是静态).更糟糕的是,我无法在我的apache配置中使用DirectoryIndex行来使用mod_fastcgi!

我补充道

    AddHandler php5-fastcgi .php
    FastCgiExternalServer /var/www -host 127.0.0.1:9000

到我的Apache配置,并处理所有.php页面,但像http://example.com/foo/这样的路径不服务器/foo/index.php!如果我删除FastCgiExternalServer,它确实找到index.php,但当然只是将其显示为文本.

我假设它是因为DirectoryIndex是在FastCgiExternalServer之后处理的,但我不知道如何更改它.

php apache fastcgi nginx

1
推荐指数
1
解决办法
2593
查看次数

FastCGI能与PHP一起使用吗?

FastCGI能与PHP一起使用吗?似乎有些运行Ruby on Rails的人在使用FastCGI时遇到了问题,但是用PHP可以解决这个问题吗?

php fastcgi

1
推荐指数
1
解决办法
823
查看次数

在Debian Lenny的Apache 2.2下Perl CGI或CGI :: Fast

我在Debian Lenny机器上有2个不同的Web服务器.一个运行FastCGI(TRAC),另一个Web服务器运行PHP和一些CGI脚本.所以我目前启用了2个Apache2模块(cgi和fcgi)以及相应的2个vhosts设置.我对这两个模块同时运行没有其他特别的兴趣.

所以我想保持只运行Apache fastcgi模块,因为它看起来更有效率.

您能否确认以下评估是对还是正确?
1-我将无法做什么/更改TRAC站点(已经运行fcgi)
2-我必须调整其他Web服务器vhost以使用fastcgi脚本的处理程序设置
3-我将只需要更改perl模块从"使用CGI"到"使用CGI :: Fast"
4-我将能够保留perl现有CGI脚本的其余部分
而不需要其他更改5-我不需要使用CGI :: Apache但CGI: :Web服务器脚本中的FastCGI(i/o当前CGI模块)

我希望我的观点很明确,因为它对我来说有点陌生......

谢谢

编辑:
thx为Naveed和J-16的提示,
这是我做的,如果它可以帮助其他人让它工作:

  • 哼,用CPAN安装CGI :: Fast,然后它运行得更好..
    在Debian上已经安装了libperl

    perl -MCPAN -e shell
    cpan> install CGI::Fast
    
    Run Code Online (Sandbox Code Playgroud)
  • 将文件名从*.cgi更改为*.fcgi,

  • 包括下面由Naveed建议的fastcgi while循环,
  • 使用正确的fastcgi处理程序设置apache vhost(请参阅fastcgi doc)
  • 启用Apache fastcgi模块(a2enmod fastcgi)并禁用cgi模块,
  • 检查Apache设置中的fastcgi.conf文件,
  • 重启Apache,
  • 检查fastcgi作为Apache子进程运行(ps -afx),
  • 修复了一些脚本问题,已经在..但是在运行fastcgi时新出现,如同建议(通过检查Apache日志检测到错误),
  • 编辑:修改文件上传代码,因为初始脚本不再起作用(仍然不明白为什么),所以我不得不用这样一个替换while循环:

    open(FILE,">$upload_dir/$file_name")
    while ($bytes_count = read($file_query,$buffer,2096)) {
    $size += $bytes_count;
    print FILE $buffer;
    }
    close(FILE);
    
    Run Code Online (Sandbox Code Playgroud)
  • 完成.

世界还不完美,但终于有效了.

apache perl upload cgi fastcgi

1
推荐指数
1
解决办法
1451
查看次数

关于lighttpd的Django:重定向到.fcgi(404)

我正在将我的django项目部署到一个轻便的服务器上.当我试图访问网站root时,一切都很好,但如果我添加/ admin /或/ blog /我得到:

Page not found (404)
Request Method:     GET
Request URL:    http://x.x.x.x/mysite.fcgi/mysite.fcgi/admin/
Run Code Online (Sandbox Code Playgroud)

和,

Page not found (404)
Request Method:     GET
Request URL:    http://x.x.x.x/mysite.fcgi/mysite.fcgi/blog/
Run Code Online (Sandbox Code Playgroud)

我已经阅读了一些关于此的帖子,似乎可以通过向settings.py添加FORCE_SCRIPT_NAME =""来解决.但是,这对我没有用.

urls.py:

urlpatterns = patterns('',
(r'^$', index),
(r'^blog/$', blog_view),
url(r'^admin/doc/', include('django.contrib.admindocs.urls')),
url(r'^admin/', include(admin.site.urls)),
)
Run Code Online (Sandbox Code Playgroud)

lighttpd.conf:

$HTTP["host"] == "x.x.x.x" {
server.document-root = "/home/lighttpd/sedin/web"
fastcgi.server = (
    "/mysite.fcgi" => (
        "main" => (
            # Use host / port instead of socket for TCP fastcgi
            #"host" => "127.0.0.1",
            #"port" => 3033,            
            "socket" => "/home/lighttpd/sedin/sedin.sock",
            "check-local" => …
Run Code Online (Sandbox Code Playgroud)

django fastcgi lighttpd http-status-code-404

1
推荐指数
1
解决办法
1518
查看次数

PHP IIS 7和FastCGI无法正常工作

我按照这里的指示:使用FastCGI在IIS 7上托管PHP应用程序来配置Windows 2008,PHP与IIS 7和FastCGI,我遇到了问题.PHP版本是5.3.8.我在IIS上设置了Handler Mappings,并创建了一个测试页面,但页面除了500错误外没有返回任何内容.我确保PHP工作,从命令行我输入时得到响应:

php -version.
Run Code Online (Sandbox Code Playgroud)

也就是说,我已经为php页面启用了失败的请求跟踪规则,当我浏览错误日志时,我看到的内容如下:

<EventData>
  <Data Name="ContextId">{00000000-0000-0000-0200-0080010000F6}</Data>
  <Data Name="ModuleName">FastCgiModule</Data>
  <Data Name="Data1">FASTCGI_RESPONSE_ERROR</Data>
  <Data Name="Data2">PHP Warning:  phpinfo() [&lt;a href=&apos;function.phpinfo&apos;&gt;function.phpinfo&lt;/a&gt;]: It is not safe to rely on the system&apos;s timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected &apos;America/New_York&apos; for &apos;-4.0/DST&apos; instead in C:\inetpub\wwwroot\phpinfo.php on line 1
</Data> …
Run Code Online (Sandbox Code Playgroud)

php iis iis-7 fastcgi windows-server-2008-r2

1
推荐指数
1
解决办法
1万
查看次数

使用PHP作为DSO,FCGID或SuPHP和xCache的内存和性能

这个问题可能有点长而且具体,但我一直试图找到以下问题的确定答案,大约一个月了,我还没有找到决定性的信息.一个特定的问题很难概括,如果我遇到类似的问题,即使特定的服务器配置与我的不同,它也会提供信息.

我的服务器是运行cPanel(WHM)的VPS,PHP模式是SuPHP.该服务器拥有768MB的RAM,并托管了大约12个网站.有些是非常耗费内存的,而其他几乎根本不使用任何内存或CPU.

我最近为我的一个客户安装了一个Magento商店,并且一直在尝试不同的设置以实现性能提升.在我安装xCache并将PHP配置为以FCGID或DSO运行之前没有任何帮助(因为xCache不能与SuPHP一起使用).这种配置将性能提高了2/3(意味着页面加载速度提高了约3倍).

唯一的挫折是,几分钟后,服务器内存不足,我不得不重置它.所以现在我回到SuPHP,事情很好.

即使我禁用了xCache并且只保留了FCGID或DSO模式而不是SuPHP,服务器也会在大约30分钟内耗尽内存.因此,罪魁祸首似乎是PHP运行,而不是SuPHP.

我还注意到,当我从不同的WHM定义的用户打开一个新的前端URL时,我的内存使用率上升了,但是当我从同一个WHM用户帐户打开多个URL时,用法似乎保持相当稳定.

到那时为止:

  • 如何确保PHP + xCache保持稳定运行?或者我只需要购买更多内存?
  • SuPHP,DSO和FCGID之间的内存使用有何不同?是否可以通过更改一些php.ini变量来调整它?

此外,我正在考虑更新我的其他一些服务器以使用xCache.您会为以下服务器推荐什么配置设置和PHP模式(SuPHP,DSO或FCGI)和xCache?

  • 四核@ 2.4Ghz,4GB RAM专用服务器,带有1个巨大的Magento商店,带有cPanel和WHM
  • 四核@ 2.4Ghz,8GB RAM服务器,带有20个大型Magento存储,带有cPanel和WHM
  • 四核@ 2.66Ghz,8GB RAM服务器,带有100多个类似Joomla的网站,带有cPanel和WHM,也可作为电子邮件服务器,支持邮件等.

memory performance fastcgi xcache suphp

1
推荐指数
1
解决办法
4736
查看次数

Git返回致命:git-http-push失败

我正在尝试使用NginX 0.8.52托管Git repo,fcgiwrap包装git-http-backend.此设置类似于此处找到的设置.但是,我经常收到以下错误(注意结尾的错误):

HGs-MacBook-Pro:git_dev hg$ GIT_CURL_VERBOSE=1 git push production master
* Couldn't find host git.myserver.org in the .netrc file; using defaults
* About to connect() to git.myserver.org port 443 (#0)
*   Trying 111.222.333.444...
* Connected to git.myserver.org (111.222.333.444) port 443 (#0)
* Connected to git.myserver.org (111.222.333.444) port 443 (#0)
* SSL connection using DHE-RSA-AES256-SHA
* Server certificate:
*    subject: C=GB; ST=Berkshire; L=Newbury; O=My Company Ltd
*    start date: 2012-11-27 09:56:30 GMT
*    expire date: 2012-12-27 09:56:30 GMT
* …
Run Code Online (Sandbox Code Playgroud)

git fastcgi nginx

1
推荐指数
1
解决办法
4572
查看次数

C++/C - 奇数代码

我正在查看一些示例代码,并且无法确定以下行正在执行的操作:

   fcgi_streambuf cin_fcgi_streambuf(request.in);
   fcgi_streambuf cout_fcgi_streambuf(request.out);
   fcgi_streambuf cerr_fcgi_streambuf(request.err);
Run Code Online (Sandbox Code Playgroud)

我不是来自ac背景所以语法看起来有点奇怪 - 每一行都在初始化一个新对象时调用一个函数,但我希望至少有一个赋值.例如:

    fcgi_streambuf = cin_fcgi_streambuf(request.in);
    fcgi_streambuf = cout_fcgi_streambuf(request.out);
    fcgi_streambuf = cerr_fcgi_streambuf(request.err);
Run Code Online (Sandbox Code Playgroud)

完整的示例代码可以在这里找到:http://chriswu.me/blog/writing-hello-world-in-fcgi-with-c-plus-plus/

c++ fastcgi

1
推荐指数
1
解决办法
222
查看次数

在Nginx中使用Lua将请求传递给FastCGI

使用在Lua支持下编译的nginx,我们如何对FastCGI处理程序进行某种子请求,就像nginx的fastcgi_pass指令一样?

我想做的是这样的:

location = / {
    access_by_lua '
        res = ngx_fastcgi.pass("backend")
    ';
}
Run Code Online (Sandbox Code Playgroud)

(显然,这是行不通的。)

我在HttpLuaModule上浇注,我看到提到了ngx_fastcgingx.location.capture,这显然使

对配置了磁盘文件目录或其他任何Nginx C模块(例如... ngx_fastcgi,...)的其他位置的非阻塞内部请求

但是随后跟随的链接ngx_fastcgi将我带到HttpFastcgiModule,它仅说明nginx指令,而不说明Lua可编写脚本的命令。是否ngx.location.capture使用正确的功能?(顺便说一下,这些请求将是到达localhost另一个端口,例如9000或9001。)

如何在nginx中使用Lua将请求转发或进行子请求到FastCGI端点?

lua fastcgi nginx

1
推荐指数
1
解决办法
2634
查看次数

常用术语“ PHP二进制”实际上是什么意思?

我正在使用Windows 10家庭单一语言64位操作系统笔记本电脑上。

我已经在笔记本电脑上安装了最新版本的XAMPP。

这已经安装了PHP 7.2.8Apache / 2.4.34(Win32)OpenSSL / 1.1.0h PHP / 7.2.8在我的笔记本电脑上。

我从PHP手册页遇到以下句子:

PHP可以在所有主要操作系统上使用,包括Linux,许多Unix变体(包括HP-UX,Solaris和OpenBSD),Microsoft Windows,macOS,RISC OS以及可能的其他操作系统。PHP还支持当今的大多数Web服务器。这包括Apache,IIS和其他许多工具。这包括可以利用FastCGI PHP二进制文件的任何Web服务器 ,例如lighttpd和nginx。

从上面的文本中,我没有获得术语“ PHP二进制”的确切含义。这个特殊的术语在PHP手册的许多地方经常使用,但是没有给出“ PHP二进制”的实际含义。

我用谷歌搜索了它的含义,然后就知道了“预定义常数” PHP_BINARY

因此,我尝试执行以下代码,以期消除对常用术语“ PHP二进制”的实际含义的怀疑,并在Web浏览器中检查输出:

<?php
  echo PHP_BINARY;
?>
Run Code Online (Sandbox Code Playgroud)

令人惊讶的是,我得到以下输出:

C:\xampp\apache\bin\httpd.exe
Run Code Online (Sandbox Code Playgroud)

我很惊讶地看到此输出,因为在输出中我得到了Apache文件httpd.exe的完整地址。我原本希望获得有关PHP的信息,但是却获得了Apache文件的地址。为什么这样?

因此,最终的含义是我仍然不明白常用术语“ PHP二进制”的实际含义是什么?

我仍然不知道非常常用的术语“ PHP二进制”到底意味着什么?

有人,请清除我对常用术语“ PHP二进制”的怀疑一种易于理解,简单明了的语言来。

我在等你的帮助。

php apache binary fastcgi php-7

1
推荐指数
1
解决办法
128
查看次数