該系統需要的開源軟件:redhat, redis, jdk1.8, tomcat8 ,oracleClient
背景:生產環境是在內網中,linux系統不能聯網, 不能使用 yum命令安裝
1.創建用戶
拿到redhat系統時,只有root用戶,首先需要創建用戶來搭建此係統
創建用戶組 zntg和用戶zntg,密碼爲123
命令如下:
創建用戶組: groupadd zntg
創建用戶並指定用戶組爲zntg: useradd zntg -g zntg
爲用戶zntg設置密碼: passwd zntg 然後根據提示輸入密碼即可
ps: 刪除用戶:userdel zntg
更改用戶zntg的用戶組爲testgroup:usermod -g testgroup zntg
更改zntg用戶的文件夾zntg所屬用戶組爲 testgroup: chgrp testgroup zntg -R
2.安裝jdk1.8
用戶創建好之後,需要安裝jdk。由於該項目依賴jdk1.8, 所以jdk必須是1.8版本,否則微服務無法啓動
1. 查看系統的jdk版本,命令:java -version
如果顯示的版本是1.8版本,那麼恭喜你,無需安裝jdk,直接使用即可,跳過此步驟
如果出現java: command not found,說明linux系統沒有安裝過jdk, 需要自己安裝jdk
安裝步驟:解壓安裝包+配置環境變量
在zntg用戶目錄下,建文件夾java: mkdir java
將jdk的安裝包上傳到java目錄下
解壓jdk: tar -xzvf openjdk-8u40-b25-linux-x64-10_feb_2015.tar.gz
可以看到目錄 /home/zntg/java/java-se-8u40-ri
配置環境變量:
在該用戶下有個隱藏文件.bash_profile, cd /home/zntg/ 然後 ll -a 可以查看隱藏文件
編輯.bash_profile, 配置jdk環境變量: vi .bash_profile
配置以下變量
JAVA_HOME=/home/zntg/java/java-se-8u40-ri
CLASSPATH==.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
PATH=$PATH:$JAVA_HOME/bin
export PATH JAVA_HOME CALSSPATH
配置好之後,保存,然後source .bash_profile 使環境變量立即生效,之後查看java -version, 顯示jdk1.8版本,即可完成。
注意:
當我們未安裝jdk1.8時,輸入java -version的時候,顯示的是 jdk1.7版本,說明linux系統已經安裝了1.7的jdk。
然後我們在新用戶zntg用戶下安裝jdk1.8並配置環境變量之後,輸入java -version 發現,zntg用戶下的jdk版本還是1.7,並沒有用當前用戶的環境變量。
解決: 系統會先查找/usr/bin路徑下的java文件,該文件是個鏈接文件,指向的真實文件並非你需要的jdk版本,
命令 ll /usr/bin/java ll /etc/alternatives/java 可查看該鏈接指向的jdk,指向的jdk版本不是1.8而是1.7,如確認不使用jdk1.7,
則最簡單的做法是把該鏈接文件刪除即可。
或者可以更改此鏈接文件使其指向jdk1.8。
切換root用戶,配置環境變量JAVA_HOME爲jdk1.8的路徑。
執行命令
update-alternatives --install /usr/bin/java java $JAVA_HOME/bin/java 300
update-alternatives --install /usr/bin/javac javac $JAVA_HOME/bin/javac 300
然後執行以下命令選擇對應的版本:
update-alternatives --config java
update-alternatives --config javac
執行完之後,輸入java -version jdk版本變成1.8
ps: 有時候在zntg用戶下出現java命令無效時,可以試下刷新環境變量source .bash_profile
3.安裝redis
微服務需要用到redis, 這裏不配置redis集羣(機器不夠),而且業務程序中redis掛了也不影響實時交易業務,所以可以配置單機版的redis。
下載安裝包:redis-4.0.11.tar.gz
解壓 得到redis-4.0.11目錄: tar -xzvf redis-4.0.11.tar.gz
進入redis-4.0.11目錄編譯:make
編譯完成後進入src目錄, cd src
執行安裝命令 make install PREFIX=/home/zntg/redis/redis-install
進入redis-4.0.11目錄,複製redis配置文件到安裝目錄:cp redis.conf /home/zntg/redis/redis-install/bin/
把redis安裝到redis-install目錄下,在bin目錄下出現下圖的文件,說明安裝成功
重要:修改配置文件 redis.conf:
配置redis爲後臺啓動(守護進程):vi redis.conf 將daemonize no 改成daemonize yes
取消本地綁定:註釋本地綁定 將bind 127.0.0.1 改成 #bind 127.0.0.1
允許外部訪問:關閉保護模式:將protected-mode yes改成 protected-mode no
設置密碼:設置密碼123 把# requirepass foobared 改成 requirepass 123
修改完配置文件之後,接下來就可以啓動redis了
啓動命令:./redis-server ./redis.conf
停止命令:進入客戶端 ./redis-cli ,執行 shutdown命令 或者找到redis的進程pid 執行 kill -9 pid 殺掉進程
測試redis是否可用:
登錄客戶端:./redis-cli
set a 123 ; get a 如下圖所示,說明redis服務正常
4. 修改hosts文件 關閉防火牆
生產環境部署微服務時,需要部署微服務集羣,會在多臺服務器間相互訪問。需綁定主機名和關閉防火牆
修改hosts文件:
切換root用戶,查看主機名:hostname , 查看hosts文件 cat /etc/hosts,發現沒綁定主機名
將主機名配置到hosts文件中 vi /etc/hosts
關閉防火牆:
服務器間需要通信,需要把防火牆關掉。
查看防火牆狀態:service iptables status
臨時立即關閉防火牆:service iptables stop
永久關閉防火牆 重啓後生效:chkconfig iptables off
5. 安裝oracle客戶端
由於此項目需要以exp形式備份oracle數據庫,所以需要安裝oracle客戶端
一般生產環境的oracle客戶端都是甲方 安裝好,需要我們來配置監聽和環境變量,
一般oracle客戶端安裝在oracle用戶下,用戶組爲oinstall, 查看oracle用戶下的環境變量 cat .bash_profile 可以
找到oracle的安裝路徑。
admin目錄的路徑爲:/u01/app/oracle/product/11.2.0/client_1/network/admin
客戶端的安裝路徑下配置監聽文件 tnsnames.ora:內容如下
ds_aix =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.0.116.151)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = epfds)
)
)
然後在zntg用戶下配置oracle的環境變量,把oracle用戶下.bash_profile的環境變量複製到zntg用戶下:
export PATH
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/client_1
export ORACLE_OWNER=oracle
export PATH=$PATH:$ORACLE_HOME/bin:$ORA_GRID_HOME/bin:/sbin:/usr/sbin:/bin:/usr/local/bin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/rdbms/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib:$ORACLE_HOME/network/jlib
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
export LANG=en_US
執行source .bash_profile使變量生效,然後登陸數據庫,執行 sqlplus pmasterdev/1@ds_aix
出現下圖,說明客戶端配置成功
6. 啓動tomcat
安裝好基礎環境之後,直接進入各個微服務程序 啓動後端微服務程序。
而此項目中BS櫃檯程序,需放在tomcat1.8中運行。
假設bs櫃檯程序爲 msale.war
將msale.war 放到webapps下,然後進行tomcat的bin目錄,執行./startup.sh 啓動tomcat即可解壓該war包,
然後重啓tomcat即可。
7. BS櫃檯報表 jasperreport問題,無法初始化JRStyledTextParser
啓動bs櫃檯之後,登陸櫃檯查看功能是否正常,發現報表點不開,加載報表的時候報500的錯誤, 查看tomcat的localhost.yymmdd.log的日誌,發現如下報錯:
java.lang.NoClassDefFoundError: Could not initialize class net.sf.jasperreports.engine.util.JRStyledTextParser
redhat官方說, net.sf.jasperReports.engine.util.JRStyledTextParser有一個靜態初始值設定項試圖加載字體。如果操作系統上沒有安裝相關的圖形用戶界面庫,它將無法初始化。
在啓動腳本加上 -Djava.awt.headless=true 即可解決問題
知道問題後,進入tomcat的bin目錄,修改啓動腳本 catalina.sh ,添加-Djava.awt.headless=true
在catalina.sh中類似以下代碼大約有七八處:
"$_RUNJAVA" $JAVA_OPTS $CATALINA_OPTS \
-Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" -classpath "$CLASSPATH" \
-Djava.security.manager \
-Djava.security.policy=="$CATALINA_BASE"/conf/catalina.policy \
-Dcatalina.base="$CATALINA_BASE" \
-Dcatalina.home="$CATALINA_HOME" \
-Djava.io.tmpdir="$CATALINA_TMPDIR" \
在尾部加上一句:
-Djava.awt.headless=true \
修改了大約七八處之後,重啓tomca, 報表正常顯示,至此,問題解決。