原文作者:(作者未标注)
原文链接:https://oracle-base.com/articles/misc/oracle-rest-data-services-ords-standalone-mode-22-onward
这些说明适用于 ORDS 22.1 版以后。如果您想使用 ORDS 22.1 之前的版本,请使用此处的说明。
Oracle 支持使用内置 Jetty Web 服务器以独立模式运行的 Oracle REST 数据服务 (ORDS),因此无需担心安装 Tomcat 或 WebLogic,除非您有令人信服的理由。删除这个额外的层意味着要学习的层减少了一层,要修补的层也减少了一层。
相关文章。
安装
无论使用何种应用服务器,ORDS 安装过程都是相似的,因此您应该按照此处描述的安装
在本文中引用路径时,我们将使用以下环境变量。请注意,我们正在将ORDS_HOME/bin目录添加到我们的PATH中,因此我们不必在每次使用ords命令时都明确说明路径。
导出 JAVA_HOME=/u01/java/latest
导出 ORDS_HOME=/u01/ords
导出 ORDS_CONFIG=/u01/config/ords
导出 PATH=${ORDS_HOME}/bin:${PATH}设置ORDS_CONFIG环境变量意味着我们不需要--config在下面的命令中显式使用参数ords,但我们仍然会包含它。
在独立模式下启动/停止 ORDS
默认的Java堆大小会导致失败,所以我们需要使用_JAVA_OPTIONS环境变量来设置堆大小。然后我们可以使用该serve命令以独立模式启动 ORDS。
导出_JAVA_OPTIONS="-Xms1126M -Xmx1126M"
ords --config ${ORDS_CONFIG} 服务现在可以从以下 URL 获得资源,并根据需要调整您的主机名。
http://localhost:8080/ords/
独立模式将捕获控制台并将所有日志信息推送到它。我们可以使用 CTRL+C 停止 ORDS。
对于生产部署,我们应该将 ORDS 作为后台进程启动并将输出推送到日志文件。例如,我们可以创建一个名为“~/scripts/start_ords.sh”的文件,其内容如下。请记住根据需要调整路径。
#!/bin/bash
导出 PATH=/usr/sbin:/usr/local/bin:/usr/bin:/usr/local/sbin:$PATH
导出 JAVA_HOME=/u01/java/latest
导出 ORDS_HOME=/u01/ords
导出 ORDS_CONFIG=/u01/config/ords
LOGFILE=/home/oracle/scripts/logs/ords-`date +"%Y""%m""%d"`.log
导出_JAVA_OPTIONS="-Xms1126M -Xmx1126M"
nohup ${ORDS_HOME}/bin/ords --config ${ORDS_CONFIG} 服务 >> $LOGFILE 2>&1 &
echo "查看日志文件:tail -f $LOGFILE"我们可以通过杀死后台进程来杀死 ORDS。我们创建一个名为“~/scripts/stop_ords.sh”的脚本,其内容如下。
#!/bin/bash
导出 PATH=/usr/sbin:/usr/local/bin:/usr/bin:/usr/local/sbin:$PATH
杀死`ps -ef | grep [o]rds.war | awk '{打印 $2}'`我们创建日志目录并使脚本可执行。
mkdir -p ~/脚本/日志 chmod u+x ~/scripts/*.sh
然后,我们可以使用脚本轻松停止和启动 ORDS。
~/scripts/stop_ords.sh ~/scripts/start_ords.sh
自动 SSL (HTTPS)
默认情况下,ORDS 在端口 8080 上使用 HTTP。我们可以使用--port参数更改端口。我们可以通过添加参数使 ORDS 使用 HTTPS --secure,这会将端口默认为 8443,但我们可以使用--port参数来更改它。在此示例中,我们将端口显式设置为默认 HTTPS 值。
导出_JAVA_OPTIONS="-Xms1126M -Xmx1126M"
ords --config ${ORDS_CONFIG} 服务 --secure --port 8443如果您未指定有效的证书和密钥,ORDS 将自动创建用于 SSL 的自签名证书。证书和密钥存储在“$ORDS_CONFIG/global/standalone”目录中。现在可以从以下 URL 获得资源,并根据需要调整您的主机名。
https://localhost:8443/ords/
我们可以使用以下命令将其设置为默认操作。HTTPS 端口的存在意味着 ORDS 正在安全模式下运行。
ords --config ${ORDS_CONFIG} 配置设置独立.https.port 8443这些设置被添加到“$ORDS_CONFIG/global/settings.xml”文件中。
我们现在可以通过以下命令使用 HTTPS 运行 ORDS。
导出_JAVA_OPTIONS="-Xms1126M -Xmx1126M"
ords --config ${ORDS_CONFIG} 服务如果您使用命令行参数,请记住修改您的“start_ords.sh”脚本。
SSL 配置 (HTTPS)
您可能应该在 ORDS 前面使用反向代理或负载均衡器,这是您的证书颁发机构 (CA) 证书所在的位置。即便如此,您可能还希望您的内部流量也使用 HTTPS,因此您需要将 Jetty 配置为使用 HTTPS。如果您有正确的 CA 证书和密钥,请确保它们是 DER 格式。在这种情况下,我们将手动创建一个新的自签名证书并将其用于 HTTPS 配置。请记住根据需要调整“dname”和密码。
mkdir ~/keystore cd ~/密钥库 # 在 JKS 密钥库中创建自签名证书。 $ JAVA_HOME/bin/keytool -genkey -keyalg RSA -alias selfsigned -keystore keystore.jks \ -dname "CN=`hostname`, OU=Example Department, O=Example Company, L=Birmingham, ST=West Midlands, C=GB" \ -storepass password1 -validity 3600 -keysize 2048 -keypass password1 # 从 JKS 密钥库创建一个 PKCS12 密钥库。 $JAVA_HOME/bin/keytool -importkeystore -srckeystore keystore.jks -srcalias selfsigned -srcstorepass password1 \ -destkeystore keystore.p12 -destkeystore PKCS12 -deststorepass 密码1 -destkeypass 密码1 # 提取PEM格式的密钥和证书。 openssl pkcs12 -in keystore.p12 -nodes -nocerts -out `hostname`-key.pem openssl pkcs12 -in keystore.p12 -nokeys -out `hostname`.pem # 将它们转换为 DER 格式。 openssl pkcs8 -topk8 -inform PEM -outform DER -in `hostname`-key.pem -out `hostname`-key.der -nocrypt openssl x509 -inform PEM -outform DER -in `hostname`.pem -out `hostname`.der
如果一切顺利,您现在拥有 DER 格式的密钥和证书。该文件名基于您的主机名,因此它们可能看起来不同。
$ ls *.der localhost.localdomain.der localhost.localdomain-key.der $
我们现在可以使用此证书和密钥启动 ORDS,如下所示。
导出_JAVA_OPTIONS="-Xms1126M -Xmx1126M"
ords --config ${ORDS_CONFIG} 服务 --certificate ~/keystore/localhost.localdomain.der --key ~/keystore/localhost.localdomain-key.der--secure和设置是隐含的--port,因为我们使用的是证书,但我们可以显式设置它们并获得相同的结果。
导出_JAVA_OPTIONS="-Xms1126M -Xmx1126M"
ords --config ${ORDS_CONFIG} 服务 --secure --port 8443 --certificate ~/keystore/localhost.localdomain.der --key ~/keystore/localhost.localdomain-key.der现在可以从以下 URL 获得资源,并根据需要调整您的主机名。
https://localhost:8443/ords/
我们可以使用以下命令将其设置为默认值。HTTPS 端口的存在意味着 ORDS 正在安全模式下运行。
ords --config ${ORDS_CONFIG} 配置设置独立.https.port 8443
ords --config ${ORDS_CONFIG} 配置设置独立.https.cert ~/keystore/localhost.localdomain.der
ords --config ${ORDS_CONFIG} 配置设置独立.https.cert.key ~/keystore/localhost.localdomain-key.der这些设置被添加到“$ORDS_CONFIG/global/settings.xml”文件中。
我们现在可以使用 HTTPS 和我们的证书使用以下命令运行 ORDS。
导出_JAVA_OPTIONS="-Xms1126M -Xmx1126M"
ords --config ${ORDS_CONFIG} 服务如果您使用命令行参数,请记住修改您的“start_ords.sh”脚本。
APEX 静态图像
将 ORDS 用于前端 APEX 应用程序时,应将 ORDS 配置为提供 APEX 静态文件。
导出 APEX_IMAGES=/u01/software/apex/images
ords --config ${ORDS_CONFIG} 配置集standalone.static.path ${APEX_IMAGES}这些设置被添加到“$ORDS_CONFIG/global/settings.xml”文件中。
我们必须重新启动 ORDS 才能使更改生效。
~/scripts/stop_ords.sh ~/scripts/start_ords.sh
静态资源(文档根目录)
ORDS 可用于像常规 Web 服务器一样提供静态内容。默认位置需要以下路径。
mkdir -p ${ORDS_CONFIG}/global/doc_root--document-root可以使用命令行上的参数或修改以下默认设置来更改默认位置。
ords --config ${ORDS_CONFIG} 配置集standalone.doc.root ${ORDS_CONFIG}/global/doc_root如果您更改了默认设置,则需要重新启动 ORDS 才能使其生效。
~/scripts/stop_ords.sh ~/scripts/start_ords.sh
自定义错误页面
ORDS 将自动处理典型的 HTTP 错误。如果您在 ORDS 前面使用负载均衡器,您可能希望使用它来处理自定义错误消息,而不是更改 ORDS 配置。如果您需要,ORDS 可以处理自定义错误页面。error.externalPath使用自定义错误页面的位置修改设置。
ords --config ${ORDS_CONFIG} 配置设置 error.externalPath ~/error-pages创建所需的自定义错误文件。我刚刚创建了一些简单的测试。
mkdir -p ~/error-pages 回声“404 错误:哎呀”> ~/error-pages/404.html 回声“500 错误:哎呀”> ~/error-pages/500.html
重新启动 ORDS。
~/scripts/stop_ords.sh ~/scripts/start_ords.sh
访问日志
如果您想知道谁在访问您的 Web 服务器,访问日志非常重要。我们使用该standalone.access.log设置来确定 ORDS 将访问日志写入的位置。
ords --config ${ORDS_CONFIG} 配置集standalone.access.log ${ORDS_CONFIG}/logs重启 ORDS 使设置生效。
~/scripts/stop_ords.sh ~/scripts/start_ords.sh
一旦我们访问 ORDS,我们将看到在我们指定的目录中创建了一个访问日志。访问日志的名称格式为“ords_YYYY_MM_DD.log”。
所有设置
可以使用以下命令显示完整的设置列表。
$ ords 配置信息
ORDS:2022 年 4 月 22 日星期五 10:16:02 发布 22.1 生产
版权所有 (c) 2010、2022,甲骨文。
配置:
/u01/config/ords/
设置:
apex.security.administrator.roles逗号分隔列表
要分配的其他角色
认证的 APEX
管理员类型的用户。
apex.security.developer.roles 逗号分隔列表
要分配的其他角色
经过身份验证的 APEX 开发人员
键入用户。
apex.security.user.roles 逗号分隔列表
要分配的其他角色
经过身份验证的常规 APEX
用户。
autoupgrade.api.aulocation 的配置设置
AutoUpgrade.jar 位置。
autoupgrade.api.enabled 配置设置
启用自动升级 REST API
特征。
autoupgrade.api.jvmlocation 的配置设置
自动升级 REST API JVM
地点。
autoupgrade.api.loglocation 的配置设置
自动升级 REST API 日志
地点。
cache.metadata.enabled 指定设置为
启用或禁用元数据
缓存。
cache.metadata.timeout 指定设置为
确定一个多长时间
元数据记录保留在
缓存。持续时间更长
意味着,需要更长的时间
查看应用的更改。这
接受的格式是基于
ISO-8601 持续时间格式。
database.api.enabled 启用数据库 API 功能。
database.api.management.services.disabled禁用数据库 API
行政相关
服务。仅适用
启用数据库 API 时。
db.adminUser 数据库的用户名
ORDS 将使用的帐户
用于行政操作
在数据库中。
db.adminUser.password 数据库的密码
ORDS 将使用的帐户
用于行政操作
在数据库中。
db.cdb.adminUser 数据库的用户名
ORDS 将使用的帐户
用于可插拔数据库
生命周期管理。
db.cdb.adminUser.password 数据库的密码
ORDS 将使用的帐户
用于可插拔数据库
生命周期管理。
db.connectionType 数据库连接类型。
指定值之一:
基本,tns,customurl。
db.credentialsSource 指定源
数据库凭据何时
创建直接连接
用于运行 SQL 语句。
值可以是以下之一:池或
要求。如果使用池,则
在此定义的凭据
池将用于创建一个
JDBC 连接。如果要求
使用时,凭据在
该请求将用于
创建一个 JDBC 连接和
如果成功授予
请求者 SQL Developer 角色。
默认值为池。
db.customURL JDBC URL 连接到
连接到数据库。
db.hostname 数据库的主机名
服务器。
db.invalidPoolTimeout 指定等待多长时间
在重试无效之前
水池。
db.password 数据库密码。
db.poolDestroyTimeout 表示等待多长时间
优雅地摧毁一个水池,
在强行移动之前
销毁所有连接
包括借来的。
db.port 数据库的端口
服务器监听器。
db.serviceNameSuffix 的服务名称后缀
连接到 CDB 的 PDB。
db.servicename 数据库服务名称。
db.tnsAliasName TNS 别名
匹配中的名称
tnsnames.ora 文件。
db.tnsDirectory 的目录位置
您的 tnsnames.ora 文件。
db.username 数据库用户名。
db.wallet.zip 钱包存档(提供
在 BASE64 编码中)
包含连接详细信息
为游泳池。
db.wallet.zip.path 钱包存档的路径
包含连接详细信息
为游泳池。
db.wallet.zip.service 指定服务名称
钱包存档
水池。
debug.printDebugToScreen 指定是否显示
浏览器中的错误消息。
debug.trackResources 启用 JDBC 跟踪
如果没有资源
释放会导致资源
泄漏/耗尽
数据库。跟踪强加了一个
性能开销。
error.externalPath 外部路径
错误页面。
error.responseFormat 指定什么格式
错误响应应该是
呈现。可能的值:
HTTP、JSON、自动。默认为
汽车。
feature.openservicebroker.exclude 禁用开放服务
经纪人服务可用于
游泳池。
feature.sdw 启用数据库操作
特征。
http.cookie.filter 一个逗号分隔的列表
要排除的 HTTP Cookies
初始化 Oracle Web
代理环境。
icap.port 指定 Internet
内容适配协议
(ICAP) 端口进行病毒扫描
文件。icap.port 或
icap.secure.port 是必需的
有值时
icap.server 已设置。
icap.secure.port 指定 Internet
内容适配协议
(ICAP) 病毒安全端口
扫描文件。无论是 icap.port
或 icap.secure.port 是
需要有一个值时
icap.server 已设置。
icap.server 指定 Internet
内容适配协议
(ICAP) 服务器名称或 IP
病毒扫描文件的地址。
jdbc.DriverType Oracle JDBC URL 子类型
可以有一个
值:薄,oci8。默认值
瘦。
jdbc.InactivityTimeout 指定可用多长时间
连接可以保持空闲
在它关闭之前。这
不活动连接超时
以秒为单位。默认为
1800.
jdbc.InitialLimit 的初始大小
连接数
将被创建。默认为
10.
jdbc.MaxConnectionReuseCount 指定最大数量
重用连接的次数
在它被丢弃之前
换成新的
联系。
jdbc.MaxLimit 最大数量
连接。默认为 10。
jdbc.MaxStatementsLimit 最大数量
要为每个缓存的语句
联系。默认为 10。
jdbc.MinLimit 最小数量
连接。默认为 2。
jdbc.auth.admin.role 标识数据库角色
表示数据库
用户应该得到 SQL
管理员角色。
jdbc.auth.enabled 指定 PL/SQL
网关调用可以
使用数据库进行身份验证
用户。默认为假。放
为 true 以启用功能。
Oracle 建议不要使用
此功能。此功能
仅用于方便
客户迁出
mod_plsql。
jdbc.cleanup.mode 指定池化 JDBC 的方式
连接,并对应
数据库会话,被释放
当一个请求被
处理。
jdbc.driverName JDBC 驱动程序的名称
使用。
jdbc.statementTimeout 指定借用多长时间
(使用中)连接可以
在未使用之前保持未使用状态
被视为被遗弃和
回收。被遗弃的
连接超时在
秒。
json.sdo.geometry.output.geojson 指定 SDO 几何
数据应返回
GeoJSON 格式。
misc.defaultPage 默认页面(PL/SQL
过程)调用,如果
URL 指向上下文
数据库池的根。
默认值为顶点。
misc.pagination.maxRows 指定最大数量
将返回的行数
处理时来自查询
一个 RESTful 服务和那个
将从一个返回
结果中的嵌套游标
放。影响所有 RESTful
通过 a 产生的服务
SQL查询,不管
资源是否
分页。默认为 10000。
owa.trace.sql 布尔属性,如果为真
导致 SQL 的跟踪
执行的语句
要响应的 Oracle Web 代理
到日志。
plsql.gateway.mode 指示 PL/SQL
网关功能应该
可用于游泳池或
不是。值可以是以下之一:
禁用,直接或代理。
如果使用直接,则池
将服务于 PL/SQL 网关
直接请求。如果被代理
使用,PLSQL_GATEWAY_CONFIG
视图用于确定
要代理的用户。
procedure.rest.preHook 存储的 PL/SQL 的名称
应该是的功能
在调度之前调用
任何 REST 请求。
request.traceHeaderName 表示 HTTP 的名称
唯一的请求标头
标识请求结束
当它通过时结束
的各个层次
应用程序堆栈。在甲骨文中
这个标题通常是
简称ECID
(实体上下文 ID)。
resource.templates.enabled 已弃用。配置
属性指示是否
旧资源模板
(基于 APEX 的 REST)应该是
启用与否。假的
默认。这
资源模板代码库
不兼容
单池
(ORDS_PUBLIC_USER)
建筑必须如此
禁用。
restEnabledSql.active 启用支持 REST 的 SQL
特征。
security.credentials.attempts 的最大数量
密码失败
允许尝试。启用者
设置一个正整数
价值。默认为 -1。
security.credentials.file 凭据所在的文件
被存储。
security.credentials.lock.time 锁定账户的时间
已超过最大值
尝试。默认为 10
分钟。
security.requestValidationFunction 指定一个验证
函数来判断是否
中要求的程序
应允许 URL 或
不允许处理。
该函数应该返回
如果程序是,则为真
允许;否则,返回
错误的。
security.validationFunctionType 表示什么类型
security.requestValidationFunc
离子是:javascript或plsql。
默认为 plsql。
security.verifySSL 表示HTTPS是否为
在您的环境中可用。
Standalone.access.log 要存储的文件夹路径
HTTP 请求访问日志。如果
未指定则无法访问
将生成日志。
Standalone.binds 逗号分隔的主机列表
名称或 IP 地址
识别特定网络
监听的界面,
默认 0.0.0.0。
Standalone.context.path {0} 所在的上下文路径
位于,默认为 /ords
Standalone.doc.root 指向的位置
静态资源
在 / 根下服务
服务器路径位于。
Standalone.http.port HTTP 监听端口,默认 8080
Standalone.https.cert SSL 证书路径。如果你
正在提供 SSL
证书,您必须指定
证书位置。
Standalone.https.cert.key SSL 证书密钥路径。如果
您正在提供 SSL
证书,您必须指定
证书密钥位置。
Standalone.https.host SSL 证书主机名
Standalone.https.port HTTPS 监听端口,默认
8443
Standalone.static.context.path 上下文路径,其中
Application Express 静态
资源位于,
默认为 /i
Standalone.static.path 包含的文件夹的路径
所需的静态资源
顶尖
Standalone.stop.timeout Standalone 的时间段
优雅等待模式
关闭。
$



