Oracle APEX开发搭建三《apex20安装,Tomcat,Nginx配置优化》

安装配置 APEX(示例 apex20.2)

  • 如果英文尚可,可以参考官方文档,我当初就是根据官方文档,配置过PL/SQL getway和ORDS两种web监听方式。

1. 卸载旧版本的APEX

由于Oracle Datebase XE自带了一个旧版本的APEX,在正式安装最新版APEX之前,我们需要将旧版本的卸载掉。

su - oracle
cd /u01/app/oracle/product/19.3.0/db_1/apex   --你安装oracle db的地方

sqlplus /nolog

-- 用数据库超级管理员连接数据库
SQL> connect sys as sysdba

-- 卸载原有的旧版本APEX
SQL> @apxremov.sql

-- 退出当前数据库会话
SQL> exit

2. 安装最新版本APEX

确保仍然在oracle账号下,执行以下命令安装最新版本的APEX。

mkdir -p /u01/apex
unzip apex_18.1.zip -d /u01/
chown -R oracle:dba /u01/apex
mv apex/ /u01/apex202      --重命名为了区分版本

现在新的APEX安装文件已经放在/u01/apex202/目录下了,登录数据库执行安装。

cd /u01/apex202

-- 以超级管理员身份登录数据库
sqlplus / as sysdba

-- 安装APEX,指定默认表空间和静态文件别名    
-- 这时候如果不切换到PDB内,默认是安装在CDB,如果安装CDB中,会默认安装在所有PDB中,我一般装在PDB中。基本上只要重新进都要加一句

SQL>alter session set container=FAPDB1;
SQL> @apexins.sql SYSAUX SYSAUX TEMP /i/     --这一步安装时间会特别长,安装完之后可以看看db里应该有APEX_202000之类的用户
   
-- 安装完毕后数据库会话会自动断开,再次以超级管理员身份登录数据库
sqlplus / as sysdba

-- 创建APEX实例管理员(Instance Administration)及密码,这个密码必须包含特殊符号,否则设置不上。这个密码很重要,是管理APEX平台的账号密码,以后创建新的应用schema、解锁账号等都靠它,第一次登录APEX时也要用到。
SQL> @apxchpwd.sql

-- 解锁ORDS用户账号
SQL> alter user apex_public_user account unlock;
SQL> alter user apex_public_user identified by "your password";

-- 配置RESTful Services服务
SQL> @apex_rest_config.sql

-- 禁用数据库内置的PL/SQL网关
SQL> exec dbms_xdb.sethttpport(0);

--安装中文版  --所有操作都得在PDB下进行,语言包在 /apex202/builder/ 里,中文在这里zh-ch/load_zh-cn.sql,如果其他语言可以自己找。
-- 先将工作目录切到/u01/apex202/bulider/zh-ch,再用SQLplus进入
SQL> alter session set container=你的PDB;
SQL> @load_zh-cn.sql  --这一步静等就好了

-- 断开数据库会话
SQL> exit;

以上APEX就算安装完成了,下面开始配置web监听。这里先验证Tomcat+ords,再验证Tomcat+ords+Nginx方式。

3. 复制APEX静态文件到Tomcat目录

## 切换到root用户
su - root

## 在Tomcat的webapps目录下新建一个名为`i`的文件夹
mkdir -p /u01/tomcat/webapps/i/

