如何为apache + wsgi网站设置LD_LIBRARY_PATH

时间:2016-06-07 23:20:44

标签: python apache environment-variables mod-wsgi

我试图在我的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。我怎么能做到这一点?

1 个答案:

答案 0 :(得分:1)

您是否已编译并安装了Python模块扩展所需的库?如果是,请在编译和安装该Python模块时将var Dgram = require("dgram"); var MessageQueue = require("./MessageQueue"); var Message = require("./Message"); function MessageServer(name, listenPort, messageQueue, bindCallBack, messageReceiveCallBack,closeCallback,errorCallback) { this.Name = name; this.MessageQueue = messageQueue; this.Port = listenPort; var datagram = Dgram.createSocket("udp4"); MessageServer.prototype.Bind = function() { datagram.bind(this.Port); }; MessageServer.prototype.OnReceive = function(message, info) { var msg = new Message(message, info.address, info.port); MessageQueue.Add(msg); }; MessageServer.prototype.OnBind = function (datagram) { var address = datagram.address(); console.log("server listening " + address.address + ":" + address.port); }; datagram.on("listening",this.OnBind(datagram)); datagram.on("message", function(msg,info) { OnReceive(msg, info); }); datagram.on("error", function(err) { console.log(this.Name + " error: " + error); }); datagram.on("close", function() { console.log("server closing: " + Name); }); } module.exports = MessageServer; 环境变量设置为库所在的目录。这样,该位置嵌入在Python模块扩展中,并且在运行时不需要LD_RUN_PATH

使用环境变量执行此操作的唯一方法是在Apache的启动脚本中设置LD_LIBRARY_PATH,以便在启动Apache时根据需要进行设置。这意味着摆弄系统启动脚本,因此不理想或总是实用。

可能有效的最后一种方法是使用:

可能有效,但实际上并不是很好,甚至可能不起作用。
LD_LIBRARY_PATH

在Apache配置中。这将强制在启动时将特定库链接到Apache,但是根据库的使用方式,这可能不起作用。