标签: cgi

80
推荐指数
2
解决办法
6万
查看次数

Amazon AWS EC2 微实例上的 Python CGI —— 操作方法!

如何让 EC2 微实例从 lighthttpd 提供 CGI 脚本?例如Python CGI?

嗯,这花了半天时间,但我已经使用 lighttpd 服务器在免费的 Amazon AWS EC2 微实例上运行了 Python cgi。我认为将所有步骤放在一个地方会帮助我的新手。通过以下简单步骤,您只需 15 分钟即可完成设置!

对于阅读本文的更有经验的用户,我的问题是:我所做的是否存在任何安全漏洞?(请参阅文件和目录权限。)

第 1 步:启动您的 EC2 实例并通过 ssh 进入它。

[显然,您需要注册 Amazon EC2 并将您的密钥对保存到 *.pem 文件中。我不会讨论这个,因为亚马逊会告诉你如何去做。]

  1. 登录您的 AWS 账户并启动您的 EC2 实例。网络上有关于这样做的教程。请注意,Amazon 提供给您的默认实例大小为“小”。这不是“微型”,因此它会花费您金钱。一定要手动选择“微”。(微型实例仅在第一年免费......)

  2. 查找正在运行的实例的公共 DNS 代码。为此,单击仪表板顶部窗格中的实例,您最终会看到底部窗格中填充的“公共 DNS”字段。(您可能需要稍微调整一下。)公共 DNS 看起来像:
    ec2-174-129-110-23.compute-1.amazonaws.com

  3. 启动您的 Unix 控制台程序。(在 Max OS X 上,它被称为终端,位于 Applications -> Utilities 文件夹中。)

  4. cd 到桌面系统上的目录,该目录包含包含 AWS 密钥对的 *.pem 文件。

  5. 使用如下命令通过 ssh 连接到您的 EC2 实例:
    ssh -i <<your *.pem filename>> ec2-user@<< Public DNS address >>

    所以,对我来说,这是:
    ssh …

python lighttpd cgi amazon-ec2

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

如何通过命令行将 $_GET 变量传递给 PHP 脚本?

我正在尝试创建一个为 PHP 脚本提供服务的网络服务器。目前,它的工作原理如下:

  1. 客户端请求 /index.php?test=value
  2. 服务器调用 php index.php
  3. 服务器将 HTTP 请求标头作为 STDIN 提供给 PHP 进程
  4. 服务器php从 STDOUT读取输出并将其返回给客户端

除了参数没有传递给 PHP 脚本之外,所有这些都有效,因为:

var_dump($_GET);
Run Code Online (Sandbox Code Playgroud)

返回:

数组(0){}

$_GET调用时如何将参数传递给 PHP 二进制文件?

php http cgi

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

设置除指定 URL 之外的 Apache HTTP 标头

我正在使用Apache 2.2并希望在大多数站点中将X-Frame-Options标头设置为“拒绝”。我可以使用mod_headers无条件地打开它。但是,有一个 CGI 脚本会返回必须装帧的内容,因此我需要为该脚本关闭它。有没有办法做到这一点?

我正在使用 Debian 的 Apache 2.2.9。

http cgi http-headers apache-2.2

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

您知道哪些 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
查看次数

Apache:权限被拒绝:'/var/www/html/cgi-test/first.pl'的执行失败

所以,我是 CGI/Perl 的新手,我正在尝试将基于 perl 的 Web 应用程序移动到新服务器。

我的新服务器是 CentOS 7,它运行 Apache HTTPD 2.4.6。

我正在尝试通过 HTTP 请求获得基本的 Perl CGI。

Web 请求返回“500 内部服务器错误”

错误日志显示“权限被拒绝”:

[Tue May 12 16:56:44.604660 2015] [cgi:error] [pid 12302] [client 10.0.2.2:56693] AH01215: (13)Permission denied: exec of '/var/www/html/cgi-test/first.pl' failed
[Tue May 12 16:56:44.604708 2015] [cgi:error] [pid 12302] [client 10.0.2.2:56693] End of script output before headers: first.pl
Run Code Online (Sandbox Code Playgroud)

我的 CGI 脚本在 /var/www/html/cgi-test/first.pl

它看起来像这样:

#!/usr/bin/perl
print "Content-type: text/html\n\n";
print "Hello, World.";
Run Code Online (Sandbox Code Playgroud)

在 cgi-test 目录中,权限如下所示:

drwxr-xr-x. 2 root root 21 May 12 16:48 . …
Run Code Online (Sandbox Code Playgroud)

perl cgi apache-2.4

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

错误的解释器:文本文件忙

多年来,我已经习惯于在“vi”中编辑 Perl CGI 脚本并同时打开浏览器来测试它们。最近,当我这样做时,我收到了“500”服务器错误,当我从 shell 运行脚本时,我得到“错误解释器:文本文件繁忙”。唯一的解决方案是每当我想测试脚本时退出“vi”,这是一种极大的痛苦,应该完全没有必要。那是怎么回事?我正在运行一个 Debian 服务器,我会定期更新它,我假设它是从一些所谓的“升级”开始的:)

debian perl cgi vi 500

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

PHP 作为 CGI 还是 Apache 模块?

我一直认为 PHP 作为 Apache 模块安装效果更好,但最近,本地论坛上有人指出,将 PHP 作为 CGI 运行在安全性方面更好。我已经做了一些谷歌搜索,似乎Dreamhost 将其 PHP 安装默认为通过 CGI 工作。现在我有点困惑。

据我所知(我不是系统管理员,只是一个 Web 开发人员),当 PHP 作为 Apache 模块安装时存在用户权限问题。通过 CGI 使用 PHP 时存在速度问题(或者曾经是)。

现在安装 PHP 的推荐方法是什么?在共享和专用主机上。

php installation cgi apache-2.2

6
推荐指数
2
解决办法
3324
查看次数

选项 ExecCGI 在此目录中关闭:/var/www/index.py

我看过很多有类似问题的帖子,但似乎没有一个对我有用

我有以下 /etc/apache2/httpd.conf 文件:

<Directory /var/www/index.py>
Options +ExecCGI
</Directory>

<Directory /var/www>
Options +ExecCGI
AllowOverride None
Order allow,deny
Allow from all
AddHandler cgi-script .py
DirectoryIndex index.py         

</Directory>

<Directory /var/www/tiles>
  AddHandler mod_python .py
  PythonHandler TileStache::modpythonHandler
  PythonOption config /home/TileStache/tilestache.cfg
</Directory>
Run Code Online (Sandbox Code Playgroud)

当我尝试访问主页时:只是主机名:http : //exampleHost.com 我在错误日志中收到以下错误:

Options ExecCGI is off in this directory: /var/www/index.py
Run Code Online (Sandbox Code Playgroud)

但是当我去http://exampleHost.com/index.py 时它工作正常。

所以我猜有什么东西覆盖了 /var/www 目录?我在 /var/www 目录中没有 .htaccess 文件。

cgi apache-2.2

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

如何通过 fcgiwrap/nginx 调试 CGI

我通过fcgiwrapnginx. 由于脚本被编译,我可以在编译过程中得到编码错误,但有时我收到CGI错误只是说明

An error occurred while reading CGI reply (no response received)
Run Code Online (Sandbox Code Playgroud)

是否有任何调试方法可以识别 CGI 请求/进程有什么问题?

如何设置调试系统以将错误传送到 nginx 日志中?

nginx debugging fastcgi cgi

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