星期四, 10月 02, 2014

IBM Installation Manager 啟動錯誤

今天到客戶端進行 IBM HTTP Server 的升級,想說這是一個秒殺的工作,含把檔案放到伺服器上的時間,應該一個上午就可以搞定!

不過,通常事情沒有這麼順。

近年來,IBM 很多軟體大概都透過 Installation Manager 來進行安裝與更新,一切圖形化操作介面,相當地方便。

所以,對於一個軟體升級的工作來說,沒其他狀況的話就是勾一勾,然後下一步,下一步就可以結束。

如果這麼簡單,客戶為什麼一花一筆錢來請我們進行維護?當然,不是要應付這種狀況!而是,我接下來要講的突發狀況。

一開始是客戶跟我反應他們進行弱點掃描時,有掃出 DoS 的弱點,要求補強。於是,我到 IBM 的修正中心看看有沒有修補程式。剛好看到最新的修補程式中,有他們提到的特性,所以我就把修補程式下載下來,並且與客戶約時間,準備進行更新作業。

當客戶幫設定好工作環境後,我打開 Installation Manager 時卻發生了一個錯誤:

Unexpected error in startup resynchronization.

java.lang.illegalStateException: No metadata found for installed package com.ibm.websphere.WCT.v85 8.5.0.20120501_1108.
這下就麻煩了,沒有 installation manager 幾乎什麼事都不能做,所以只能想辦法修復了!

從剛剛的訊息中,我整理出來的相關情報如下:
1. 目前的軟體環境是用 Flush Copy 過來的,會不會少了什麼檔案?
2. 系統呈現的錯誤訊息表示 WCT 這個元件有問題
3. IBM Installation Manager 的檔案結構可分成兩個部分,其中之一是 eclipse 相關的資料,另外一個部分是我們安裝進去的相關資料檔 (在 UNIX 的環境該資料目錄就是 /var/ibm/InstallationManager/ 中)

後來,我到 /var/ibm/InstallationManager/installRegistry/metadata/Offerings 這個目錄中,看到裡面有下列資訊:

com.ibm.websphere.WCT.v85_8.5.0.20120501_1108.jar
com.ibm.websphere.WCT.v85_8.5.0.20120501_1108.jar0
其中,com.ibm.websphere.WCT.v85_8.5.0.20120501_1108.jar 的檔案大小是 0,另外應該還少一個 com.ibm.websphere.WCT.v85_8.5.0.20120501_1108_SE.jar 的檔案。

於是,在請 User 將這兩個檔案補上後,Installation Manager 就可以正常啟動了!
然後就迅速地完成 IBM HTTP Server 的更新,完成這次的任務。

【參考文章】
1. A "No metadata found for installed package" message is seen by Installation Manager with WebSphere Enterprise Service Bus (WESB)

星期四, 9月 25, 2014

在 MAC 中開啓 Linux 裡的 X 視窗

在 Windows 中,我們可以透過 Xming 來叫起 Linux 或 Unix 上的 X 視窗。但是,最近換了 MAC Book Pro 後,突然想到那 MAC 該怎麼處理?

於是,我就上網找找看解決方案。後來找到 XQuartz 這個工具,他是蘋果電腦在 MAC OS 上對於 X Window 的實作。

當我們在 MAC OS 上安裝了 XQuartz 後,可以透過下列指令,來啟動 Linux 上的 X 視窗應用程式:

ssh -X user@servername
xeyes

執行完上面的指令,應該可以看到下列這個眼睛!這就代表設定完成了。





參考資料

1. XQuartz 維基百科, http://zh.wikipedia.org/wiki/XQuartz



JBoss 4.2.3 JSP page cache


這兩天遇到一個棘手的問題。因為,某些因素我需要去修改某個產品的登入程式,讓他支援二次驗證。理論上,我修改 JSP 的程式後,不需要重啟 Server,該 Server 可以自動生效。

不過,神奇的事情就發生在我完成整合後,要丟給客戶看時,確一直看到舊的 JSP (就算我把那個檔案刪掉了,也是一樣)。

然後,我就重開 JBoss Server,看到的還是舊的 JSP!(這真是見鬼了)

