1. 程式人生 > 實用技巧 >Oracle APEX 系列文章4:在阿里雲上打造屬於你自己的APEX完整開發環境 (安裝XE, ORDS, APEX)...

Oracle APEX 系列文章4:在阿里雲上打造屬於你自己的APEX完整開發環境 (安裝XE, ORDS, APEX)...

2019獨角獸企業重金招聘Python工程師標準>>> hot3.png

Oracle APEX 系列文章4:在阿里雲上打造屬於你自己的APEX完整開發環境 (安裝XE, ORDS, APEX)

本文是鋼哥的Oracle APEX系列文章中的第四篇,完整 Oracle APEX 系列文章如下:

引言

在這一章節裡,我們將一起動手安裝Oracle資料庫(XE)、APEX以及ORDS,並完成相關的設定。

友情提示:由於之前沒有繫結阿里雲的彈性公網IP,導致阿里雲ECS在關機重啟後IP地址會變化,這裡只要簡單把公網IP轉換成彈性公網IP即可。彈性公網IP的好處是IP地址不會變化,需要的時候拿過來繫結到ECS等裝置上即可,非常靈活。 更多關於阿里雲彈性公網IP的介紹請移步

這裡

現在我們的ECS伺服器已經轉成彈性公網IP了,以後只要不解綁,這個公網IP地址就不會自己變化了。

言歸正傳,接下來我們開始今天的教程。

安裝前準備工作

下載軟體包

我們需要到Oracle官網下載如下軟體,如果你還沒有註冊過Oracle賬號,請先完成註冊(免費的),登入後才可以下載。

截止到本文寫作時間為止,APEX最新的版本是5.1.4.00.08,請下載All Language多語言版本,ORDS最新版本是18.1.1.95.1251。你下載的版本可能比鋼哥的高,不過安裝步驟是一樣的。

建立安裝包目錄

現在軟體包已經下載到本地了,在上傳之前ssh連線到ECS,建立一下上傳目錄/u01/media。

mkdir /u01 mkdir /u01/media chmod -Rf 777 /u01 複製程式碼

增加swap空間

# 檢查當前swap檔案 swapon -s # 檢查當前磁碟空間 df # 建立一個2GB的swap檔案 dd if=/dev/zero of=/swapfile bs=1024 count=2048k mkswap /swapfile swapon /swapfile # 再次檢查swap檔案 swapon -s # 將新的swap檔案加入到啟用項 echo "/swapfile swap swap defaults 0 0" >> /etc/fstab # 賦予適當許可權 chown root:root /swapfile chmod 0600 /swapfile 複製程式碼

上傳安裝包

接下來需要利用ftp工具上傳到你的ECS伺服器上。這裡鋼哥使用的是 FileZilla 來上傳,連線資訊如下圖所示:

上傳後如圖所示:

安裝 Oracle Database XE 資料庫

將安裝包解壓縮

cd /u01/media unzip oracle-xe-11.2.0-1.0.x86_64.rpm.zip 複製程式碼

利用yum本地安裝

yum localinstall Disk1/oracle-xe-11.2.0-1.0.x86_64.rpm -y 複製程式碼

提示已成功安裝完畢。

完成資料庫初始化

保持在root使用者下,繼續執行以下命令:

/etc/init.d/oracle-xe configure 複製程式碼

按照提示完成初始化設定。

建立dba使用者組

cd 複製程式碼

建立oracle使用者,並分配到dba使用者組

useradd -u 501 -g dba -G dba oracle 複製程式碼

設定oracle使用者的密碼

passwd oracle 複製程式碼

切換到oracle使用者

按照提示設定好oracle使用者的密碼後,可以用su - oracle命令完成使用者切換。

友情提示:su - oracle命令中間的 - 符號意思是切換同時做初始化,因為oracle的很多軟體需要設定環境變數的,所以每次切換使用者請保證帶上-符號。

配置環境變數

我們接下來要為oracle賬號設定環境變數,以便保證每次切換到oracle使用者時,都可以直接使用sqlplus等命令。

將執行oracle_env.sh的命令寫到bash_profile檔案中,這樣只要每次使用su - oracle命令切換後,會自動執行~/.bash_profile檔案裡的指令碼,完成環境變數的初始化。

echo '. /u01/app/oracle/product/11.2.0/xe/bin/oracle_env.sh' >> ~/.bash_profile 複製程式碼

測試一下環境變數是否已設定成功。

source ~/.bash_profile 複製程式碼

執行後就可以使用sqlplus等命令了。

sqlplus /nolog 複製程式碼

至此,Oracle Database XE 安裝配置完畢。

測試資料庫監聽

資料庫雖然成功安裝好了,但還是要驗證一下是否可以正產連線比較好(而不是用sqlplus /nolog的方式,因為不走監聽)。

直接用sqlplus連線資料庫,使用者名稱輸入system,密碼輸入安裝時的密碼,看是否能夠正常連上資料庫。

sqlplus 複製程式碼

如果可以,證明資料庫服務和監聽都沒問題了。

安裝配置 ORDS

解壓縮安裝包

