标签: cgi

如何在不重新加载/重启 fpm 的情况下将池添加到 FPM (nginx)?

我正在构建一个环境(在 ubuntu 10.04.02 机器上)来处理具有许多(应该支持至少 1000 个)子域的网站,每个子域由不同的 FPM 池提供服务,并具有不同的用户。

所以没有什么新鲜事;我的问题是创建(并启动)一个新的 fpm 池,而不必重新加载/重新启动 FPM,这会导致(我知道,非常快)停机。

我写了一个 python 守护进程,在需要时:

  1. 创建系统用户
  2. 设置子域的 Web 根
  3. 将 subdomain.conf 创建到我的 /etc/php5/fpm/fpm.d/ 文件夹中

我四处搜索,但没有找到使用一个池调用 fpm 的方法,这可能是一个“临时”解决方案:主 fpm 实例运行所有池,每个新实例都有自己的 fpm 实例,然后使用 cron 我停止并每周/每月/不知道重新加载 fpm

如果确实重要,服务器在 nginx 上运行,配置为使用 unix socket to fcgi,这是我的 nginx 测试配置:

server{
    listen          80;
    server_name     ~^(?<domain>.+)\.test\.local$; # foo.test.local > myapp_foo
    root            /var/www/myapp/subdomains/myapp_$domain/htdocs;
    location / {
        index index.php;
    }
    location ~* \.(gif|jpg|png|ico)$ {
        expires 30d;
    }
    location ~ \.php$ {
        fastcgi_pass    unix:/var/web-sock/myapp_$domain-fpm.sock;
        fastcgi_param   SCRIPT_FILENAME     $document_root$fastcgi_script_name;
        include         fastcgi_params;
    }
} …
Run Code Online (Sandbox Code Playgroud)

nginx fastcgi php5 cgi php-fpm

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

高级 Web 服务器能否比基本 Web 服务器更快?

一个bsic web server比如pythonSimpleHTTPServer或者THTTPD用最少的进程读取静态文件;因此相当快。通常,添加更多功能以创建高级 Web 服务器(但仍然是轻量级的,例如nginx)会减慢此过程。

先进的网络服务器可以玩一个技巧来加快进程吗?或者比最简单的更简单是不可能的,最简单的是读取静态文件的最快方法?我的意思是nginx(或其他声称快速的轻量级 Web 服务器)可以比THTTPD(或其他具有最少流程的基本 Web 服务器)更快吗?

那么 CGI 脚本呢,因为HTTPD和 pythonCGIHTTPServer可以简单地执行 cgi 脚本。

nginx web-server cgi thttpd

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

没有 apache/nginx/cgi 堆栈的 php 服务器

在许多语言中,您从头开始构建 Web 框架(即从 unix 套接字)并在抽象层上构建。如果我想用 OCaml 或 C 从头开始​​构建一个 web 框架,我首先构建一个侦听端口 80 的套接字服务器。

我突然想到 PHP - 就像任何其他高级语言一样 - 可能会以某种方式包装 unix 套接字。现在我知道情况是这样的,PHP 从来就不是这样设计的。但是,我不明白为什么它从未以这种方式使用过。按照同样的思路,PHP 解释器从未像 Python 解释器那样以这种方式使用。

例如,当我从头开始构建 Python Web 服务器并部署它时,我执行以下操作:在某个端口(比如 8000)上添加一个 unix 套接字,像 一样守护我的脚本python server.py 8000,并在端口 80 上设置 nginx 反向代理并转发到我的端口 8000 上的内部本地服务器。我从未见过用 PHP 完成的,即使它是可能的。

我承认,除了使用独立的解释器(即 Tornado、uwsgi 等)之外,您在 Python 中还有其他选择。然而,它是双向的。

我的问题是,PHP 语言、解释器或社区的哪些方面阻止了 PHP Web 框架从 unix 套接字调用从头开始构建、在本地端口上进行守护进程以及被反向代理而不是使用 cgi/ fastcgi 包装器?

php fastcgi cgi

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

如何防止 Apache2 尝试将文件作为脚本执行?

所以基本上,我完全按照有关 iptraf 监控和 rrdtool 的指南进行操作。我/usr/lib/cgi-bin/像往常一样将它放入cgi 脚本中。然后,当我从浏览器访问它时,它制作的图像似乎已损坏。出于调试目的,我暂时将权限设置为 777。我认为 Apache2 正在尝试将 png 文件作为脚本执行。我该如何防止?下面是我的配置文件。提前致谢!

哦。我以 root 身份运行。

#tail /var/log/apache2/error.log

