1

我正在使用自己的用户运行脚本:

# from /etc/lighttpd/lighttpd.conf

server.document-root        = "/opt/app/current/bin/"
server.username             = "klenwell"

fastcgi.server  = (
    ".py" => (
        "localhost" => (
            "socket" => "/tmp/klenwell-fastcgi.socket",
            "bin-path" => "/opt/app/current/bin/app.py",
            "max-procs" => 5
        )
    )
)

在我的 python 脚本中,我的 shebang 设置如下:

#!/usr/bin/env python

但是当我运行脚本时,我收到一条错误消息,指出它无法加载我使用 pip 安装的模块。这表明它使用的是系统 python 而不是 pyenv 版本。

/usr/sbin/lighttpd -D -f /etc/lighttpd/lighttpd.conf start
(traceback omitted)
ImportError: No module named requests

如果我将 shebang 更改为显式使用 pyenv python 安装,如下所示:

#!/home/klenwell/.pyenv/versions/2.7.8/bin/python

我能够成功启动 lig​​httpd。

目前,相同的基本配置正在使用 pythonbrew 而不是 pyenv 成功运行 Web 应用程序。但由于 pythonbrew 已被弃用,我正在尝试迁移到 pyenv。关于如何配置 lighttpd 以便它为我的用户成功加载 pyenv 的任何想法?

4

1 回答 1

1

一位同事发现了这一点。它需要将 pyenv 路径添加PATHbin-environment. 例如:

fastcgi.server  = (
    ".py" => (
        "localhost" => (
            "socket" => "/tmp/klenwell-fastcgi.socket",
            "bin-path" => "/opt/app/current/bin/app.py",
            "bin-copy-environment" => (""),
            "bin-environment" => (
              "PATH" => "/home/klenwell/.pyenv/shims:/home/klenwell/.pyenv/bin:/bin:/sbin:/usr/bin:/usr/local/bin"
            ),
            "max-procs" => 5
        )
    )
)
于 2014-09-19T20:44:11.493 回答