一直重開,我還是看到舊的 JSP!

後來,我才想到,JBoss 的 Redeploy 的驅動點好像是檔案的時間。

所以,我就把檔案動一下再存檔,以更新檔案的最後存取時間。

結果,這招果然奏效了。不然,在那邊換檔案換半天就是沒有效。

讓客戶在旁邊看笑話了。

星期二, 9月 23, 2014

CentOS command line install Tomcat

最近突然有一個需求,就是在 Linux 上安裝 Tomcat。但是,因為使用 VM 的關係,GUI 的操作不是很靈敏,又沒有弄 Xming,所以只好用指令來完成安裝啦!也順被把這樣的程序整理起來。


安裝 JDK 7 Update 67

wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/7u67-b01/jdk-7u67-linux-x64.tar.gz"
下載回來後,檔名為:
jdk-7u67-linux-x64.tar.gz?AuthParam=1411398968_5826ae3ee1898fbb3d1e25e9de936e9d

此時,將該檔案檔名修改為「jdk-7u67-linux-x64.tar.gz」。再執行下列指令,進行解壓縮的工作。
tar xzf jdk-7u67-linux-x64.tar.gz
接著,使用 alternatives 指令進行 java 安裝,指令如下:

cd /opt/jdk1.7.0_67/
alternatives --install /usr/bin/java java /opt/jdk1.7.0_67/bin/java 2
# alternatives --config java (如果該機器中有多個 java 環境,可利用此指令進行篩選)
設定 JAVA_HOME 及 PATH 等環境變數,將 .bash_profile 設定修改如下 (紅字部分為增加之設定)

# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi
# User specific environment and startup programs
export JAVA_HOME=/opt/jdk1.7.0_67
PATH=$PATH:$HOME/bin:/opt/jdk1.7.0_67/bin
export PATH
unset USERNAME



安裝 Apache Tomcat

執行下列指令,進行 tomcat 下載 (本範例下載到 /usr/Apache 目錄底下)
wget http://apache.stu.edu.tw/tomcat/tomcat-7/v7.0.55/bin/apache-tomcat-7.0.55.zip
執行下列指令,將下載回來的 Tomcat Server 檔案解壓縮

unzip apache-tomcat-7.0.55.zip
至 apache-tomcat-7.0.55 目錄底下的 bin,執行下列指令,啟動 Tomcat Server

./startup.sh
接著可以使用 http://serverip:8080/ 測試 Tomcat 伺服器是否正常運作。



星期五, 9月 12, 2014

Sencha Touch 入門 - 環境建置 for MAC (1)


隨著行動應用的發展,App 開發的專案越來越多。最近,IBM Worklight 的詢問度似乎有提高的趨勢。面對 Hybrid App 的開發,大家通常提出來的第一個問題就是「效能會不會很差」。為了,能夠推廣 Hybrid App 的開發,我們當然要很努力地扭轉這樣的局面。

所謂,Hybrid App 指的就是利用 HTML5 + JavaScript + CSS3 來開發行動應用 App。當然,利用這樣的技術來製作 App 效能是比寫 Objective-C 或 Java 來得差。但是,使用者真的需要那麼快的 UI 響應嗎?

開發 Hybrid App 時,處理程式邏輯最重要的部分非 JavaScript 莫屬。在現今許多Framework並起的時代,以 Sencha Touch 的平台效能響應最快。因此,我們就開始 Sencha Touch 的 Survey 了!

這篇文章,算是個起頭!先交代如何建立 Sencha Touch 的環境。後面,再寫幾篇文章來說明我們實驗的過程。

安裝 Sencha Cmd

首先,把下載回來的檔案「SenchaCmd-5.0.1.231-osx.app.zip」解壓縮。解壓縮後可以看到「SenchaCmd-5.0.1.231-osx」檔案。點選該檔案後,開始進行 Sencha Cmd 的安裝。


在上述畫面,點選「打開」後,開始進行 Sencha Cmd 的安裝工作。在下列畫面中,點選下一步,進行 Sencha Cmd 的安裝工作。


在 License Agreement 的畫面上,選擇「I accept the agreement」後,點選「Next」繼續進行安裝工作。


