Lighttpd python cgi 在 Xenial 上损坏

Lighttpd python cgi 在 Xenial 上损坏

我正在尝试使用一个非常基本和简单的 cgi 脚本设置 Lighttpd Web 服务器。我不需要 fastCGI 或任何东西(我可以使用 PHP,但 ubuntu 现在强制您使用 PHP7,这会破坏我所有的 PHP5 脚本,感谢 PHP 社区!)。

无论如何,我在这个问题上浪费了两天时间,这根本不应该是一个问题,但由于某种原因,Ubuntu 的最新版本破坏了过去一直有效的东西。

那么...问题就在这里。

已安装 Lighttpd... 运行正常

启用 CGI 模块... 好的

在配置文件 10-cgi.conf 中更改:

cgi.assign      = (
#       ".pl"  => "/usr/bin/perl",
#       ".php" => "/usr/bin/php-cgi",
#       ".py"  => "/usr/bin/python"
)

到:

cgi.assign      = (
#       ".pl"  => "/usr/bin/perl",
#       ".php" => "/usr/bin/php-cgi",
       ".py"  => "/usr/bin/python"
)

已验证 /usr/bin/python 确实存在于该路径中....好的..很好。

创建了一个 cgi-bin 目录...ok

将 cgi-bin 目录的权限设置为属于以下组并归以下人员所有:www-data ....ok

在 cgi-bin 目录中创建了一个测试 python cgi 文件,并将其设置为可执行文件并执行了 chmod 0755 test.py .... ok...很好。成功

打开了网络浏览器: http://localhost/cgi-bin/test.py ...轰隆隆

它能正常工作吗?是的,有点儿像。它想要将 Web 响应下载为名为 test.py 的文件。它实际上并没有下载服务器上的 python 文件,只是 Web 服务器应该发送回浏览器的响应。我以前就用过,而且运行完美。但就像我说的,无论 ubuntu 发行版开发人员在做什么,它都会破坏很多以前可以正常工作的东西。所以在线教程充其量也只是零散的。

一开始我以为可能是某些 MIME 设置不太正确,所以我手动将 python MIME 添加到 lighttpd.conf 文件中。似乎什么都没改变。我在 lighttpd.conf 文件底部添加了以下内容:

mimetype.assign   += ( ".py" => "text/x-python" )
mimetype.assign   += ( ".pyo" => "application/x-python-code" )
mimetype.assign   += ( ".pyc" => "application/x-python-code" )

这是我的两个配置文件:

10-cgi.conf:

# /usr/share/doc/lighttpd/cgi.txt
server.modules += ( "mod_cgi" )

## Warning this represents a security risk, as it allow to execute any file
## with a .pl/.php/.py even outside of /usr/lib/cgi-bin.
#
cgi.assign      = (
#       ".pl"  => "/usr/bin/perl",
#       ".php" => "/usr/bin/php-cgi",
       ".py"  => "/usr/bin/python"
)

lighttpd.conf:

server.modules = (
    "mod_access",
    "mod_alias",
    "mod_compress",
    "mod_redirect",
       "mod_rewrite",
#       "mod_cgi",
)

server.document-root        = "/var/www/html"
server.upload-dirs          = ( "/var/cache/lighttpd/uploads" )
server.errorlog             = "/var/log/lighttpd/error.log"
server.pid-file             = "/var/run/lighttpd.pid"
server.username             = "www-data"
server.groupname            = "www-data"
server.port                 = 80


index-file.names            = ( "index.php", "index.html", "index.lighttpd.html" )
url.access-deny             = ( "~", ".inc",)
static-file.exclude-extensions = ( ".php", ".pl", ".fcgi", ".cgi", ".py")

compress.cache-dir          = "/var/cache/lighttpd/compress/"
compress.filetype           = ( "application/javascript", "text/css", "text/html", "text/plain" )

# default listening port for IPv6 falls back to the IPv4 port
## Use ipv6 if available
#include_shell "/usr/share/lighttpd/use-ipv6.pl " + server.port
include_shell "/usr/share/lighttpd/create-mime.assign.pl"
include_shell "/usr/share/lighttpd/include-conf-enabled.pl"

mimetype.assign   += ( ".py" => "text/x-python" )
mimetype.assign   += ( ".pyo" => "application/x-python-code" )
mimetype.assign   += ( ".pyc" => "application/x-python-code" )

是我太弱智了吗,还是 ubuntu 安装 lightty 时自动执行的安装脚本在某个地方出了问题?

相关内容