1、前置准備工作
部署Apollo的目標服務器要求:
(1)Linux 發行版本建議CentOS7 (由於Apollo服務內置3個JVM進程 所以系統可用內存建議不低於2G)
(2)安裝Oracle 版本10g+(下面教程為11g,為Apollo部署Oracle服務,也可以借用已經部署好的Oracle服務)
(3)安裝JDK 版本1.8+
(4)安裝unzip解壓工具 yum install zip unzip
(5)服務器IP情況假設如下:
Oracle部署所在服務器IP為 Oracle_IP(下文均通過這個來指代),實例名稱為xe,兩組用戶apolloconfig/apollo和apolloportal/apollo(下文會說明用戶創建過程)
Apollo部署所在服務器IP為 Apollo_IP(下文均通過這個來指代)
特別注意:由於業務系統需要訪問Apollo獲取配置,如果Apollo_IP和業務系統不再一個局域網,那么Apollo_IP必須是外網IP,同理,由於Apollo需要訪問Oracle,如果Oracle_IP和Apollo_IP不屬於同一個局域網,Oracle_IP也必須是外網IP
2、從FTP服務器下載Apollo初始安裝文件apollo-oracle-simple.zip
3、本地解壓初始安裝文件,修改Apollo相關連接配置信息
解壓后得到的文件目錄為:
apollo-config\
apollo-admin\
apollo-portal\
sql\
startall.sh
stopall.sh
(1)修改apollo-config\config下的application-github.properties和apollo-config\scripts下的startup.sh
替換application-github.properties中的IP為Oracle_IP、SID為xe、並設置訪問用戶名和密碼為apolloconfig/apollo(不要設置成其他的了,后面會介紹Oracle對該用戶的創建和授權,注意配置的值前后不要有空格)
spring.datasource.url=jdbc:oracle:thin:@Oracle_IP:1521:SID
spring.datasource.username=apolloconfig
spring.datasource.password=apollo
替換startup.sh中的IP為Apollo_IP,並將前面的注釋符號#去除
export JAVA_OPTS="$JAVA_OPTS -Deureka.instance.ip-address=Apollo_IP"
(2)修改apollo-admin\config下的application-github.properties 配置同上(1)對該文件的操作
spring.datasource.url=jdbc:oracle:thin:@Oracle_IP:1521:SID
spring.datasource.username=apolloconfig
spring.datasource.password=apollo
(3)修改apollo-portal\config下的application-github.properties和apollo-env.properties
替換application-github.properties中的IP為Oracle_IP、SID為xe,並設置訪問用戶名和密碼為apolloportal/apollo(不要設置成其他的了,后面會介紹Oracle對該用戶的創建和授權)
spring.datasource.url=jdbc:oracle:thin:@Oracle_IP:1521:SID
spring.datasource.username=apolloportal
spring.datasource.password=apollo
替換apollo-env.properties中的IP為Apollo_IP:
#local.meta=http://localhost:8080
#dev.meta=
#fat.meta=
#uat.meta=
#lpt.meta=${lpt_meta}
pro.meta=http://Apollo_IP:8847
4、連接Oracle數據庫(使用Navicat或者Oracle命令行),執行sql下的2個數據庫腳本導入Apollo初始數據(sql腳本獨立下載地址ftp://mdm.sunwayworld.com:6821/mdm/soft/apollo/apollo-oracle-sql.zip)
和MySQL不同,Oracle下不同的用戶對應不同的表空間(即數據庫),因為Apollo需要用到2個數據庫apolloconfigdb 和 apolloportaldb,所以事先需要在Oracle中創建2個對應的表空間和相對應的2個用戶並分別賦予相應的權限,具體的操作命令語句可參考:
(1)若使用Oracle命令行(sqlplus)(前提是直接在Oracle服務器所在機器操作,並且sql腳本上傳到該機器),SSH登錄Oracle所在機器,依次執行如下語句:
### 以system用戶登錄Oracle
sqlplus system/oracle
#查詢數據庫字符集(記下下面要用到 假設得到的字符集為AMERICAN_AMERICA.AL32UTF8 )
select userenv('language') from dual;
#退出回到終端
quit;
#設置環境變量(這么做的目的是保證下面將要執行的sql腳本導入不出現中文亂碼情況)
export NLS_LANG="AMERICAN_AMERICA.AL32UTF8"
###重新登錄Oracle
sqlplus system/oracle
### 針對 apolloconfigdb 創建表空間、用戶、授權 (ps:datafile后面指定的表空間目錄可以自定義)
create tablespace apolloconfigdb datafile '/u01/app/oracle/oradata/apolloconfigdb.dbf' size 100M;
#創建用戶名為apolloconfig密碼為apollo的用戶(不建議其他名稱和密碼 因為sql腳本中存在引用設置)並設置表空間apolloconfigdb
create user apolloconfig identified by apollo default tablespace apolloconfigdb;
grant create session,create table,create view,create sequence,unlimited tablespace to apolloconfig;
### 針對 apolloportaldb 創建表空間、用戶、授權
create tablespace apolloportaldb datafile '/u01/app/oracle/oradata/apolloportaldb.dbf' size 100M;
#創建用戶名為apolloportal密碼為apollo的用戶(同上理 不建議為其他名稱和密碼)並設置表空間apolloportaldb
create user apolloportal identified by apollo default tablespace apolloportaldb;
grant create session,create table,create view,create sequence,unlimited tablespace to apolloportal;
### 導入sql腳本
#切換到apolloconfig用戶(一定要切換用戶)
conn apolloconfig/apollo
#關掉&輸入(因為腳本中存在&特殊符號 為避免導入報錯)
set define off
#導入apolloconfigdb數據庫(@后面是apolloconfigdb.sql的全路徑)
@/u01/app/oracle/oradata/apolloconfigdb.sql
#切換到apolloportal用戶(一定要切換用戶)
conn apolloportal/apollo
#關掉&輸入(因為腳本中存在&特殊符號 為避免導入報錯)
set define off
#導入apolloportaldb數據庫
@/u01/app/oracle/oradata/apolloportaldb.sql
5、使用SFTP工具將修改並重新壓縮后的apollo-oracle-simple.zip上傳到目標Linux服務器指定目錄如/home/apollo下,然后在該目錄下依次運行如下命令:
(1)unzip apollo-oracle-simple.zip
(2)chmod +x startall.sh
(3)./startall.sh
等待並觀察日志輸出(大概5分鍾),若為如下則啟動成功:
6、啟動成功瀏覽器中http://Apollo_IP:8070訪問Apollo配置中心 默認admin/admin登錄(該賬戶下已經包含所有項目運行需要的相關配置 登錄后進行相應的配置修改即可滿足項目運行需要)
oracle版本的Apollo配置管理平台目前還存在如下BUG:
不支持空值配置:即不支持 key= 這種只有key沒有value值配置
不支持注釋添加:即不支持 #這里是配置的注釋說明 這樣的配置
7、執行 ./stopall.sh 可以關閉Apollo服務