選擇 installation Directory (可以採用預設的建議目錄),點選「Next」


在 Ready to Install 畫面上,點選「Next」 開始進行安裝程序


等待安裝程序完成!


點選 Finish 完成安裝!


開啓「終端機」,輸入「sencha」可以看到下列畫面,代表 Sencha Cmd 已經安裝完成了!


Sencha Touch 2.4 


  1. 將下載回來的「touch-2.4.0-commercial.zip」檔案解壓縮
  2. 將終端機中的路徑,切換到「touch-2.4.0-commercial.zip」 解壓縮的位址
  3. 輸入下列畫面中的指令,來建立 Sencha Touch 專案

成功建立 Sencha Touch 專案後,可以看到上列畫面。接著,執行下列指令打開 Chrome 瀏覽器「open /Applications/Google\ Chrome.app/ --args --disable-web-security」。然後再從檔案中選到 index.html 後即可看到預設的範例程式。
到了這一步,表示基本環境已經建置完成。


參考資料:

下載 Sencha Touch : http://www.sencha.com/products/touch/
下載 Sencha Cmd: http://www.sencha.com/products/sencha-cmd/download



星期四, 9月 11, 2014

修改 CentOS 的 MAC Address

有很多地方是透過電腦的 MAC Address 來管理一個設備是否可以上網。然而,有時候要跟系統或網管人員申請 MAC 的轉換又很麻煩。所以,如果我們可以自己修改 MAC Address 的話,就不用透過這道手續。

會去找 CentOS 如何修改 MAC Address 的方法,主要是我本來用一台 Windows Server 在做一些測試。然後,因為某些專案的因素,我又需要有一部 Linux 的測試環境。但是,網管人員只給我一組 IP,而且是綁定 Windows Server 的 MAC Address。

此時,如果懶得驚動網管人員,最佳的解決方案就是替這部 Linux 修改 MAC Address,並且設定相對應的 IP。於是,我先從 Linux 的 GUI 界面探索是否有可以設定的地方。

首先,我從「Administration」/「Network」中找到下列設定畫面:

選擇 eth0 的 Device 後,按下「Edit」按鈕,就可以出現該網卡的設定畫面。

選擇「Hardware Device」的 Tab 就可以看到有一個「Bind to MAC address」的地方可以進行設定。


設定後,按下確認鈕,並且重啟該網卡。突然遇到了「Device eth0 has different MAC Address than expected, ignoring」的錯誤訊息。於是找好再打開 Google 檢查一下還有哪邊需要設定,但是看來看去都是指向 「/etc/sysconfig/network-scripts/ifcfg-eth0」的檔案要修改。

這個檔案中,有一個屬性「HWADDR」看起來就是我設定的哪個 MAC Address。不過怎麼改好像都沒用!後來,我又找到一篇文章「How to change MAC address on CentOS Linux」。這篇文章中寫的屬性是「MACADDR」,於是我將 HWADDR 修改成 MACADDR 後,網卡就可以正常運作了!







星期二, 9月 09, 2014

特權帳號管理

大概是在三四年前,因為和 CA 的配合,我開始接觸到「特權帳號管理」這一塊領域。

一般來說,我們的系統大致上可以把使用者的帳號切割成兩個部分:
1. 一般使用者帳號
2. 系統管理者帳號

通常,我們在公司裡面談的資訊安全,有80%是針對「一般使用者」來進行管理,但是對於特權帳號這部分卻疏於管控。

為什麼會說疏於管控?我經常到客戶那邊協助處理 IT 的問題 (不管是系統類的或是應用程式開發類的錯誤),我總是需要一組擁有「足夠權限」的帳號,讓我進行問題的診斷。

這時候該如何取得該帳號與密碼來登入系統?通常就是直接問承辦人,然後他就會跟你講帳號密碼(還好我是個善良的人,不然這些系統啟不落入我的掌控之中!)。接著,我就可以使用這組帳號密碼登入系統,胡作非為。

近年來,這些安全的意識高漲,所以到客戶那邊要取得這些帳號密碼的資料也變的比較麻煩了。以我們公司最大的客戶來講,現在你去維護他們家的系統,帳號密碼由他們敲,你在操作的同時他們的員工必須陪同在旁邊,跟你 pair programming (就是監視你是不是有真的胡作非為)。

