redhat系統下部署小型微服務系統搭建基礎環境的過程記錄

該系統需要的開源軟件: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, 報表正常顯示,至此,問題解決。

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章