Lighttpd + webpy + venv:如何配置

问题描述 投票:0回答:1

我正在尝试在 Debian 系统的 lighttpd 中将 webpy 作为 fastCgi 运行。 Webpy 需要 Flupcheroot 才能工作,所以我创建了一个虚拟环境,并设法让它在 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 python-venv lighttpd web.py
1个回答
0
投票

脚本似乎找不到模板文件,因为它没有在这些模板所在的目录中运行。您应该将 Python 脚本中的当前工作目录设置为包含模板的目录。

像这样:

import os
os.chdir('/path/to/your/templates')
© www.soinside.com 2019 - 2024. All rights reserved.