本文是鋼哥的Oracle APEX系列文章中的第五篇,完整 Oracle APEX 系列文章以下:javascript
在這一章節裏,鋼哥將帶領你們進一步優化咱們的開發環境,讓咱們的免費開發環境更「生產」,優化思路和方法也徹底能夠用在生產環境。css
刪除Tomcat自帶的沒必要要的文件是有必要的,最大限度保證系統安全。html
rm -Rf /u01/tomcat/webapps/examples
因爲咱們的 Oracle XE 數據庫跟 Tomcat 都是開機自啓動的,但在數據庫啓動完畢以前,部署在 Tomcat 服務器上的 ORDS 應用就會隨着 Tomcat 的啓動而進行初始化了,這時候初始化確定不正常(鏈接池報錯等),不得不重啓 Tomcat 服務才行。因此咱們要對 tomcat.service
進行必要的修改,讓tomcat
等待數據庫啓動完畢再啓動。java
/etc/systemd/system/tomcat.service
node
[Unit] Description=Apache Tomcat 8 Servlet Container After=syslog.target network.target oracle-xe.service Wants=oracle-xe.service
加載啓動腳本,下次重啓就會按照新的自啓動腳本啓動了。nginx
systemctl daemon-reload
切換到 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
調整/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
修改/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
打開瀏覽器,再次訪問 http://47.100.207.171/ords
,應該能夠看到APEX的登陸頁面了。
本章節主要帶着你們過了一遍APEX常見的服務器優化配置,這些用於我的開發已經足夠了。若是搭建生產環境,還須要配置SSL證書等操做,有興趣的同窗能夠看這篇文章:申請 Let's Encrypt 的免費通配符證書。
關於 Oracle APEX 的使用,你們能夠參考 Oracle Learning Library 上面的 Oracle APEX 5.1 系列教程。
後面我也會給你們帶來更多有關 Oracle APEX 使用方面的文章,以及一些我的工做中遇到的問題和經驗積累,請你們拭目以待。