我正在尝试在 Debian 系统的 lighttpd 中将 webpy 作为 fastCgi 运行。 Webpy 需要 Flup 和 cheroot 才能工作,所以我创建了一个虚拟环境,并设法让它在 venv 中运行(我使用 pip 安装了 Flup 和 cheroot),使用这些命令:
source .venv/bin/activate
python code.py
这样就可以运行了(文件code.py包含webpy教程中显示的源代码)。我被迫使用 pip 和 venv 安装软件包,因为如果我尝试从 apt 安装 python 软件包,我会收到 PEP668 EXTERNALLY-MANAGED 错误。
我想做的是让它由lighttpd 运行。 我修改了 /etc/lighttpd/conf-available/10-fastcgi.conf 如下:
# /usr/share/doc/lighttpd/fastcgi.txt.gz
# http://redmine.lighttpd.net/projects/lighttpd/wiki/Docs:ConfigurationOptions#mod_fastcgi-fastcgi
server.modules += ( "mod_fastcgi" )
server.modules += ( "mod_rewrite" )
fastcgi.server = ( "/code.py" =>
(( "socket" => "/tmp/fastcgi.socket",
"bin-path" => "/var/www/ltm/.venv/bin/python3 /var/www/ltm/code.py",
"max-procs" => 1,
"bin-environment" => (
"REAL_SCRIPT_NAME" => ""
),
"check-local" => "disable"
))
)
url.rewrite-once = (
"^/favicon.ico$" => "/static/favicon.ico",
"^/static/(.*)$" => "/static/$1",
"^/(.*)$" => "/code.py/$1",
)
这种方式似乎有效,但是当我继续教程并开始使用模板时,它停止工作(我收到错误:没有名为索引的模板)。 我很确定 bin-path 设置是错误的,但这是我可以让它运行的唯一方法。
处理此配置的正确方法是什么?
脚本似乎找不到模板文件,因为它没有在这些模板所在的目录中运行。您应该将 Python 脚本中的当前工作目录设置为包含模板的目录。
像这样:
import os
os.chdir('/path/to/your/templates')