爲了管理上的方便和要求,由某一用戶(組)管理weblogic及其衍生的應用。本文以weblogic用戶爲例,以後的安裝及配置管理都在weblogic用戶下進行。 java
強烈建議使用oracle jrockit最新版本,可從oracle官網下載。安裝過程參見相關的安裝手冊。 linux
安裝過程參見相關的安裝手冊。 web
因爲weblogic域至關於一個獨立的應用服務器(使用獨立的JAVA進程),建議應用系統的各子系統獨立部署於不一樣的域,使其下降耦合,減小相互影響程度。已廣發東莞社保金融卡系統爲例,該系統包括管理系統、交換系統和社保FTP服務三個子系統,可分別建立三個weblogic域,分別部署子系統,在某個子系統出現異常時,不會形成其它子系統的停機,每一個域服務的關閉和啓動都互不影響,異常發生時,保證業務不會徹底中斷(實際經驗是主要是管理系統發生異常)。 shell
假設weblogic安裝目錄是/home/weblogic/Oracle/Middleware11g。 安全
一、在<weblogic安裝目錄>/wlserver_10.3/common/bin下,執行./config.sh 服務器
二、選擇「建立新的weblogic域」,下一步 oracle
三、選擇「生成一個自動配置…」,下一步 app
四、修改域名,域名最好使用與應用相近有明顯意義的名稱,如mis(管理系統)、exchgsvr(交換系統)、siftp(社保ftp服務)等,以下爲管理系統域: dom
五、輸入域名後,下一步 工具
六、輸入管理員名稱和口令,下一步
七、選擇「生產模式」(啓動時可免除輸入用戶名和口令,本文有介紹),根據實際選擇JDK,下一步
八、此處不做任何選擇,下一步
九、此處不做任何修改,點擊建立
十、完成,該域默認端口號爲7001。
建立域後,必須進行一次首次啓動完成該域服務器的相關配置,此時須要輸入用戶名和密碼。
在<weblogic安裝目錄>/user_projects/domains/mis下(mis是上述建立的域名),執行./startWeblogic.sh,以下:
輸入管理員名稱和密碼後,繼續啓動完成。mis目錄下將自動建立servers目錄,未來應用的部署和運行將在該目錄下。
打開<weblogic安裝目錄>/user_projects/domains/mis/config/config.xml,在server節點處增長listen-port內容,以下紅字部分
<server> <name>AdminServer</name> <listen-port>your port</listen-port> <listen-address/> </server>
**注意:listen-port節點必須寫在listen-address以前。
重啓域服務器生效。
偵聽端口號也可在控制檯修改。
Weblogic安裝時默認設置JDK堆內存最大爲512M,可根據服務器物理內存適當調整,推薦值剩餘內存的50%,最大值3G,Xms和Xmx設成同樣。
打開<weblogic安裝目錄>/user_projects/domains/mis/bin/setDomainEnv.sh,
修改JDK堆內存,如:
if [ "${JAVA_VENDOR}" = "Sun" ] ; then WLS_MEM_ARGS_64BIT="-Xms256m -Xmx512m" /*此處改成實際值*/ export WLS_MEM_ARGS_64BIT WLS_MEM_ARGS_32BIT="-Xms256m -Xmx512m" /*此處改成實際值*/ export WLS_MEM_ARGS_32BIT else WLS_MEM_ARGS_64BIT="-Xms512m -Xmx512m" /*此處改成實際值*/ export WLS_MEM_ARGS_64BIT WLS_MEM_ARGS_32BIT="-Xms512m -Xmx512m" /*此處改成實際值*/ export WLS_MEM_ARGS_32BIT fi
域服務器重啓後生效。
生產模式下的域服務器啓動時須要輸入用戶名和密碼,很不方便,可經過如下方法免除該麻煩。
在/home/weblogic/Oracle/Middleware11g/user_projects/domains/mis/servers/AdminServer下,建立目錄security,在security下,建立文件boot.properties,記錄域管理員用戶名和密碼,內容以下:
username=weblogic
password=weblogic123
域服務器啓動時將自動從該文件中獲取用戶和密碼,免除手工輸入,在首次使用時,weblogic將會加密處理,之後該文件中的usename和password值都是密文。
Weblogic建立域後在其域目錄的bin下自動生成關閉腳本(stopWeblogic.sh),可是該關閉腳本基本上不能關閉域服務,所以須要手工經過kill方式殺死java進程,可是有多個域服務器同時在線的話,很難分清哪一個java進程是哪一個域用的,能夠經過查找指定偵聽端口號的進程知道該域所使用的java進程。如下文件shutdown.sh能夠實現完整關閉指定端口的weblogic的功能。shutdown.sh內容以下:
port=$1 var=$(netstat -anp|grep 127.0.0.1:$port |awk '{print $7}') echo $var if [ "${var}" != "" ] ; then ##get spid java_pid=${var%/*} echo $java_pid echo "SHUTDOWN WEBLOGIC SERVER AT PORT $port ." kill -9 $java_pid sleep 2 else echo "WEBLOGIC SERVER AT PORT $port IS NOT EXISTS." fi echo "----Done----"
用weblogic用戶把shutdown.sh上傳到服務器,如/home/weblogic下;
賦予執行權限:chmod 755 shutdown.sh
使用方法,如關閉7001端口的weblogic,執行./shutdown.sh 7001。
參見《Weblogic遷移手冊》的其它配置修改,如hibernate包衝突問題。
一、setsid ./startWeblogic.sh &
二、 (./startWeblogic.sh &)
三、nohup ./startWebLogic.sh >AdminServer.log 2>&1 & (後臺啓動,並把控制檯信息輸出到指定指定文件AdminServer.log)
一、登陸控制檯:登陸地址:http://<ip>:port/console,以下圖:
二、輸入管理員用戶名和密碼,進入控制檯。
一、在控制檯左邊的「域結構」列表中點擊「安全領域」,右邊以下圖:
二、點擊「myrealm」,出現下圖:
三、點擊「用戶和組」選項卡,出現下圖:
四、點擊用戶名稱爲「weblogic」(該用戶是在建立域是輸入的管理員用戶,本文示例是weblogic,具體名稱根據實際而定),見下圖:
五、點擊「口令」選項卡,見下圖:
六、輸入兩次新口令(口令規則至少包含字母和數字且長度很多於8,不然檢驗通不過),點擊保存,提示設置更新成功。以下圖:
七、若是已修改啓動時免輸入用戶及密碼,則還需修改boot.properties中password改成新密碼明文,並重啓該域服務,使其加密爲密文。
首先登陸相應的域控制檯。建議多個應用程序分開部署到不一樣的域。
一、在控制檯左邊的「域結構」列表中點擊「部署」,右邊以下圖:
二、在控制檯左邊的「鎖定並編輯」按鈕,右邊窗口的「安裝」按鈕將顯示可見。
三、點擊右邊窗口的「安裝」按鈕,右邊窗口出現下圖:
四、點擊「上載文件」,出現下圖:
五、點擊部署檔案的「瀏覽…」按鈕,選擇要發佈的應用程序war包,出現下圖:
六、點擊上部的「下一步」按鈕,提示上載文件成功,見下圖:
七、繼續點擊上部的「下一步」按鈕,出現下圖:
八、選擇「將此部署安裝爲應用程序」(默認),點擊上部的「下一步」,出現下圖:
九、根據須要可修更名稱,其它選項保持默認,點擊「完成」,顯示成功安裝部署,見下圖:
十、點擊左邊窗口的「激活更改」,此時安裝成功,還須要啓動服務。見下圖:
十一、在右邊窗口的部署列表中,勾選要啓動的項目(如dgsifi),出現下圖:
十二、點擊「啓動」,選擇「爲全部請求提供服務」,見下圖:
1三、點擊「是」按鈕,進行應用程序啓動處理,成功以下圖所示,失敗則在消息欄中顯示錯誤信息。應用程序訪問鏈接如:http://<ip>:<port>/dgsifi
一、在控制檯左邊的「域結構」列表中點擊「部署」後,右邊窗口顯示已部署的應用程序列表,勾選要刪除的應用程序,點擊「中止」按鈕,選擇「當即強制中止」,強行中止應用程序運行狀態,見下圖:。
二、點擊「是」,出現下圖:
三、點擊左邊窗口的「鎖定並編輯」按鈕,再勾選應用程序後,出現下圖:
四、點擊部署列表表頭或表腳的「刪除」按鈕,出現下圖:
五、點擊「是」,進行刪除處理後,出現下圖:
六、點擊左邊窗口的「激活更改」按鈕,完成刪除操做。
在實際工做中,出於管理和維護上的方便,要求各個域的啓動和關閉腳本集中存放,應用程序的日誌、臨時文件等也要集中存放,下面以XX金融項目爲例,說明集中管理的具體實現,其它項目可參考此方法進行管理。
在用戶weblogic下,已安裝weblogic server,並已建立3個域,域的路徑爲/home/weblogic/Oracle/Middleware11g/user_projects/domains/sifimis(或exchgsvr或siftp),各域相關信息分別以下:
序號 |
域名 |
端口號 |
用途 |
部署的應用程包名 |
1 |
sifimis |
8080 |
管理系統 |
XXX1.war |
2 |
exchgsvr |
8081 |
交換系統 |
XXX2.war |
3 |
siftp |
8082 |
社保FTP服務 |
XXX3.war |
在weblogic下,建立目錄user_app,其下再建立相應目錄,目錄結構及用途以下表:
主目錄:/home/weblogic/user_app/
序號 |
目錄 |
用途 |
1 |
bin |
啓動域和關閉域腳本 |
2 |
app_paths/decryptFile |
存放XXX文件 |
3 |
app_paths/ downloadFile |
存放XXX文件 |
4 |
app_paths/logs |
存放日誌文件,包括與應用系統相關的全部日誌,如服務器日誌、業務日誌等 |
5 |
app_paths/fat |
存放主機接口格式文件 |
6 |
app_paths/send |
存放上送主機的文件 |
7 |
app_paths/sendFile |
存放上送XX的文件 |
8 |
app_paths/tempFile |
存放社保ftp的臨時文件 |
9 |
app_paths/upload |
存放上傳下載的臨時文件 |
可用腳本dir.sh建立以上目錄,在/home/weblogic下執行dir.sh,dir.sh內容以下:
mkdir user_app mkdir user_app/bin mkdir user_app/app_paths mkdir user_app/app_paths/decryptFile mkdir user_app/app_paths/downloadFile mkdir user_app/app_paths/logs mkdir user_app/app_paths/fat mkdir user_app/app_paths/send mkdir user_app/app_paths/sendFile mkdir user_app/app_paths/tempFile mkdir user_app/app_paths/upload
﹡特別聲明:只有設置了啓動免輸入用戶和密碼的狀況下,目錄bin下的啓動腳本纔可以執行成功。
路徑:/home/weblogic/user_app/bin,該目錄下的腳本文件須具備執行權限,可用命令賦予:chmod 755 *
因暫時沒法找到把完整weblogic控制檯信息寫到指定文件,採用重定向輸出方式,把控制檯信息寫入指定服務器日誌文件/home/weblogic/user_app/app_paths/logs/appserver.log。
用法:命令 域名,如啓動管理系統:./start_svr.sh sifimis。start_svr.sh內容以下:
if [ "$1" = "" ] ; then echo "缺乏參數,命令執行錯誤!用法:start_svr.sh sifimis(參數爲域名)" exit 1 fi if [ "$1" != "sifimis" -a "$1" != "exchgsvr" -a "$1" != "siftp" ] ; then echo "參數錯!參數爲域名sifimis/exchgsvr/siftp" exit 1 fi SVR_HOME="/home/weblogic/Oracle/Middleware11g/user_projects/domains/$1" SVR_LOG="/home/weblogic/user_app/app_paths/logs/appserver.log" nohup ${SVR_HOME}/startWebLogic.sh >>${SVR_LOG} 2>&1 & echo "啓動執行完畢,請稍後檢查啓動狀況."
./start_svr.sh sifimis
./start_svr.sh exchgsvr
./start_svr.sh siftp
./start_svr.sh exchgsvr
./start_svr.sh siftp
./start_svr.sh sifimis
用法:命令 端口號,如關閉管理系統:./shutdown.sh sifimis。shutdown.sh內容以下:
if [ "$1" = "" ] ; then echo "缺乏參數,命令執行錯誤!用法:shutdown.sh sifimis(參數爲域名)" exit 1 fi if [ "$1" != "sifimis" -a "$1" != "exchgsvr" -a "$1" != "siftp" ] ; then echo "參數錯!參數爲域名sifimis/exchgsvr/siftp" exit 1 fi if [ "$1" = "sifimis" ]; then port=8080 svrname="管理系統" fi if [ "$1" = "exchgsvr" ]; then port=8081 svrname="交換系統" fi if [ "$1" = "siftp" ]; then port=8082 svrname="XX服務系統" fi ##取端口偵聽的進程號及程序名,如1023/java var=$(netstat -anp|grep 127.0.0.1:$port |awk '{print $7}') if [ "${var}" != "" ] ; then ##截取進程號 java_pid=${var%/*} kill -9 $java_pid sleep 2 echo --$svrname已被關閉-- else echo $svrname沒有啓動! fi
./shutdown.sh sifimis
./ shutdown.sh exchgsvr
./ shutdown.sh siftp
./ shutdown.sh sifimis
./ shutdown.sh exchgsvr
./ shutdown.sh siftp
因爲各系統啓動時已把控制檯信息經過重定向輸出方式以追加形式寫入日誌文件user_app/app_paths/logs/appserver.log中,該文件將會愈來愈大,所以須要設置爲自動截斷,截斷方式有兩種:每日或按大小,下面介紹按日進行截斷的設置方案。
用linux操做系統自帶的logratate工具按期整理日誌,用root用戶操做:
一、建立腳本
#vi /etc/logrotate.d/appserverlog (使用root用戶, appserverlog爲配置文件名,也可取其它名稱)
/home/weblogic/user_app/app_paths/logs/appserver.log { rotate 60 daily copytruncate notifempty missingok }
其中:
rotate 60 表示保留60天的備份文件
daily 表示天天整理一次
copytruncate 表示先複製log文件的內容,而後再清空
missingok 表示若是找不到log文件也沒OK
notifempty 表示若是log文件是空的,就不進行rotate
二、/usr/sbin/logrotate -f /etc/logrotate.conf執行生效(即時切斷日誌,生成新日誌文件)。
三、特別說明:
天天系統時間換往後生成的日誌備份文件名爲appserver.log -yyyymmdd,yyyymmdd是生成備份文件的日期,文件內容是該日期以前的內容。