如果他們是以學習的角度,來觀察我做了什麼,那對於他們可能是有價值的。如果,只是來監視我,那這樣就顯得很浪費資源。

談到這裡,有一些IT的需求就逐漸浮現:
1. 企業不希望外部的維護工程師知道我系統管理者的帳號密碼,所以要有人幫我管理密碼或者是幫我敲密碼
2. 當他人登入我的系統時,我們可以監控其一舉一動,了解登入者進入系統中做了哪些操作

在這上面,CA 使用 ControlMinder 的 Shared Account Management 模組,就是針對上述需求而設計的產品。

該產品讓使用者透過入口網站,來控管共用使用者(系統管理者)的管理權限,也提供使用者自動登入 (資料庫,作業系統,網路設備等)機制,防止密碼外洩。針對臨時的存取者,該產品也提供申請,審核的機制。

針對應用程式中常見的 Shared Account Management 問題,例如:程式碼中將資料庫的密碼寫死在設定檔或應用程式伺服器上。導致開發人員知道資料庫系統的帳號密碼,使資料庫內的資料暴露在可能被取走的風險中。因此,CA ControlMinder 模組也提供各種與既有程式整合的方式,包括 .NET, Java 等 (我也處理過 C++, PHP, ASP, VB, CScript 等程式語言的整合案例)。藉由上述方式,可以解決第 1 項需求。

而第 2 項需求的部分,則由 ControlMinder 產品整合 ObserveIT 來解決。透過整合 ObserveIT 的套件,當使用者使用 ControlMinder 上的自動登入功能時,就可以啟動錄影功能,將使用者登入系統後所做的事情錄製下來。

很多人看完這個功能後的問題就是那不是會耗費很大量的磁碟空間?ObserveIT 使採用差異化錄影的技術來節省錄製檔案的空間。所謂的差異化錄影,就是說當我們有進行動作時,畫面才會被存下來。如果登入後,讓畫面停在那邊不動,則 ObserveIT 僅會儲存一個畫面,藉此降低影像儲存的資料量。

透過上述軟體系統的協助,可以解決特權帳號管理的問題,並能確實留下他人進入系統的操作記錄,作為後續稽核及問題追蹤的重要證據。

星期二, 9月 02, 2014

CentOS 上設定 FTP


因為工作上的需求,有時後得用 Linux 模擬客戶端的環境。通常是模擬 Linux or Unix,使得自己到現場的時候能拿出更專業的表現。

這時候,我通常會在機器上建立起 Linux 的 VM。會安裝這個 VM 主要是為了進行一些軟體的安裝驗證。所以,通常需要從自己的 Windows host copy 檔案到 Linux 中。

這時,我通常會使用 FTP。

在 CentOS 底下,可以使用【yum install vsftpd】進行 FTP 軟體的安裝。

安裝完成後,可以透過【service vsftpd start】來啟動 FTP 的服務。

另外,我們可能希望檔案可以上傳到 Home Directory。
此時,因為 Linux 上一些預設的限制,要達成此條件的話,要執行下列指令:

/usr/sbin/setsebool -P ftp_home_dir 1

如此應該就可以正常運作。當然,如果你要使用的是 root 帳號,還要設定下列檔案:

/etc/vsftpd/ftpusers

/etc/vsftpd/user_list

必須將 root 帳號從排除清單中移除,才可以用 root 登入。

星期日, 8月 31, 2014

PMI-ACP 考試心得

在軟體工業中,Agile 的方法論其實已經相當熱門專案執行方式,很多人談,最近在網路上最常見到的文章大概就是 Scrum 以及 Kanban 了。雖然,我自己也在資訊產業中,也看了很多這些方法論的書,但是卻還是無法讓這些方法論在工作中被徹底落實。Agile 裡面有很多好的概念,好的做法,但是針對這些概念,做法也僅止於看過,知道,卻無法被有效地整合,並且徹底地落實。

