node.js - Elastic Beanstalk 上的环境变量/oracledb

标签 node.js oracle ubuntu amazon-web-services amazon-elastic-beanstalk

我们正在尝试安装 Node 模块 oracledb在 Amazon Elastic Beanstalk 实例上。

我们可以让 oracledb 在本地正常工作,并且我们已经到了 Beanstalk 实例通过 rpms 安装 instantclient 的地步。我们现在坚持的是 npm install 期望使用 LD_LIBRARY_PATH 让 instantclient 在 /opt/oracle/即时客户端。目前,rpms 将其安装到 /usr/lib/oracle/12.1/client64

似乎有两种可能的解决方案:

  1. 获取 rpm 以将 instantclient 安装到 /opt/oracle/instantclient 或在事后移动/链接它
  2. 设置 LD_LIBRARY_PATH 环境变量,以便 npm install 知道使用 /usr/lib/oracle/12.1/client64/中的 instantclient

不过,我们不知道如何在 Beanstalk 配置中正确地完成这些事情。

我找不到任何关于 Beanstalk 实例何时实际运行 npm install 的信息,我们没有明确告诉它这样做,但它正在运行。

通过环境属性更改环境变量 as the documentation suggests here 不起作用。看似这些仅在服务器实际运行时设置,如

LD_LIBRARY_PATH=x node app.js

它们不用于 npm install

我们如何更新我们的弹性 beantalk 配置以将 instantclient 放在我们想要的地方或在 npm install 期间设置 LD_LIBRARY_PATH

最佳答案

在 Linux 上安装 node-oracledb v1 时,安装会按以下顺序查找 Oracle 库:

  1. 使用安装时环境变量 $OCI_LIB_DIR 和 $OCI_INC_DIR
  2. 安装了最高版本的 Instant Client RPM
  3. 在 $ORACLE_HOME 中
  4. 在/opt/oracle/instantclient

参见 https://github.com/oracle/node-oracledb/blob/master/INSTALL.md#linuxadv

您可以在 https://github.com/oracle/node-oracledb/blob/master/binding.gyp 中看到执行此操作的逻辑

所以问题的前提是不正确的,你不应该需要改变即时客户端。使用即时客户端 RPM,您不需要在运行“npm install oracledb”时设置环境变量,也不需要在运行时设置 LD_LIBRARY_PATH。上面的链接有详细信息。

问题是,您的安装失败的原因是什么?

更新:对于 node-oracledb v2,您确实需要设置 ORACLE_HOME(仅适用于完整的 Oracle 安装)或使用 LD_LIBRARY_PATH 或使用 ldconfig,如 installation manual 中所述

关于node.js - Elastic Beanstalk 上的环境变量/oracledb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29436994/

相关文章:

javascript - Meteor 和 React 具有响应式样式

ubuntu - FCEUX 模拟器不显示工具菜单

php - 在 Ubuntu 上为 PHP 安装 Ingres 扩展

linux - Docker 在构建时无法找到包 (wkhtmltopdf)

node.js - apollo-server-express CORS 问题

javascript - 将 getusermedia 插入基于 node.js 和 socket.io 的聊天引擎

javascript - 在nodejs中将参数传递给回调函数的最佳方法

oracle - 如何在oracle表单中添加自定义背景颜色?

oracle - 如何从 PL/SQL 中的 raw 中获取特定字节值?

oracle - 使用 VPN 连接到 Oracle