Elastic Beanstalk上的环境变量/ oracledb

时间:2015-04-03 17:32:40

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

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

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

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

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

    但是,我们不知道如何在Beanstalk配置中正确地执行这些操作。

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

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

    LD_LIBRARY_PATH=x node app.js
    

    它们不用于npm install

    我们如何更新弹性beanstalk配置,将instantclient置于我们想要的位置,或者在LD_LIBRARY_PATH期间设置npm install?

2 个答案:

答案 0 :(得分:1)

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

  1. 使用安装时环境变量$ OCI_LIB_DIR和$ OCI_INC_DIR
  2. 安装了最高版本的Instant Client RPMs
  3. $ ORACLE_HOME
  4. 在/ opt / oracle / instantclient
  5. 请参阅https://github.com/oracle/node-oracledb/blob/master/INSTALL.md#linuxadv

    您可以在https://github.com/oracle/node-oracledb/blob/master/binding.gyp

    中看到执行此操作的逻辑

    因此问题的前提是不正确的,您不应该更改Instant Client。使用Instant Client RPM,运行&nbsp install oracledb'时不需要设置环境变量,也不需要在运行时设置LD_LIBRARY_PATH。上面的链接有详细信息。

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

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

    中所述

答案 1 :(得分:0)

选项1:在/ opt / oracle / instantclient /

下安装oracledb

您可以尝试使用--prefix选项

更改rpm包的instalation文件夹

rpm --prefix=/opt/oracle/instantclient/ <oracledb_pack_name>.rpm

仅当包可重定位时才有效。您可以通过以下方式查看:

rpm -ql <oracledb_pack_name>.rpm

选项2:更改LD_LIBRARY_PATH

customize-containers-format-commands

中所述
  

您可以使用命令键在EC2实例上执行命令。这些命令按名称按字母顺序处理,并在设置应用程序和Web服务器并提取应用程序版本文件之前运行。

您可以尝试在配置文件LD_LIBRARY_PATH部分中导出commands:。这应该导出npm的env变量。类似的东西:

commands:
    export-ld-lib:
        command: export LD_LIB_PATH=//usr/lib/oracle/12.1/client64