Oracle APEX 系列文章5:在阿里雲上打造屬於你本身的APEX完整開發環境 (進一步優化)

本文是鋼哥的Oracle APEX系列文章中的第五篇,完整 Oracle APEX 系列文章以下:javascript

引言

在這一章節裏,鋼哥將帶領你們進一步優化咱們的開發環境,讓咱們的免費開發環境更「生產」,優化思路和方法也徹底能夠用在生產環境。css

優化 Tomcat

刪除Tomcat自帶的沒必要要的文件是有必要的,最大限度保證系統安全。html

rm -Rf /u01/tomcat/webapps/examples

因爲咱們的 Oracle XE 數據庫跟 Tomcat 都是開機自啓動的,但在數據庫啓動完畢以前,部署在 Tomcat 服務器上的 ORDS 應用就會隨着 Tomcat 的啓動而進行初始化了,這時候初始化確定不正常(鏈接池報錯等),不得不重啓 Tomcat 服務才行。因此咱們要對 tomcat.service進行必要的修改,讓tomcat等待數據庫啓動完畢再啓動。java

/etc/systemd/system/tomcat.servicenode

[Unit]
Description=Apache Tomcat 8 Servlet Container
After=syslog.target network.target oracle-xe.service
Wants=oracle-xe.service

加載啓動腳本,下次重啓就會按照新的自啓動腳本啓動了。nginx

systemctl daemon-reload

優化 Oracle XE 數據庫

切換到 oracle 帳戶,用 sqlplus 登陸數據庫,進行必要的優化。web

su - oracle

sqlplus / as sysdba
-- 禁用匿名數據庫帳號
alter user anonymous account lock;
    
-- 刪除自帶的數據庫schema
drop user hr cascade;

-- 修改默認的密碼規則(默認180天要從新修改全部密碼的)
alter profile default limit password_life_time unlimited;

-- 優化數據庫核心參數
alter system set sessions=250 scope=spfile;
alter system set processes=200 scope=spfile;
alter system set memory_target=1G scope=spfile;
alter system set memory_max_target=1G scope=spfile;
alter system set job_queue_processes=100 scope=spfile;

-- 爲咱們後面新建的APEX workspace建立單獨的表空間
create tablespace apex datafile '/u01/app/oracle/oradata/XE/apex.dbf' size 256M reuse autoextend on next 100M maxsize unlimited;
    
-- 爲APEX workspaces建立單獨的數據庫schema
create user apex identified by "YourPasswordHere" default tablespace apex temporary tablespace temp;
alter user apex quota unlimited on apex;
grant unlimited tablespace to apex;
grant create session to apex;
grant create cluster to apex;
grant create dimension to apex;
grant create indextype to apex;
grant create job to apex;
grant create materialized view to apex;
grant create operator to apex;
grant create procedure to apex;
grant create sequence to apex;
grant create snapshot to apex;
grant create synonym to apex;
grant create table to apex;
grant create trigger to apex;
grant create type to apex;
grant create view to apex;

-- 重啓數據庫
shutdown immediate
startup

-- 退出
exit

優化 ORDS 配置

調整/u01/ords/config/ords/defaults.xml中的參數值,具體以下:sql

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

重啓 tomcat 服務以便使 ORDS 配置生效數據庫

systemctl restart tomcat

優化 Nginx

修改/etc/nginx/nginx.conf,如下是個人nginx.conf文件內容:瀏覽器

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

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

events {
    worker_connections 1024;
    #==告訴nginx收到一個新連接通知後接受盡量多的連接
    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;

    server_tokens       off;
    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;
    charset UTF-8;


    proxy_connect_timeout 600;
    proxy_send_timeout 600;
    proxy_read_timeout 600;
    send_timeout 600;

    #==設置nginx採用gzip壓縮的形式發送數據,減小發送數據量,但會增長請求處理時間及CPU處理時間,須要權衡
    gzip  on;
    #==加vary給代理服務器使用,針對有的瀏覽器支持壓縮,有個不支持,根據客戶端的HTTP頭來判斷是否須要壓縮
    gzip_vary on;
    gzip_http_version 1.0;
    gzip_types text/plain application/javascript application/x-javascript text/css;
    gzip_min_length  1024;
    gzip_comp_level 3;

    # 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/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

打開瀏覽器,再次訪問 http://47.100.207.171/ords,應該能夠看到APEX的登陸頁面了。

總結

本章節主要帶着你們過了一遍APEX常見的服務器優化配置,這些用於我的開發已經足夠了。若是搭建生產環境,還須要配置SSL證書等操做,有興趣的同窗能夠看這篇文章:申請 Let's Encrypt 的免費通配符證書

關於 Oracle APEX 的使用,你們能夠參考 Oracle Learning Library 上面的 Oracle APEX 5.1 系列教程

後面我也會給你們帶來更多有關 Oracle APEX 使用方面的文章,以及一些我的工做中遇到的問題和經驗積累,請你們拭目以待。


相關文章
相關標籤/搜索