mkdir -p /u01/ords unzip /u01/media/ords.18.1.1.95.1251.zip -d /u01/ords/ 複製程式碼

執行安裝指令碼

cd /u01/ords java -jar ords.war install advanced 複製程式碼

按照提示完成ORDS的安裝配置。

鋼哥友情提示:這裡的引數要認真填寫,特別是資料庫名稱name of the database server,一定要跟資料庫監聽器裡 /u01/app/oracle/product/11.2.0/xe/network/admin/listener.ora 保持一致,否則後面會因為ORDS連線不上資料庫,導致訪問報錯。 另外這裡要設定好幾個資料庫賬號的密碼,建議第一次安裝時統一設定成一個,並做好記錄,避免後面錯亂。

為tomcat賬號授權(需切換到root使用者)

確保tomcat賬號(安裝Tomcat伺服器時自動建立的)可以訪問/u01/ords/config目錄。

su - root chown -R tomcat:tomcat /u01/ords/config 複製程式碼

安裝配置 APEX

解除安裝舊版本的APEX

由於Oracle Datebase XE自帶了一箇舊版本的APEX,在正式安裝最新版APEX之前,我們需要將舊版本的解除安裝掉。

su - oracle cd /u01/app/oracle/product/11.2.0/xe/apex sqlplus /nolog -- 用資料庫超級管理員連線資料庫 SQL> connect sys as sysdba -- 解除安裝原有的舊版本APEX SQL> @apxremov.sql -- 退出當前資料庫會話 SQL> exit 複製程式碼

安裝最新版本APEX

確保仍然在oracle賬號下,執行以下命令安裝最新版本的APEX。

cd /u01/media mkdir -p /u01/apex unzip apex_5.1.4.zip -d /u01/ chown -R oracle:dba /u01/apex 複製程式碼

現在新的APEX安裝檔案已經放在/u01/apex/目錄下了,登入資料庫執行安裝。

cd /u01/apex -- 以超級管理員身份登入資料庫 sqlplus / as sysdba -- 安裝APEX,指定預設表空間和靜態檔案別名 SQL> @apexins.sql SYSAUX SYSAUX TEMP /i/ -- 安裝完畢後資料庫會話會自動斷開,再次以超級管理員身份登入資料庫 sqlplus / as sysdba -- 建立APEX例項管理員(Instance Administration)及密碼,這個密碼必須包含特殊符號,否則設定不上。這個密碼很重要,是管理APEX平臺的賬號密碼,以後建立新的應用schema、解鎖賬號等都靠它,第一次登入APEX時也要用到。 SQL> @apxchpwd.sql -- 配置RESTful Services服務 SQL> @apex_rest_config.sql -- 禁用資料庫內建的PL/SQL閘道器 SQL> exec dbms_xdb.sethttpport(0); SQL> exec dbms_xdb.setftpport(0); -- 解鎖ORDS使用者賬號 SQL> alter user apex_public_user account unlock; -- 斷開資料庫會話 SQL> exit 複製程式碼

複製APEX靜態檔案到Tomcat目錄

鋼哥提示:網上很多教程都是直接把APEX靜態檔案內容放到Web伺服器(httpd、Nginx)的目錄下,我個人推薦放到Tomcat目錄下(/u01/tomcat/webapps/i/),這樣做的好處是可以先測試APEX在Tomcat上是否能跑起來,如果可以,再將上邊的目錄對映到Nginx中。

## 切換到root使用者 su - root ## 在Tomcat的webapps目錄下新建一個名為`i`的資料夾 mkdir -p /u01/tomcat/webapps/i/ ## 將APEX靜態檔案複製過去 cp -a /u01/apex/images/* /u01/tomcat/webapps/i/ ## 重啟Tomcat服務 systemctl restart tomcat 複製程式碼

將 ords.war 部署到 Tomcat

現在我們可以將剛才生成的ords.war檔案部署到Tomcat上了。

cp -a /u01/ords/ords.war /u01/tomcat/webapps/ ## 重啟Tomcat服務 systemctl restart tomcat 複製程式碼

測試 APEX + ORDS + Tomcat 的組合是否正常工作

開啟瀏覽器,訪問http://47.100.207.171:8080/ords,如果一切正常,應該可以訪問到APEX的頁面了。

  • workspace:INTERNAL
  • username:administrator
  • password:你剛才設定的instance administration的密碼

成功登入後介面如下圖所示:

配置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://47.100.207.171/ords,如果一切順利,應該就直接開啟APEX的頁面了。

總結

至此,Oracle XE資料庫 + ORDS + Tomcat + Nginx 的完整開發環境就搭建好了。在接下來的文章裡,鋼哥將帶你做進一步的優化,敬請期待。

漢化

Select username,created from dba_users where username like'APEX%';

查出APEX_0008

Alter session set current_schema=APEX_030200;

@F:/app/apex/builder/zh-c/load_zh-cn.sql

qlplus / as sysdba 臉上之後。

alter database mount ;

alter database open;

select 'grant select on ' || sequence_name || ' to itreport;' from dba_sequences where sequence_owner='USER_NAME';

轉載於:https://my.oschina.net/youfen/blog/3031208