我已经在Raspberry Pi上安装了Lighttpd,但现在我想让服务器端代码正常工作。我熟悉PHP,但我认为应该尝试使用Python,因为它应该是Raspberry Pi的“入门语言”。如何通过Lighttpd使Python处理服务器端代码?

评论

penzilla.net/tutorials/python/cgi链接已损坏,但感谢您的出色写作。我的Pi明天到达!

#1 楼

您需要的是对lighttpd的CGI支持。

打开lighttpd配置文件(/etc/lighttpd/lighttpd.conf)并取消注释“ mod_cgi”行(如果存在则从该行的开头删除#),或者如果不存在则添加此行当下。

server.modules = (
            "mod_access",
            "mod_alias",
            "mod_accesslog",
            "mod_auth",
            "mod_ssi",
            "mod_cgi",
            "mod_compress",
            "mod_fastcgi",
            "mod_rewrite",
            "mod_magnet",
)


在文件底部添加以下内容:

$HTTP["url"] =~ "^/cgi-bin/" {
        cgi.assign = ( ".py" => "/usr/bin/python" )
}


重新启动lighttpd守护程序:

sudo service lighttpd force-reload


然后在Web服务器的根目录下创建一个cgi-bin目录。此目录中所有以.py结尾的文件都将由Python处理。

您现在可以编写Python脚本来处理Web请求。您可能想阅读有关使用Python编写CGI程序的教程。

另一方面,如果您想使用一个框架来处理一些底层细节并提高开发人员的工作效率,建议您参考web.py。您可以使用apt:

sudo apt-get install python-webpy


安装它。Cloud 101博客上的Lucas发布了一个很好的教程,介绍如何使用webpy框架编写网页。

评论


这是FastCGI还是CGI?

–马克·英格拉姆
2012年7月30日在15:14

请注意,普通的CGI需要为每个请求启动python解释器,因此它仅非常适合偶尔的请求。

–索比昂·拉文·安德森(ThorbjørnRavn Andersen)
2012年8月14日在6:06

this,这只能部分起作用。我现在可以通过调用“ http://(IP)/cgi-bin/test.py?parameter=xxx”而不是“ http://(IP)/cgi-bin/test.cgi?parameter=xxx”运行python “-稍后会显示404错误...

– 576i
2014年2月5日在21:40



@ 576i尝试将以下行cgi.assign =(“ .py” =>“ / usr / bin / python”)更改为cgi.assign =(“ .cgi” =>“ / usr / bin / python”)

–史蒂夫·罗比拉德
2014年2月6日,0:07



@ 576i而不是在其他问题的评论中继续进行此讨论,请打开一个新问题,并提供有效的方法和您尝试过的方法。然后,我将删除这些评论。顺便说一句,为什么您不能只使用.py扩展名(您说的可行)呢?

–史蒂夫·罗比拉德
14年2月18日在21:41

#2 楼

接受的答案对我不起作用,它也忽略了可用于Lighttpd的预配置软件包。

在Raspberry的Lighttpd上安装Python的正确方法是:

首先启用
cgi by

sudo lighttpd-enable-mod cgi

这将为Lighttpd创建一个新的配置文件:

/etc/lighttpd/conf-enabled/10-cgi.conf

编辑配置文件nano /etc/lighttpd/conf-enabled/10-cgi.conf,看起来与此类似

server.modules += ( "mod_cgi" )

$HTTP["url"] =~ "^/cgi-bin/" {
        alias.url += ( "/cgi-bin/" => "/var/www/cgi-bin" )
        cgi.assign = (
                ".py"  => "/usr/bin/python",
        )
}


通过执行以下命令确保安装了python 2:

/usr/bin/python --version

现在,重新启动

sudo /etc/init.d/lighttpd force-reload

祝你好运!