[Sun Mar 01 06:13:05 2015] [error] [client 192.168.0.241] Premature end of script headers: tcp_services-25-6hr.png, referer: http://192.168.0.1/cgi-bin/tcp.cgi
[Sun Mar 01 06:13:05 2015] [error] [client 192.168.0.241] Premature end of script headers: tcp_services-80-6hr.png, referer: http://192.168.0.1/cgi-bin/tcp.cgi
[Sun Mar 01 06:13:05 2015] [error] [client 192.168.0.241] Premature end of script headers: tcp_services-22-6hr.png, referer: http://192.168.0.1/cgi-bin/tcp.cgi
[Sun Mar 01 06:13:49 2015] [error] [client 192.168.0.241] (8)Exec format error: exec …
Run Code Online (Sandbox Code Playgroud)

scripting permissions debian cgi apache-2.2

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

如何编译 PHP 5.3 CGI?

php-cgi 似乎在 PHP 5.3.1 中消失了。我已经尝试了 ./configure 的 --enable-cgi 和 --disable-cli 标志,但它没有在 sapi/cgi 子目录下创建二进制文件。

php5 cgi

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

您如何向 Apache2 用户而不是其他所有人授予执行权限?

我有 Ubuntu Server 正在运行,我正在设置一个单独的目录作为 cgi-bin。我已准备好目录并更改了站点的文件。但是,为了让它工作,我需要更改我在文件夹中的 Python 脚本的权限,以便 Apache 可以执行它。但是,我不想给除 root、我和 Apache 之外的任何人写或执行访问权限。我假设这是可能的,但是怎么做呢?

linux ubuntu cgi user-permissions apache-2.2

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

这个脚本是邪恶的吗?

这是坐在我网站的 cgi-bin 中。我应该担心吗?

    #!/usr/bin/perl

print <<HTML;
Content-type: text/html

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html">
<link rel="stylesheet" type="text/css" href="../../css/style.css">
</head>
<body>
<table cellspacing="0" cellpadding="0" border="0">
<tr class="subhead" align="Left"><th>Name</th><th>Value</th></tr>
HTML

my $class;

foreach (sort keys %ENV) {
    next unless /^HTTP_|^REQUEST_/;
    $class = ($class ne 'normal')? 'normal': 'alt';
    print <<HTML;
<tr class="$class"><td valign="top">$_</td><td>$ENV{$_}</td></tr>
HTML
}

print <<HTML;
</table>
</body>
</html>
HTML
Run Code Online (Sandbox Code Playgroud)

security perl cgi cgi-bin

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

Nginx + fastcgi 运行 PHP 脚本,但它一直告诉我“找不到文件”

这是服务器块中配置的一部分:

我无法执行任何 php 脚本,我test.php在 /var/html 下放置了一个名为的文件,但是当我指向 时http://localhost/test.php,我得到了一个结果:

File not found.,

这不是由 nginx 生成的,因为它与 nginx 的 404 页面不同。

location / {
    root   /var/html;
    index  index.html index.htm;
}

    location ~ \.php$ {
        fastcgi_pass   unix:/var/run/php-fpm/php-fpm.sock;
        fastcgi_index  index.php; 
        fastcgi_intercept_errors on;
        fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
        fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
        include        fastcgi.conf;
    }
Run Code Online (Sandbox Code Playgroud)

我错过了什么吗?

php nginx cgi

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

Apache 2.4 对 CGI 脚本回复“403 Forbidden”,我的配置看起来没问题

我在 Ubuntu 服务器 14.04 上全新安装的 Apache 2.4 上安装了 CGI 脚本。如果对我来说配置文件没问题,Apache也会继续回复403 Forbidden。CGI 是 Monitorix 前端,一个用 Perl 编写的系统监控工具。

配置文件/etc/apache2/conf-enabled/monitorix.conf是:

Alias /monitorix /var/lib/monitorix/www
ScriptAlias /monitorix-cgi /var/lib/monitorix/www/cgi

<Directory /var/lib/monitorix/www/cgi/>
        DirectoryIndex monitorix.cgi
        Options ExecCGI
        <IfModule mod_authz_core.c>
                # Apache 2.4
                Require all granted
        </IfModule>
        <IfModule !mod_authz_core.c>
                # Apache 2.2
                Order deny,allow
                Allow from all
        </IfModule>
</Directory>
Run Code Online (Sandbox Code Playgroud)

在所有文件/var/lib/monitorix/www/var/lib/monitorix/www/cgi对所有至少读取权限。每次我尝试从 URL 访问时/monitorix,在我的 Apache 日志中我都会看到以下几行:

[Mon Sep 01 06:57:52.995680 2014] [authz_core:error] [pid 17145] [client x.x.x.x:58879] AH01630: client …
Run Code Online (Sandbox Code Playgroud)

perl cgi mod-auth apache-2.4

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