距離之前考取 PMP 的時間經過了兩年,雖然那些知識領域有落在腦袋中,但是在工作上卻無法有效地推動,所帶領的每個專案執行起來總是有那麼一些說不出來的障礙。不外乎需求經常在變動,開發出來的產品不符合使用者使用,以及測試階段抓去很多的「蟲」,要進行除錯等。這是資訊專案開發常見的情境,也是軟體專案經理很大的困擾。

看著 PMP 的證照時間,才想到原來我兩年來都沒有去填 PDU Renew!所以,也還沒完成換證。就在想著該怎麼在接下來的一年時間內,進行 PMP 證照的 Renew 時,長宏傳來要開PMI-ACP 的課程。所以,抱著 Renew PDU 以及再添一個證照的規劃中,報名了長宏台北 ACP-1 的課程。

5 月底報名後,就聽說有其他成員已經開始參加讀書會,可以感覺得出 ACP-1 勢在必得的態勢。不過自己因為工作繁忙,以及家中有年幼小孩,我是一直拖到上課前一週才開始出席讀書會,我編在第四組。這組應該就是招生最後幾個報名的學員,所以開始打拼的時間點也比其他人都晚一些。

接著就開始緊鑼密鼓的一個月,為 PMI-ACP 證照考試做準備。在 PMI ACP 證照考試的參考書籍中共有11本。每本都是原文的書籍,說真的這要認真消化這11本書,肯定是曠日費時。所以,長宏替學員準備的課程,講義對於大家考試的準備就很重要,可以節省大家考取證照的時間 。

目前 PMI-ACP 的考試是120題英文考題,考試範圍涵蓋:Agile Framework,Value-Driven Delivery,Stakeholder Engagement,Boosting Team Performance Practices,Adaptive Planning,Problem Detection and Resolution 及 Continuous Improvement等章節。從數量來看,準備起來是比 PMP 快。雖然是使用英文考試,但是在我寫心得的這一刻,ACP-1 已經全班通過考試,可見這些困難都是可以被克服的。

從這次準備考試的過程,更可看出長宏團隊在輔考上的專業。從課前預習的要求,到精彩的上課內容,以及讀書會的安排,每一項都是逐漸地在提升學員的能力,只要能隨著這些里程碑的確認,讓學員上場時都能有很高的通過率。

當然,除了考試之外,最重要的就是透過讀書會共好的精神,將原本八竿子打不著的人圈在一起。大家從一開始的彼此陌生,到後來討論群組上一天可以有上百封的信息,讓整個團隊為了共同的目標很快速地凝聚在一起。

經過一個多月的努力,大家都順利考上,也取得不錯的成績。更難能可貴的是,大家在考時期間討論的熱絡氣氛,在大家考完後熱度依然不減。準備考試與證照的考取是一時的,大家彼此的情誼可以延續才是永久的。





星期六, 8月 30, 2014

使用 ProfileManagement Tool 建立 WebSphere Profile


1. 啟動 ProfileManagement 工具

    <WAS_Install_Folder>/bin/ProfileManagement/wct.sh (wct.bat)


2. 按下「建立」按鈕, 選擇「應用程式伺服器」,按「下一步」


3. 選擇「建立一般設定檔」,按「下一步」

4. 輸入 WebSpher Application Server 管理的帳號密碼,並且按「下一步」
    (備註:也可以不啟用管理安全)


5. 按下「建立」,開始建立 Server Profile




如此就完成 Profile 建立的工作了!

星期三, 8月 27, 2014

WebSphere Liberty 與 IBM HTTP Server 的整合設定

WebSphere Application Server 與 IBM HTTP Server 的整合做了很多次,WebSphere Liberty Core 確都還沒做過這樣的設定。弄了一輪後,發現跟之前整合 WebSphere Application Server 有一些落差,所以寫這篇文章來做筆記。


本文章的測試環境:
        1. Windows 2008 R2 Enterprise Edition
        2. IBM WebSphere Liberty V8.5.5
        3. IBM HTTP Server V8.5.5

前提:
        1. 完成 IBM WebSphere Liberty Core 安裝 (需要安裝 JDK,不是 JRE )
        2. 完成 IBM HTTP Server 安裝
        3. 完成 Web Server Plug-ins for IBM WebSphere Application Server 安裝

        IBM WebSphere Application Server Liberty Core Trial Download

