标签: fastcgi

如何使用 FastCGI 和 Ruby 设置 Apache?

我一直在阅读很多关于在 linux 下使用 fastcgi 设置 apache 的论坛帖子、教程等。我正在尝试为我的一些 ruby​​ 开发(不是 rails)运行 fcgi,但我认为它应该适用于任何语言。请注意,我已经在我的 web box 上安装了 apache、fastcgi、ruby-fcgi 等。

从概念上讲,我很难接受。apache 是否根据需要生成指定的 fcgi 进程?我是否在 apache 旁边启动它们?基本上,我试图达到能够提出正确问题的地步,因此如果标题具有误导性,我深表歉意。

linux fastcgi ruby apache-2.2

9
推荐指数
2
解决办法
5738
查看次数

PHP-CGI 开始提供空白页面

我的 PHP-CGI 无缘无故地开始提供空白页面,直到我重新启动该过程。

我想知道为什么。

不幸的是,PHP 的“生产”配置文件默认没有 error_log。我的 Nginx 错误日志也没有显示与 PHP 相关的错误。这可能是一个没有希望的案例,但我只是为了以防万一。

这是我的设置

  • nginx 0.8.2
  • PHP 5.2.6-3ubuntu4.1 with Suhosin-Patch 0.9.6.2 (cli)(构建时间:2009 年 4 月 23 日 14:37:14)
  • PHP APC 3.0.19-2
  • spawn-fcgi v1.6.2 (ipv6) - 来自 lighttpd 的 fastcgi 包装器

任何想法可能导致错误?

更新

我想我已经隔离了这个问题。我一直在使用 Monit 在 PHP 开始空白时自动重新启动它。我的 PHP 错误日志是空白的。

但是我发现如果我禁用了一个名为 WP-SuperCache 的 Wordpress 插件,我的 PHP 将停止每大约 10 小时重置一次。到目前为止,我的 PHP 已经连续运行了 3 天。有没有人对此有任何建议?

php nginx fastcgi wordpress

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

SCGI 或 FastCGI - 你更喜欢哪个?

我正在做一些关于这个主题的研究(谷歌搜索),但我能找到的只是 2-3 年前的帖子。我对今天的情况很感兴趣。你更偏向于哪个,为什么?

fastcgi

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

您知道哪些 Apache/PHP 配置?它们有多好?

我想向您询问您所知道的 PHP/Apache 配置方法,以及它们的优缺点。我自己开始:

---------------- PHP 作为 Apache 模块----------------

优点:速度快,因为您不需要每次都启动 exe,尤其是在mpm-worker模式下。您还可以在此模式下使用各种PHP 加速器,如 APC 或 eAccelerator。

缺点:如果您在 mpm-worker 模式下运行 apache,您可能会面临稳定性问题,因为任何 php 脚本中的每个故障都会导致该 apache 进程的整个线程池不稳定。同样在这种模式下,所有脚本都代表 apache 用户执行。这不利于安全。mpm-worker 配置需要在线程安全模式下编译 PHP。至少 CentOS 和 RedHat 默认存储库没有线程安全的 PHP 版本,因此在这些操作系统上,您至少需要自己编译 PHP(有一种方法可以在 Apache 上激活 worker mpm)。线程安全的 PHP 二进制文件的使用被认为是实验性的和不稳定的。另外,许多 PHP 扩展不支持线程安全模式,或者没有在线程安全模式下进行良好测试。

---------------- PHP 作为 CGI ----------------

这似乎是最慢的默认配置,它本身似乎是一个“骗局”;)

---------------- PHP 作为 CGI 通过 mod_suphp ----------------

优点:suphp 允许您代表脚本文件所有者执行 php scipts。这样您就可以安全地将同一台机器上的不同站点分开。此外,suphp 允许每个虚拟主机使用不同的 php.ini 文件。

缺点:CGI 模式下的 PHP 意味着较低的性能。在这种模式下,你不能使用像 APC 这样的 php 加速器,因为每次产生新进程来处理脚本时,前一个进程的缓存都没用。顺便说一句,你知道在这个配置中应用一些加速器的方法吗?我听说了一些关于将 shm 用于 …

php fastcgi cgi suphp apache-2.2

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

如何启动/重启fastcgi进程?

我正在运行 nginx 和 fastcgi 来运行 wordpress 博客。

运行一段时间后,我收到 502 个错误的网关错误。如果我重新启动服务器一切正常。

在 nginx 上运行的其他站点不受影响(它们不是基于 php 的),所以我在查看日志文件后发现它一定是 fastcgi 进程说上游客户端 127.0.0.1 没有响应。

我该如何重新启动?这个 fastcgi 进程是否有特殊的日志文件?

ubuntu nginx fastcgi

8
推荐指数
2
解决办法
5万
查看次数

我的 php-fpm 配置有什么问题?

我有一个 64 位服务器,但只有 256MB 的 RAM。因此,我使用 fast-cgi 移至 nginx 服务器以连接到 PHP。我正在运行 PHP 5.3.6。

问题是,每隔两三天,当我尝试访问任何 PHP 页面时,就会出现服务器内部错误。唯一的方法是手动重启 php-fpm。这意味着我应该设置一些错误的参数,导致它窒息。下面我列出了相关的配置。

