Jboss eap7.1 配置部署
本文介紹了Linux系統下Jboss-eap-7.1伺服器 standalone 模式的配置部署入門。90%的內容來自jboss的官方配置文件,
只不過從初學者的角度對配置過程進行了梳理,介紹了部署應用時普遍會用到的配置項。參考本文,大多數應用可以在Jboss-eap-7.1上成功執行。
下文出現的命令、程式碼和檔案地址中,{JBOSS_HOME}指代Jboss-eap-7.1所處的根目錄。
安裝與啟動、停止
安裝:所謂“安裝”,就是把下載好的包解壓到某個地址即可。
啟動:進入{JBOSS_HOME}/bin目錄,執行 standalone.sh 指令碼,看到輸出started in XXXXms,就證明伺服器已經成功啟動。
停止:伺服器的程式通常都是後臺執行。停止時,在{JBOSS_HOME}/bin目錄下執行 ./jboss-cli.sh --connect,進入命令列管理頁面,輸入shutdown命令,即可停止伺服器。(也可以合併為一條語句:./jboss-cli.sh --connect command=:shutdown)
配置:修改{JBOSS_HOME}/bin下的 standalone.conf 檔案,可以改變Jboss啟動的配置。
在檔案中加入 JAVA_HOME="/path/jdk",可以指定使用的jdk,而不必依賴於系統預設的java環境變數。
在檔案中加入 LANG=Zh_CN.GB18030,可以設定語言環境為中文
修改JAVA_OPTS,可以設定JVM的啟動引數
基本概念
jboss-eap-7.1有兩種執行模式,standalone——單機模式 和 domain——叢集模式。本文介紹了單機模式的部署。
jboss啟動伺服器時,預設讀取的配置檔案是{JBOSS_HOME}/standalone/configuration/standalone.xml。也可以指定讀取其他配置檔案,命令是./standalone.sh --server-config=standalone-custom.xml
jboss-cli(command line interface),是jboss的命令列管理工具。執行{JBOSS_HOME}/bin/jboss-cli.sh即可進入。通過命令列實現部署解除安裝應用、配置系統設定和執行管理任務的功能。使用該工具修改系統配置時,最終也會作用到standalone.xml中。直接改xml的方式非常直觀,所以更受本人青睞,本文所有配置示例均是直接修改xml。
Management Console,管理控制檯。是jboss提供的web管理系統,地址在http://localhost:9990/console/App.html, 所有的操作均可通過jboss-cli實現,本文不再介紹該工具。
standalone.xml配置
地址配置
預設的配置,伺服器啟動後只能通過localhost訪問。通過網路卡IP地址訪問時,需修改配置檔案。找到下面的配置片段
<interfaces>
<interface name="management">
<inet-address value="${jboss.bind.address.management:127.0.0.1}"/>
</interface>
<interface name="public">
<inet-address value="${jboss.bind.address:127.0.0.1}"/>
</interface>
</interfaces>
將 public 標籤下的地址修改為網路卡ip地址,這樣就能通過IP地址訪問。也可以設定為0.0.0.0,機器上所有可用的ip地址均可以訪問。
不建議修改 management 標籤下的地址,個人認為遠端的管理存在一定風險,還是直接在機器上做比較好。
埠配置
修改監聽的埠,找到下面的配置片段:
<socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}">
<socket-binding name="management-http" interface="management" port="${jboss.management.http.port:9990}"/>
………… ………… …………
<socket-binding name="http" port="${jboss.http.port:8080}"/>
<socket-binding name="https" port="${jboss.https.port:8443}"/>
………… ………… …………
</socket-binding-group>
根據需要修改不同協議監聽的埠。管理控制檯的埠預設是9990,也可以在此處修改。
資料來源配置
資料來源配置如下面程式碼所示,標籤的含義非常明晰,不再針對標籤做解釋說明。
<subsystem xmlns="urn:jboss:domain:datasources:5.0">
<datasources>
………… ………… …………
<datasource jndi-name="java:jboss/datasources/MyDB" pool-name="MyDB" enabled="true" use-java-context="true" use-ccm="true">
<connection-url>jdbc:jtds:sybase://10.2.4.16:11100/testDB;charset=cp936</connection-url>
<driver>jtds124</driver>
<pool>
<min-pool-size>1</min-pool-size>
<max-pool-size>20</max-pool-size>
<prefill>true</prefill>
</pool>
<security>
<user-name>user</user-name>
<password>password</password>
</security>
<validation>
<valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.sybase.SybaseValidConnectionChecker"/>
<check-valid-connection-sql>SELECT 1</check-valid-connection-sql>
<validate-on-match>true</validate-on-match>
<exception-sorter class-name="org.jboss.resource.adapter.jdbc.vendor.SybaseExceptionSorter"/>
</validation>
<timeout>
<blocking-timeout-millis>30000</blocking-timeout-millis>
<idle-timeout-minutes>1</idle-timeout-minutes>
</timeout>
<statement>
<track-statements>true</track-statements>
</statement>
</datasource>
<drivers>
………… ………… …………
<driver name="jtds124" module="net.sourceforge.jtds.jdbc.124">
<xa-datasource-class>net.sourceforge.jtds.jdbcx.JtdsDataSource</xa-datasource-class>
</driver>
</drivers>
</datasources>
</subsystem>
配置好資料來源後,需要將資料庫驅動jar包放在 {JBOSS_HOME}/modules 下正確的位置,才能成功繫結資料來源。驅動的放置目錄要和driver標籤中module的值保持一致,以上面的配置為例,驅動jar包的路徑應該是
${JBOSS_HOME}/modules/modules/net/sourceforge/jtds/jdbc/124/main/
main不要體現在屬性中,124資料夾下必須要有main資料夾,jar包在main資料夾中。
main資料夾下還要有module.xml,配置示例如下:
<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.1" name="net.sourceforge.jtds.jdbc.124">
<resources>
<resource-root path="jtds-1.2.4.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.transaction.api"/>
<module name="org.jboss.as.connector"/>
</dependencies>
</module>
module.xml中module標籤的 name 屬性要和standalone.xml中driver標籤的 module 屬性保持一致。
符合JDBC標準的資料來源如此就配置完成。但本例中使用的是jtds,所以還要做額外的操作,否則無法正確繫結資料來源。在驅動jar包的META-INF資料夾中新建 services 資料夾,然後新建名為 java.sql.Driver 的檔案,在檔案第一行寫下Driver的路徑。本例中,java.sql.Driver檔案的內容如下:
net.sourceforge.jtds.jdbc.Driver
經過上述配置,在啟動伺服器時,看到輸出Started Driver service with driver-name = jtds124,證明資料來源配置成功。
Undertow容器配置
經過下面的配置操作,修改了接收http請求的設定、容器預設的字符集,移除了jboss預設的歡迎頁面,開啟了http訪問的日誌以及輸出http請求和響應的資訊。
找到如下配置片段,預設配置為:
<subsystem xmlns="urn:jboss:domain:undertow:4.0">
<buffer-cache name="default"/>
<server name="default-server">
<http-listener name="default" socket-binding="http" redirect-socket="https" enable-http2="true"/>
<https-listener name="https" socket-binding="https" security-realm="ApplicationRealm" enable-http2="true"/>
<host name="default-host" alias="localhost">
<location name="/" handler="welcome-content"/>
<filter-ref name="server-header"/>
<filter-ref name="x-powered-by-header"/>
<http-invoker security-realm="ApplicationRealm"/>
</host>
</server>
<servlet-container name="default">
………… ………… …………
</servlet-container>
<handlers>
<file name="welcome-content" path="${jboss.home.dir}/welcome-content"/>
</handlers>
<filters>
………… ………… …………
</filters>
</subsystem>
修改後的配置如下:
<subsystem xmlns="urn:jboss:domain:undertow:4.0">
<buffer-cache name="default"/>
<server name="default-server">
<http-listener name="default" socket-binding="http" redirect-socket="https" enable-http2="true" url-charset="GBK" decode-url="false"/>
<https-listener name="https" socket-binding="https" security-realm="ApplicationRealm" enable-http2="true"/>
<host name="default-host" alias="localhost">
<!-- <location name="/" handler="welcome-content"/> -->
<filter-ref name="server-header"/>
<filter-ref name="x-powered-by-header"/>
<http-invoker security-realm="ApplicationRealm"/>
<filter-ref name="request-dumper"/>
<access-log pattern="combined" directory="${jboss.home.dir}/standalone/log"/>
</host>
</server>
<servlet-container name="default" default-encoding="GBK" use-listener-encoding="true">
………… ………… …………
</servlet-container>
<!-- <handlers>
<file name="welcome-content" path="${jboss.home.dir}/welcome-content"/>
</handlers> -->
<filters>
………… ………… …………
<filter name="request-dumper" class-name="io.undertow.server.handlers.RequestDumpingHandler" module="io.undertow.core"/>
</filters>
</subsystem>
修改http請求設定:在http-listener標籤中,增加了url-charset和decode-url。其中url-charset預設使用的UTF-8,可以根據需要修改。decode-url指是否使用字符集解碼url和引數,預設為true。設為false則交由後續程式碼進行解碼處理。http-listener的詳細配置屬性點選這裡。
修改容器預設字符集:在servlet-container標籤中,default-encoding設定所有應用的字符集(預設為utf-8),use-listener-encoding指是否使用listener定義的編碼。servlet-container的詳細配置屬性點選這裡。
移除Jboss預設歡迎頁面:配置檔案中註釋的部分,就是jboss預設歡迎頁面的配置。直接註釋就是將其移除,也可以將預設地址對映到某個應用上。
開啟http訪問日誌:在host標籤下增加access-log這一標籤,即可將http請求的資訊記在日誌中,便於除錯。directory是日誌存放的目錄,預設檔名為access_log.log。pattern是要日誌中記錄的資訊,預定義了common和combined兩種模式,combined的資訊豐富一些。自定義的輸出模式詳見此處。
輸出http請求和響應的資訊:在filters標籤下增加名為request-dumper的filter,在host標籤下增加命名一致的filter-ref,就能在jboss日誌中輸出每一個http請求的request和response資訊,便於除錯。
注:對於上面的操作1,早期版本中,在extensions和management標籤之間增加下面的配置程式碼,可以實現同樣的效果。但自從wildfly 8 之後,jboss放棄tomcat容器轉而使用undertow,所以下面的配置不再起作用了。
<system-properties>
<property name="org.apache.catalina.connector.URI_ENCODING" value="GBK"/>
<property name="org.apache.catalina.connector.USE_BODY_ENCODING_FOR_QUERY_STRING" value="true"/>
</system-properties>
部署應用
下面將介紹三種部署模式,但官方推薦在生產環境中,使用第三種手動模式,前兩種可以應用於開發環境。
應用部署相關的預設配置如下:
<subsystem xmlns="urn:jboss:domain:deployment-scanner:2.0">
<deployment-scanner path="deployments" relative-to="jboss.server.base.dir" scan-interval="5000" runtime-failure-causes-rollback="${jboss.deployment.scanner.rollback.on.failure:false}"/>
</subsystem>
scan-interval是每隔多少毫秒掃描deployments資料夾下的變化。如果設定的值小於1,則只在啟動時掃描。
全自動模式
在預設配置下,將war包上傳至{JBOSS_HOME}/standalone/deployments,伺服器會在啟動時和每5000毫秒間隔,檢查deployments下的檔案變化,部署應用。
半自動模式
增加屬性 auto-deploy-zipped=“false”
上傳應用myApp.war至deployments資料夾後,在deployments資料夾下新建一個檔案,命名為myApp.war.dodeploy,伺服器檢測到這個檔案後,則會開始執行部署。更多配置詳情點選這裡。
手動模式
增加屬性scan-enabled=“false”
此模式是官方推薦的生產環境部署應用方式,無需將應用上傳至deployments資料夾下。首先保證myApp.war在伺服器上,假設其路徑為/usr/me/myApp.war。
啟動伺服器,並使用./jboss-cli.sh --connect命令進入命令列管理介面。執行命令deploy /usr/me/myApp.war部署應用。取消部署時,在命令列管理介面執行 undeploy myApp.war。
應用的資料會在{JBOSS_HOME}/standalone/data/content下,並且standalone.xml最下方會出現deployments標籤,顯示已經部署的應用。
題外話
既然是一個入門級的教程,就介紹下jboss一系列的產品。因為改名,導致jboss系列越來越亂,下面做一個簡單梳理。
Undertow: Jboss自主研發的Servlet容器。
Jboss AS(Application Server): Jboss社群版的早期版本,由於和Jboss eap名稱相近,在Jboss AS7之後就改名為Wildfly。內部封裝的容器是基於Tomcat的升級版。
WildFly: 版本號從WildFly 8.0開始,由Jboss AS改名而來。內部封裝的容器是Undertow。
Jboss EAP(Enterprise Application Platform):Jboss的企業版。會將社群版中驗證過的,成熟的技術引入該版本,支援週期長。6的版本以Jboss AS7為基礎;7的版本以Wildfly為基礎。
參考資料
[1. 非jdbc驅動配置services](https://developer.jboss.org/thread/249928)
轉自:https://www.jianshu.com/p/4baaf549436b
相關文章
- JBoss安全問題總結
- JBOSS未授權訪問
- Nginx部署配置Nginx
- ansible部署配置
- hadoop 部署配置Hadoop
- Jenkins自動部署配置Jenkins
- Docker部署Apollo配置中心Docker
- Tomcat—部署配置及優化(安裝部署;虛擬主機配置;優化)Tomcat優化
- kafka部署配置與啟停Kafka
- git 部署與基本配置使用Git
- Keepalived部署與配置詳解
- JBoss5.x6.x 反序列化漏洞
- waf 應用防火牆部署配置防火牆
- Mysql MHA部署-04MHA配置MySql
- 01 . MongoDB簡介及部署配置MongoDB
- Tomcat部署解析及配置優化Tomcat優化
- Fedora 17 結實的奇蹟:最新的OpenStack和JBoss
- netty系列之:使用Jboss Marshalling來序列化java物件NettyJava物件
- Jboss反序列化漏洞復現(CVE-2017-12149)
- CVE-2017-7504 JBOSS反序列化漏洞復現
- RabbitMQ 安裝部署與配置總結MQ
- helm部署的服務如何修改配置
- Nginx + Gunicorn 伺服器配置部署 DjangoNginx伺服器Django
- Redis 偽分散式安裝部署配置Redis分散式
- 園區網部署配置綜合案例
- SpringBoot專案在linux系統中的部署(直接部署、外接tomcat中部署)以及配置httpsSpring BootLinuxTomcatHTTP
- 輕鬆部署 Laravel 應用 | 《09. 手動部署 - 配置 Nginx 站點》LaravelNginx
- 一次老版本jboss反序列化漏洞的利用分析
- Kubuesphere部署Ruoyi(三):持久化儲存配置持久化
- 10分鐘搞定Mysql主從部署配置MySql
- zerorunner 在 Centos 的環境配置和部署CentOS
- weblogic軟體安裝與配置部署大全Web
- Kafka高可用叢集部署與配置指南Kafka
- Oracle 19C+13.4EMCC部署和配置Oracle
- 01 . SaltStack部署配置及簡單應用
- vuepress專案 配置/使用/部署 markdown語法Vue
- MySQL 主從複製安裝部署配置MySql
- 做一個有產品思維的研發:部署(Tomcat配置,Nginx配置,JDK配置)TomcatNginxJDK