我正在尝试使用一个非常基本和简单的 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 时自动执行的安装脚本在某个地方出了问题?