/etc/php-fpm.conf :-

include=/etc/php-fpm.d/*.conf
log_level = error
;emergency_restart_threshold = 0
;emergency_restart_interval = 0
;process_control_timeout = 0
Run Code Online (Sandbox Code Playgroud)

/etc/php-fpm.d/www.conf :-

[www]
pm = dynamic
pm.max_children = 10
pm.start_servers = 3
pm.min_spare_servers = 2
pm.max_spare_servers = 5
pm.max_requests = 500
Run Code Online (Sandbox Code Playgroud)

/etc/nginx/php.conf :-

location ~ \.php {
        fastcgi_param  QUERY_STRING       $query_string;
        fastcgi_param  REQUEST_METHOD     $request_method;
        fastcgi_param  CONTENT_TYPE       $content_type;
        fastcgi_param  CONTENT_LENGTH     $content_length;

        fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
        fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
        fastcgi_param  REQUEST_URI        $request_uri; …
Run Code Online (Sandbox Code Playgroud)

server-crashes nginx fastcgi php-fpm

8
推荐指数
2
解决办法
4万
查看次数

Nginx - 为所有主机启用 PHP

我目前正在测试 nginx 并设置了一些虚拟主机,方法是将每个虚拟主机的配置放在名为sites-enabled.

然后我要求 nginx 使用以下命令加载所有这些配置文件:

include       C:/nginx/sites-enabled/*.conf;
Run Code Online (Sandbox Code Playgroud)

这是我当前的配置:

http {
    server_names_hash_bucket_size  64;

    include       mime.types;
    include       C:/nginx/sites-enabled/*.conf;
    default_type  application/octet-stream;


    sendfile        on;
    keepalive_timeout  65;

    server {
        listen       80;
        root         C:/www-root;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            index  index.html index.htm index.php;
        }

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        location ~ \.php$ {
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include …
Run Code Online (Sandbox Code Playgroud)

php nginx fastcgi

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

`No input file specified.`的真正解决方案(nginx,fpm)

这个问题的大多数答案是,设置 fastcgi_param SCRIPT_FILENAME 并且它会起作用(斜体格式被破坏了?!)。

我已经设置了这个变量(正确)但它仍然显示错误而不是 404 页面,因为问题的根源在这里:

location ~ \.php$ {
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            fastcgi_pass unix:/var/run/php5-fpm.sock;
            fastcgi_index index.php;
            include fastcgi_params;
    }
Run Code Online (Sandbox Code Playgroud)

一个不存在的路径被传递给 php5-fpm,这反过来打印错误,在日志中看起来像:

FastCGI sent in stderr:
"Unable to open primary script: ... (No such file or directory)"
while reading response header from upstream
Run Code Online (Sandbox Code Playgroud)

所以在该行之前fastcgi_pass 必须有一个条件来检查文件是否真的存在,或者,如果fpm worker返回“file not found”,引导nginx返回404页面。

我怎样才能做到这一点?

nginx fastcgi php-fpm http-status-code-404

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

Nginx + PHP-FPM = "Random" 502 Bad Gateway

我正在运行 Nginx 并通过 FastCGI 将 php 请求代理到 PHP-FPM 进行处理。我会随机收到 502 Bad Gateway 错误页面 - 我可以通过非常快速地点击我的 PHP 网站/刷新页面一两分钟来重现这个问题。当我收到 502 错误页面时,我所要做的就是刷新浏览器并且页面正确刷新。

这是我的设置:

nginx/0.7.64 PHP 5.3.2 (fpm-fcgi)(构建时间:2010 年 4 月 1 日 06:42:04)Ubuntu 9.10(最新 2.6 Paravirt)

我使用这个 ./configure 指令编译了 PHP-FPM

./configure --enable-fpm --sysconfdir=/etc/php5/conf.d --with-config-file-path=/etc/php5/conf.d/php.ini --with-zlib --with -openssl --enable-zip --enable-exif --enable-ftp --enable-mbstring --enable-mbregex --enable-soap --enable-sockets --disable-cgi --with-curl --with -curlwrappers --with-gd --with-mcrypt --enable-memcache --with-mhash --with-jpeg-dir=/usr/local/lib --with-mysql=/usr/bin/mysql -- with-mysqli=/usr/bin/mysql_config --enable-pdo --with-pdo-mysql=/usr/bin/mysql --with-pdo-sqlite --with-pspell --with-snmp --with- sqlite --with-tidy --with-xmlrpc --with-xsl

我的 php-fpm.conf 看起来像这样(相关部分):

 ...   
<value name="pm">
     <value …
Run Code Online (Sandbox Code Playgroud)

nginx fastcgi php-fpm 502-error

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

如何增加 FastCGI 读取超时以防止 nginx 出现 504 错误?

我正在运行一个包含大量编码的文件。处理 500 个用户大约需要 55 秒,但现在我必须处理 1000 个用户。默认超时是 60 秒,所以我必须增加 FastCGI 读取超时。

在 StackOverflow 上发现了这个问题,说我必须增加,fastcgi_read_timeout但我不知道把它放在哪里fastcgi.conf

nginx timeout gateway fastcgi 504

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