設定說明:

Part 1: IBM WebSphere Liberty Core 設定

        1.1. 必須先建立一個 Liberty profile
               <Liberty_Install_Dir>/bin/Server.bat create AppSrv01
        1.2. 設定 server.xml 檔案 ( <Liberty_Install_Dir>/usr/servers/AppSrv01)
         在 server.xml 中加入下列設定
    
          <pluginConfiguration webserverPort="80" webserverSecurePort="443" 
                                     sslKeyringLocation="keyring.kdb" 
                                     sslStashfileLocation="keyring.sth" />
   <Log LogLevel="Error" Name="C:/IBM/http_plugin.log"/>

        1.3. 在前提條件中,有提到要裝JDK,因為這裡要使用一個工具《jconsole》
               執行在 JDK 安裝路徑底下的 bin/jconsole.exe 程式。

       
jConsole 選擇 AppSrv02 (Liberty Profile) 的執行程序,點選《Conncet》

順利 Connect 後,選擇《MBean》的 Tab。再選擇《WebSphere》底下的《com.ibm.jms.mbeans.generatePluginConfig》,點選《generateDefaultPluginConfig》按鈕,產生《plugin-cfg.xml》檔案。 (該檔案會產生在 profile 的根目錄)。



Part 2: IBM HTTP Server 設定

1. 使用 ikeyman 建立一個 CMS Key Store (選擇建立一個新的金鑰資料庫檔),並建立一個自簽憑證。

2. 設定 httpd.conf 檔案

在 httpd.conf 檔案中找到 SSL 區塊,並做下列設定 (如果沒有要啟用 SSL 則跳過這一段):

LoadModule ibm_ssl_module modules/mod_ibm_ssl.so
Listen 0.0.0.0:443
## IPv6 support:
Listen [::]:443
<VirtualHost *:443>
SSLEnable
SSLProtocolDisable SSLv2
</VirtualHost>
KeyFile C:/IBM/HTTPServer/key.kdb
SSLDisable


《將下列設定加在 httpd.conf 檔案的最後 (注意路徑要對)》
LoadModule was_ap22_module "C:/IBM/WebSphere/Plugins/bin/32bits/mod_was_ap22_http.dll"

WebSpherePluginConfig "C:/IBM/WebSphere/Liberty/usr/servers/AppSrv02/plugin-cfg.xml"


Part 3:  Web Server Plug-ins 設定

1. 設定 plugin 的金鑰資料庫,同 HTTP Server 時一樣,先建立一個 key store
2. 在該 key store 中《匯入》Liberty Profile 底下的 key.jks 裡的憑證到這個 key store
3. 修改 plugin-cfg.xml 檔案的設定如下 (要讓 plugin 讀得到這個 key store)
   <Property Name="keyring" Value="C:/IBM/keyring.kdb"/>
   <Property Name="stashfile" Value="C:/IBM/keyring.sth"/>
4. 修改 plugin-cfg.xml 中的 LogLevel 資訊,方便追蹤訊息
    <Log LogLevel="Error" Name="C:/http_plugin.log"/>

備註:如果沒有要啟用 SSL,則此部份設定就不需進行



最後,就是進行測試看看 IBM HTTP Server 是否可以正常運作。

星期二, 8月 26, 2014

Windows 中啟用 Telnet 功能

展示時使用 Windows 2008 R2 作業系統

Telnet 是我們在進行系統測試時好用的工具,通常用來檢查某一部機器與另外一部機器之間是否有被防火牆擋住。但是,偏偏 Windows 預設又把這個功能關起來。所以大家裝完機器的時候,其實沒有 Telnet 功能。下列文章將說明如何啟用「Telnet」服務。
1. 開啓 Windows 控制台,選擇「程式集」,點選
    「開啓或關閉 Windows 功能」。






2. 系統開啟「伺服器管理員」畫面,選擇「功能」,點選「新增功能」
 

3. 勾選「Telnet 用戶端」,點選「下一步」



4. 點選「安裝」

 

5. 完成安裝畫面
 

6. 使用「命令提示字元」,進行 Telnet 指令測試 (在命令提示字元中輸入 telnet 應該看到下列畫面)