## 将APEX静态文件复制过去
cp -a /u01/apex202/images/* /u01/tomcat/webapps/i/

## 重启Tomcat服务
systemctl restart tomcat

安装配置ORDS,压缩包的路径根据你之前上传的路径填写

mkdir -p /u01/ords
unzip /u01/opt/ords.19.2.zip -d /u01/ords/
cd /u01/ords
java -jar ords.war install advanced

根据提示完成ORDS的配置,第一个是让你定义一个ords的配置文件,这个config文件夹待会儿需要授权。

Enter the name of the database server[localhost]:这个根据你监听来定的,可以先用lsnrctl status查看里面的HOST=localhost,一般不修改host文件和主机名,这里应该都是localhost
Enter 1 to specify the database service name,or 2 to specify the database SID[1]:这个是选择PDB还是CDB,service name就是具体的PDB,SID就是CDB
这里面可能会设置好多用户密码,建议都用一样的,做好记录,方便管理。
Enter 1 if you wish to start in standalone mode or 2 to exit[1]:
如果你不想使用Tomcat,只想使用默认的ords,就选1,相当于执行命令:
java -jar ords.war standalone
我记得ords默认的servlet容器是jetty。我们待会儿使用Tomcat,所以这里 2 退出。

img

为tomcat账号授权(需切换到root用户)

确保tomcat账号(安装Tomcat服务器时自动创建的)可以访问/u01/ords/config目录。这个目录是你刚才配置ords第一步填的。

su - root
chown -R tomcat:tomcat /u01/ords/config

将 ords.war 部署到 Tomcat

现在我们可以将刚才生成的ords.war文件部署到Tomcat上了。

cp -a /u01/ords/ords.war /u01/tomcat/webapps/

## 重启Tomcat服务
systemctl restart tomcat

测试 APEX + ORDS + Tomcat 的组合是否正常工作

打开浏览器,访问http://你的IP:8080/ords,或者http://你的IP:8080/ords/apex_admin如果一切正常,应该可以访问到APEX的页面了。

img

  • workspace: INTERNAL
  • username: administrator
  • password: 你刚才设置的instance administration的密码

成功登录后界面如下图所示:

img

4. 配置Nginx,将http请求转发到Tomcat

最后,我们需要配置一下Nginx,让所有的http请求都能自动转发到部署在Tomcat上的ORDS上,完成跟APEX的交互。

Nginx默认配置文件在/etc/nginx/nginx.conf,我们需要修改这个文件,主要修改server节点下的内容。

  server {
      listen       80 default_server;
      listen       [::]:80 default_server;
      server_name  _;
      root         /usr/share/nginx/html;

      # Load configuration files for the default server block.
      include /etc/nginx/default.d/*.conf;

      location / {
      }

# 增加了/i/目录的请求转发规则,/i/目录是APEX默认的静态文件目录别名。
      location ^~ /i/ {
          alias /u01/tomcat/webapps/i/;
      }

# 增加/ords/目录的请求转发规则,所有形如http://xxx.xxx.xxx.xxx/ords/的请求都会自动转发到http://xxx.xxx.xxx.xxx:8080/ords/上
# 即APEX请求都会由Tomcat接管
      location ^~ /ords/ {
          proxy_pass http://localhost:8080/ords/;
          proxy_redirect off;
          proxy_set_header Host $host;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-Proto  $scheme;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          client_max_body_size 20m;
      }

      error_page 404 /404.html;
          location = /40x.html {
      }

      error_page 500 502 503 504 /50x.html;
          location = /50x.html {
      }
  }

重启Nginx服务

systemctl restart nginx

验证 APEX + ORDS + Tomcat + Nginx 的组合是否正常工作

打开浏览器,这次直接访问http://你的IP/ords,如果一切顺利,应该就直接打开APEX的页面了。

img

5.总结

至此,Oracle XE数据库 + ORDS + Tomcat + Nginx 的完整开发环境就搭建好了。

6. 优化

6.1 优化ords配置

如果你去看Tomcat的启动日志会发现下面几个参数默认值过小,Tomcat启动时已经warning了,虽然不影响使用。

调整/u01/ords/config/ords/defaults.xml中的参数值,具体如下:

<entry key="jdbc.InitialLimit">10</entry>
<entry key="jdbc.MinLimit">10</entry>
<entry key="jdbc.MaxLimit">60</entry>

重启 tomcat 服务以便使 ORDS 配置生效

systemctl restart tomcat
6.2 优化Nginx

修改/etc/nginx/nginx.conf,以下是我的nginx.conf文件内容,仅供参考,关于Nginx配置优化的,网上有很多:

# For more information on configuration, see:
#   * Official English Documentation: http://nginx.org/en/docs/
#   * Official Russian Documentation: http://nginx.org/ru/docs/

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;

events {
    worker_connections 1024;
    multi_accept on;
    use epoll;
}

http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 2048;

    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;


    # 开启gzip,减少我们发送的数据量
    gzip on;
    # 允许压缩的最小字节数
    gzip_min_length 1k;
    # 4个单位为16k的内存作为压缩结果流缓存
    gzip_buffers 4 16k;
    # 设置识别HTTP协议版本,默认是1.1
    gzip_http_version 1.0;
    # gzip压缩比,可在1~9中设置,1压缩比最小,速度最快,9压缩比最大,速度最慢,消耗CPU
    gzip_comp_level 3;
    # 压缩的类型
    gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text
/javascript;
    # 给代理服务器用的,有的浏览器支持压缩,有的不支持,所以避免浪费不支持的也压缩,所以根据客户端的HTTP头来判断,是否需要压缩
    gzip_vary on;


    # Load modular configuration files from the /etc/nginx/conf.d directory.
    # See http://nginx.org/en/docs/ngx_core_module.html#include
    # for more information.
    include /etc/nginx/conf.d/*.conf;

    server {
        listen       80 default_server;
        listen       [::]:80 default_server;
        server_name  _;
        root         /usr/share/nginx/html;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        location / {
        }

        # 增加了/i/目录的请求转发规则,/i/目录是APEX默认的静态文件目录别名。

        location ^~ /i/ {
          alias /u01/tomcat/webapps/i/;
        }

        # 增加/ords/目录的请求转发规则,所有形如http://xxx.xxx.xxx.xxx/ords/的请求都会自动转发到http://xxx.xxx.xxx.xxx:8080/or
ds/上
        # 即APEX请求都会由Tomcat接管

        location ^~ /ords/ {
          proxy_pass http://localhost:8080/ords/;
          proxy_redirect off;
          proxy_set_header Host $host;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-Proto  $scheme;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          client_max_body_size 20m;
        }

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }

# Settings for a TLS enabled server.
#
#    server {
#        listen       443 ssl http2 default_server;
#        listen       [::]:443 ssl http2 default_server;
#        server_name  _;
#        root         /usr/share/nginx/html;
#
#        ssl_certificate "/etc/pki/nginx/server.crt";
#        ssl_certificate_key "/etc/pki/nginx/private/server.key";
#        ssl_session_cache shared:SSL:1m;
#        ssl_session_timeout  10m;
#        ssl_ciphers PROFILE=SYSTEM;
#        ssl_prefer_server_ciphers on;
#
#        # Load configuration files for the default server block.
#        include /etc/nginx/default.d/*.conf;
#
#        location / {
#        }
#
#        error_page 404 /404.html;
#            location = /40x.html {
#        }
#
#        error_page 500 502 503 504 /50x.html;
#            location = /50x.html {
#        }
#    }

}

重启 Nginx 服务

systemctl restart nginx

最终测试 APEX

打开浏览器,再次访问 http://你的IP/ords,应该可以看到APEX的登录页面了。

img

大功告成!

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值