apache+wsgi网站如何设置LD_LIBRARY_PATH
How to set LD_LIBRARY_PATH for apache+wsgi website
我正在尝试在我的基于 wsgi(apache + flask)的网站中使用 python 库。
在独立命令脚本中使用库时,我必须将库路径添加到 LD_LIBRARY_PATH
所以这适用于独立脚本:
# export LD_LIBRARY_PATH=/usr/local/lib:/usr/local/lib64
# python script.py
现在,当我尝试通过 Apache+wsgi 使用这个 python 库时,我需要将相同的路径传递给 apache worker。我怎样才能做到这一点?
您编译和安装的 Python 模块扩展是否需要该库?如果是,请将 LD_RUN_PATH
环境变量设置为编译和安装 Python 模块时库所在的目录。这样,该位置将嵌入 Python 模块扩展本身,您在 运行 时不需要 LD_LIBRARY_PATH
。
使用环境变量实现此目的的唯一其他方法是在 Apache 的启动脚本中设置 LD_LIBRARY_PATH
,以便在启动 Apache 时根据需要进行设置。这意味着摆弄系统启动脚本并不理想或不实用。
最后一种可能可行但不是很好的想法甚至可能行不通的方法是使用:
LoadFile "/usr/local/lib/libmylib.so"
在 Apache 配置中。这将在启动时强制将特定库链接到 Apache,但根据库的使用方式,这可能不起作用。
对我来说,更简单的解决方案是遍历 LD_LIBRARY_PATH 并创建指向 /usr/lib 的软链接。如果您的 LD_LIBRARY_PATH 不是太长,则非常有效:
~/opt/lib$ for f in $(ls) ; do sudo ln -s `pwd`/$f /usr/lib/$f ; done
我正在尝试在我的基于 wsgi(apache + flask)的网站中使用 python 库。
在独立命令脚本中使用库时,我必须将库路径添加到 LD_LIBRARY_PATH
所以这适用于独立脚本:
# export LD_LIBRARY_PATH=/usr/local/lib:/usr/local/lib64
# python script.py
现在,当我尝试通过 Apache+wsgi 使用这个 python 库时,我需要将相同的路径传递给 apache worker。我怎样才能做到这一点?
您编译和安装的 Python 模块扩展是否需要该库?如果是,请将 LD_RUN_PATH
环境变量设置为编译和安装 Python 模块时库所在的目录。这样,该位置将嵌入 Python 模块扩展本身,您在 运行 时不需要 LD_LIBRARY_PATH
。
使用环境变量实现此目的的唯一其他方法是在 Apache 的启动脚本中设置 LD_LIBRARY_PATH
,以便在启动 Apache 时根据需要进行设置。这意味着摆弄系统启动脚本并不理想或不实用。
最后一种可能可行但不是很好的想法甚至可能行不通的方法是使用:
LoadFile "/usr/local/lib/libmylib.so"
在 Apache 配置中。这将在启动时强制将特定库链接到 Apache,但根据库的使用方式,这可能不起作用。
对我来说,更简单的解决方案是遍历 LD_LIBRARY_PATH 并创建指向 /usr/lib 的软链接。如果您的 LD_LIBRARY_PATH 不是太长,则非常有效:
~/opt/lib$ for f in $(ls) ; do sudo ln -s `pwd`/$f /usr/lib/$f ; done