Archive

‘Figaro 牢騷區’ 分類過的Archive

學習態度有感 ~

2013年4月19日 尚無評論

學習態度是身為學生在求學過程中一個很重要的指標,這個態度會影響到他畢業後在業界表現的表象與未來處事的一個模式,這幾天剛好碰到朋友在修讀研究所過程中,碰到同儕對於該系所論文提報制度的不滿所產生的一些發酵效應,深入了解之後,讓我個人感覺到十分的訝異與不解。

首先,每一個求學者在進行考去研究所的前提便是希望針對該所的領域進行深入的學習與研究,才會去報考該系所,但考上後卻處心積慮地以找外系所指導教授為主,並且不希望依照所上的論文提報模式進行作業,並且開始透過所謂的 “自由言論” 於半公開與公開的場所中大放厥詞,認為所上的制度是在壓抑學生的學習與阻撓學生的發展。當中甚至有一位某大學副教授來修讀第二專長領域的學生,甚至揚言要推翻這個評定制度,並將該所教授的相關論文引用程度的資訊貼在網路上,卻也不做任何的說明。

其實跟我朋友聊到這邊,我已經瞪大雙眼感到極度不可思議,考上的系所不正是這些同學們自己所挑自己所選,除非所上的制度與模式有著許多不合理的內容與限制,學習者不也應該要虛心學習而非因自身能力不足而行與論推翻作業呢?”聞道有先後,術業有專攻”,我也深信這位修習第二專長的副教授有著不錯的資質與能力,也在個人原有的學習領域中佔有一席之地,但是既然希望休息第二個不同的領域時,不也應該秉持的虛心求學的態度嗎 ? 其中更令我感到有趣的是,這位副教授學生一直將國內一些論文修習標準較低的學校規範拿出來與該所的規範比較,但卻沒思考過或者是仔細的想想,那”絕大多數與其他學系的做法” 呢 ?這樣的心態讓我感覺十分的可議與不解。

從事管理職至今也大約 7 個年頭左右,途中也碰過很多前來面試的新鮮人與老人們,但隨著時間的演進我個人也深深體會到絕大多數的企業所說的人才一代不如一代的窘況,在現今一切講求速食、快速的模式之下,有多少人願意一步一步去向下打基礎,進行學習以求得個人能力之最大成長為目標。以我朋友的例子來說,在他們不斷抱怨制度上的問題與處心積慮想要推翻或者是改變這些制度的同時,不知道是否也曾經去看過這些年來在這個制度下學習的學長姐們的相關成效數據呢? 抑或者只是人云亦云,惟恐天下不亂的狀況下,因少數人的個人私慾而發酵為群體的共同意見呢 ? 當他們在努力做這些動作之下,把這些時間拿來進行製作符合原有規範的模式不也沒有相關衍伸的問題。

很多時候,事情都是一體兩面,但我也深信碰到不符合自己原本期待的模式之下,難免會有些情緒性上的反應,但身為一個學習者,更因該要秉持虛心面對、廣納不同學習方向的態度才能夠讓自己未來的路更加擴大。之前曾經看過 Harvard 大學醫學院院長 Sydney Burwell 說過的一段話 “Half of what you are taught as medical students will in ten years have been shown to be wrong. And the trouble is, none of your teachers knows which half.”,其實不論醫學或者是其他領域,沒有一個人可以保證目前的理論或者是學習到的都一定是正確的,但唯有靠自己不斷的學習與尋求成長才有機會找到這個錯誤的部分。

Categories: Figaro 牢騷區 Tags:

Windows 下的檔案同步工具 – SyncToy

2013年4月18日 尚無評論

在 Linux 作業系統環境底下我們要進行檔案的同步作業,可以透過很多種方式來進行操作與完成,但如果時空背景移動到 Windows 作業系統環境下,就ˋ是一個十分棘手的事情。SyncToy 是微軟所提供的一個免費同步工具,作業方式有點類似 Linux  作業系統的下的 rsync  ,可以遠端同步兩台不同主機上的目錄、軟體等,有興趣的朋友可以抓下來玩玩看。

微軟官方下載點:SyncToy 2.1

syncToy

記錄:Android 開發隱蔽 RadioButton 語法

2013年4月7日 尚無評論

大部分書上都是介紹怎樣透過 OnCheckedChangeListener 來改變 RadioButton 的顯示字串方式,例如:

subbutton.setText(getString(R.string.red);

若是我們希望當 button1 被核選時,子項目subbutton 會顯示,相反的若是核選 button2 與 button3 時則會被隱蔽不顯示,則可以用:

subbutton.setVisibility(View.INVISIBLE);

來進行處理 ~ 程式片段可以寫成:

private RadioGroup.OnCheckedChangeListener styleOnCheChanLis = new RadioGroup.OnCheckedChangeListener() {

@Override
public void onCheckedChanged(RadioGroup stylegroup, int checkedId) {
// TODO Auto-generated method stub

switch (checkedId) {
case (R.id.style_1):
color_1.setVisibility(View.VISIBLE);
color_2.setVisibility(View.VISIBLE);
color_1.setText(getString(R.string.white));
color_2.setText(getString(R.string.blue));
break;
default:
color_1.setVisibility(View.INVISIBLE);
color_2.setVisibility(View.INVISIBLE);
break;
}
}

};

 

Categories: Android, Figaro 牢騷區 Tags:

於 Oracle Linux 6.3 中安裝 Oracle Database 11gR2

2013年3月11日 尚無評論

Oracle 這個龐大商業體,從作業系統、開發工具、資料庫 …. 等產品均全部囊擴,優點在於對於要搜尋解決方案的企業體而言是一個十分方便的採用對象,但恐怖的是你所要付出的費用代價也十分高昂。以前在執行 Oracle Database 大多會以 RHEL 或者是 SLES 為主,但自從 Oracle Clone 了 RHEL 自己推出一個 OEL 之後,相信不少用戶應該也都慢慢移轉到 OEL 身上來配置 Oracle Database 環境。在官方文件庫中已經有提供一篇 Oracle Database 11g Release 2 (11.2) Installation On Oracle Linux 6 的文件資料,但有一些部份沒寫得很清楚的,為了減少有需求朋友的摸索,所以將整個步驟整理一下如下:

  1. 安裝 Oracle Linux 6.3:安裝時可以直接挑選 Basic 樣本來進行調配下列項目,確認相關選項都有進行安裝
    • Base System > Base
    • Base System > Client management tools
    • Base System > Compatibility libraries
    • Base System > Hardware monitoring utilities
    • Base System > Large Systems Performance
    • Base System > Network file system client
    • Base System > Performance Tools
    • Base System > Perl Support
    • Servers > Server Platform
    • Servers > System administration tools
    • Desktops > Desktop
    • Desktops > Desktop Platform
    • Desktops > Fonts
    • Desktops > General Purpose Desktop
    • Desktops > Graphical Administration Tools
    • Desktops > Input Methods
    • Desktops > X Window System
    • Development > Additional Development
    • Development > Development Tools
    • Applications > Internet Browser

    挑選後,大概在 1,145 個套件左右,與其它 Linux 環境配置相同,網路、主機名稱、系統使用者帳號部分我就不在多做說明。

  2. Oracle Linux 6.3安裝後的調整:安裝完畢後,預設網路啟用部分會以 NetworkManager 為主,不過既然是伺服器環境,還是切換回傳統網路配置方式比較正確些,操作如下:[ root@OracleDB Desktop ]# service NetworkManager stop ; chkconfig NetworkManager off
    [ root@OracleDB Desktop ]# chkconfig network on ; service network restart在啟動 network 服務時,若是發現預設的網路介面卡沒有正常啟動時,可以透過 setup 組態工具進行網路介面配置,或者直接編輯 /etc/sysconfig/network-scripts/ifcfg-eth0 網路介面卡的組態檔案,並且要注意 ONBOOT 項目是否被設定為 yes

    接著,在 /etc/hosts 中將主機名稱對應配置進去:192.168.1.9     OracleDB.wholan.corp      OracleDB

    最後,依據官方文件說法是建議將 SELinux 與 IPTABLES 關閉,不過這邊筆者會建議使用者將對應埠號與安全規則寫入,會比較好一些,避免 DB 主機落入不安全的環境中。

  3. 下載 Oracle Database 11g R2:完成基礎配置之後,接著可以前往 OTN 下載 for Linux 使用的 Oracle Database 11gR2 套件,一共有兩個檔案分別為:linux.x64_11gR2_databases_1of2.zip
    linux.x64_11gR2_databases_2of2.zip接著,我們要將這兩個壓縮檔解開到目錄內,操作如下:[ root@OracleDB ~ ]# mkdir /tmp/Oracle_install ; cd /tmp/Oracle_install
    [ root@OracleDB Oracle_install ]# unzip ../linux.x64_11gR2_databases_1of2.zip
    [ root@OracleDB Oracle_install ]# unzip ../linux.x64_11gR2_databases_2of2.zip
  4. 安裝前的環境配置:接著,我們需要再 OEL 中調整一些基本環境參數,讓 Oracle Database 運作時會比較順暢,操作如下:
    • 編輯 /etc/sysctl.conf ,將下列參數添加進去:
      fs.suid_dumpable = 1
      fs.aio-max-nr = 1048576
      fs.file-max = 6815744
      kernel.shmall = 2097152
      kernel.shmmax = 536870912
      kernel.shmmni = 4096
      kernel.sem = 250 32000 100 128
      net.ipv4.ip_local_port_range = 9000 65500
      net.core.rmem_default = 262144
      net.core.rmem_max = 4194304
      net.core.wmem_default = 262144
      net.core.wmem_max = 1048586

      添加完畢後,執行 sysctl -p 讓配置生效

      [root@OracleDB ~]# sysctl -p

    • 接著,我們需要調整 /etc/security/limits.conf 組態檔案,來改變系統主機資源運用方式
      oracle              soft    nproc   2047
      oracle              hard    nproc   16384
      oracle              soft    nofile  4096
      oracle              hard    nofile  65536
      oracle              soft    stack   10240
    • 最後,在主機內添加 oracle 使用者帳號與相關群組:
      [root@OracleDB ~]# groupadd -g 501 oinstall
      [root@OracleDB ~]# groupadd -g 502 dba
      [root@OracleDB ~]# groupadd -g 503 oper
      [root@OracleDB ~]# groupadd -g 504 asmadmin
      [root@OracleDB ~]# groupadd -g 506 asmdba
      [root@OracleDB ~]# groupadd -g 505 asmoper[root@OracleDB ~]# useradd -u 502 -g oinstall -G dba,asmdba,oper oracle
      [root@OracleDB ~]# passwd oracle
  5. 準備開始安裝 Oracle Database 11gR2安裝時,我們都是採用 oracle 帳號來進行配置,因此筆者預先將安裝的路徑與權限配置完整,操作如下所示:[root@OracleDB ~]# mkdir -p /opt/oracle/product/11.2.0/db_1
    [root@OracleDB ~]#chown -R oracle.oinstall /opt/oracle
    [root@OracleDB ~]# chmod -R 775 /opt/oracle再把相關路徑配置到 oracle 帳號的 .bash_profile 檔案內:

    # Oracle Settings

    export TMP=/tmp
    export TMPDIR=$TMP
    export ORACLE_HOSTNAME=OracleDB
    export ORACLE_UNQNAME=OracleDB
    export ORACLE_BASE=/opt/oracle
    export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
    export ORACLE_SID=orcl
    export PATH=$ORACLE_HOME/bin:$PATH

    export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
    export CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib:$CLASSPATH

    最後,改用 oracle 使用者登入 Linux 環境中,切換到 /tmp/Oracle_install/database 目錄內,直接執行 ./runInstaller 程式,便會開始進行安裝與配置

  6. 如下圖所示,首先在安裝之前我們可以輸入 Oracle Support 帳號與密碼來做為之後運轉時接收相關安全事件使用,不過這邊我只是做一個練習用的環境就不輸入了,選擇 [ Next ] 跳過時系統會彈跳一個警告視窗,不要理會直接選擇 [YES]就可以進入下一個安裝步驟。

    oracle11g-step1 

  7. 如下圖所示,接下來要選擇安裝的模式,預設提供有三種安裝模式,分別為 [ 建立與組態一個資料庫 ( Create and Configure a database ) ]、[ 僅安裝資料庫軟體 ( Install database software only ) ]、[ 升級現存的資料庫 ( Upgrade an existing database ) ],在這邊我們選擇第一種安裝模式,進行安裝與組態一個新的資料庫。

    oracle11g-step2接下來,可以依據安裝資料庫的系統環境來選擇安裝的類型,預設提供桌面環境等級與伺服器環境等級,這邊可以依據實際使用的環境來進行挑選。

    oracle11g-step3

  8. 如下圖所示,在完成基本配置之後,接下來我們需要填寫相關安裝環境的資訊,由於我們在步驟5的時候已經將相關路徑配置到bash_profile檔案中了,因此安裝精靈會自己抓取到相對應的路徑配置,我們只需要在底下輸入管理員密碼即可。

    oracle11g-step4接下來在第一次安裝的時候可以指定這台主機某一個路徑來安裝 Inventory 檔案 。

    oracle11g-step5

  9. 如下圖所示,配置完相關安裝路徑之後,安裝精靈會開始檢查套件相依性問題,我們可以將檢查缺少的套件透過 yum 安裝來補齊,這邊比較特別的在於 pdksh 這個套件在 Oracle Linux 6.X 以後就被移除了,可以改裝 ksh 替代,忽略相關訊息即可。

    oracle11g-step6[root@OracleDB ~]# yum install libaio glibc compat-libstdc++-33 elfutils-libelf-devel libaio-devel libgcc libstdc++ unixODBC unixODBC-devel ksh

    安裝完畢後,可以在上面的畫面中再次點選 [ Check Again ] ,應該會出現有部分軟體還是 Failed 的狀態,這個部分是因為版本問題導致,請直接勾選 [ Ignore All ] 就可以進行下一步驟的安裝與配置。

  10. 如下圖所示,最後安裝精靈會把剛才的配置整理一個總表讓你確認,確認無誤後直接點選 [ Finish ] 便可以開始進行安裝與配置。
    oracle11g-step7oracle11g-step8
  11. 經過一段時間的安裝等待之後,如下圖所示,接著我們需要針對相關帳號進行密碼的配置,請點選 [ Password Management ] 進入密碼管理頁面。

    oracle11g-step9oracle11g-step10

    接著,將使用者名稱 HR 的 Lock Account 勾選取消,並且配置一組密碼給該使用者。

  12. 最後如下圖所示,我們必須開啟另外一個視窗以系統管理員 root 登入後,執行 /opt/oraInventory/orainstRoot.sh/opt/oracle/product/11.2.0/db_1/root.sh 腳本檔案,執行完畢後才可以返回這個視窗進行點選 [ OK ] 。
    oracle11g-step11[root@OracleDB ~]# /opt/oraInventory/orainstRoot.sh
    Changing permissions of /opt/oraInventory.
    Adding read,write permissions for group.
    Removing read,write,execute permissions for world.

    Changing groupname of /opt/oraInventory to oinstall.
    The execution of the script is complete.
    [root@OracleDB ~]# /opt/oracle/product/11.2.0/db_1/root.sh
    Running Oracle 11g root.sh script…

    The following environment variables are set as:
    ORACLE_OWNER= oracle
    ORACLE_HOME= /opt/oracle/product/11.2.0/db_1

    Enter the full pathname of the local bin directory: [/usr/local/bin]:
    Copying dbhome to /usr/local/bin …
    Copying oraenv to /usr/local/bin …
    Copying coraenv to /usr/local/bin …
    Creating /etc/oratab file…
    Entries will be added to the /etc/oratab file as needed by
    Database Configuration Assistant when a database is created
    Finished running generic part of root.sh script.
    Now product-specific root actions will be performed.
    Finished product-specific root actions.

  13. 完成上述步驟後我們便完成了 Oracle Database Server 的安裝,如下所示。
    oracle11g-step12
  14. 最後,我們得確認一下目前資料庫伺服器的啟動狀態:

    [oracle@OracleDB ~]$ lsnrctl statusLSNRCTL for Linux: Version 11.2.0.1.0 – Production on 11-MAR-2013 13:48:16

    Copyright (c) 1991, 2009, Oracle. All rights reserved.

    Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
    STATUS of the LISTENER
    ————————
    Alias LISTENER
    Version TNSLSNR for Linux: Version 11.2.0.1.0 – Production
    Start Date 11-MAR-2013 12:30:39
    Uptime 0 days 1 hr. 17 min. 36 sec
    Trace Level off
    Security ON: Local OS Authentication
    SNMP OFF
    Listener Parameter File /opt/oracle/product/11.2.0/db_1/network/admin/listener.ora
    Listener Log File /opt/oracle/diag/tnslsnr/OracleDB/listener/alert/log.xml
    Listening Endpoints Summary…
    (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
    (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=OracleDB.wholan.corp)(PORT=1521)))
    Services Summary…
    Service “orcl.wholan.corp” has 1 instance(s).
    Instance “orcl”, status READY, has 1 handler(s) for this service…
    Service “orclXDB.wholan.corp” has 1 instance(s).
    Instance “orcl”, status READY, has 1 handler(s) for this service…
    The command completed successfully

    [oracle@OracleDB ~]$ emctl status dbconsole
    Oracle Enterprise Manager 11g Database Control Release 11.2.0.1.0
    Copyright (c) 1996, 2009 Oracle Corporation. All rights reserved.
    https://OracleDB:1158/em/console/aboutApplication
    Oracle Enterprise Manager 11g is running.
    ——————————————————————
    Logs are generated in directory /opt/oracle/product/11.2.0/db_1/OracleDB_orcl/sysman/log

    如果 Oracle Enterprise Manager 11g 的 Database Control 有順利運作時,我們可以透過網頁進行連線存取,如下圖所示。

    oracle11g-step13

    oracle11g-step14

20130224 藥師執行業務的資訊管理因應個資法之衝擊 – 台南縣嘉南科大場

2013年2月25日 尚無評論

昨天 ( 02/24 ) 受邀前往嘉南科技大學針對台南縣藥師公會會員講了一場 “藥師執行業務的資訊管理因應個資法之衝擊” 講座,這是跨入藥事資訊領域將近兩年時間,第一次針對目前藥事資訊領域現況與法規上的問題進行講座的活動,兩個小時的時間將目前執行業務環境中所隱藏的問題一一勾勒出來,讓與會人員可以清楚明白知道目前所面臨的危機有那些。其實講法規的議程通常是比較枯燥的,當初在規劃這議題時其實還蠻擔心聽課的學員應該會睡倒一遍,哈哈。但沒想到大家精神還真好,8:10開講到結束兩個小時不間斷沒人打瞌睡。這次感謝台南縣藥師公會黃昭勳理事長的協助,才有這個機會讓我這個後生晚輩上台分享心得。

20130224-1

Categories: Figaro 牢騷區 Tags: ,

一次擁有LINUX雙認證:LPIC Level II + Novell CLP自學手冊 完稿

2013年2月20日 尚無評論

從 2006 年出版第一本 作業系統概論(學貫) 至今已經 7 年的時間,中間陸續完成 網路概論、Novell SUSE Linux Enterprise Server 10、NCLP認證攻略、openSUSE 等書共約 9 本著作,在 2010 年與松崗出版社簽訂預計要編寫一套學生自學手冊,內容涵蓋 LPIC Level I、Novell CLA、LPIC Level II、Novell CLP 四大國際認證,並希望可以透過大量的範例操作來取代填鴨式的觀念說明,讓讀者可以很輕鬆的透過自學手冊進入Linux這個世界。2011年12月這系列的第一本著作發行了,”一次擁有LINUX雙認證:LPIC Level I + Novell CLA自學手冊”,裡面涵蓋 24 個單元,共約 863 頁,裡面提供了約上百多個實際範例操作。

2011年7月起開始針對一次擁有LINUX雙認證:LPIC Level II + Novell CLP自學手冊進行規劃與撰寫,截至昨天共花費了18個月,包含中間因為工作忙碌休息了快 3 ~ 4 個月,歷經 LPIC Level II 考綱異動調整內容等,終於也在昨天順利完成,這本書預計 2013 年夏天發行,總共 15 個單元,完全涵蓋 LPIC Level II 與 Novell CLP 認證範圍,預計約 700+ 頁。涵蓋單元如下:

  • Novell CLP 認證簡介
  • LPIC Level II 認證簡介
  • 虛擬化技術 XEN 的使用
  • 認識與使用 AutoYaST 全自動部屬作業
  • 進階網路管理與 IPv6
  • 進階檔案系統管理與系統調校
  • 網域名稱伺服器的規劃與建置
  • 進階腳本程式的使用
  • 郵件伺服器的規劃與建置
  • 網頁伺服器的規劃與建置
  • 檔案伺服器的規劃與建置
  • FTP伺服器的規劃與建置
  • DHCP伺服器與常見系統安全服務管理
  • OpenLDAP伺服器規劃與建置
  • 常見系統除錯與故障排除

這本書也是個人投入著作以來的第十本著作,也是當初自己立下的一個目標,很高興這一路走來各領域的前輩、老師、學生、讀者們的支持與意見的提供,讓我可以完成這個目標,也期盼這本書的問世可以協助更多想踏入 Linux 領域的朋友們有個簡單的手冊可以進行操考 ^^

作業系統概論 即將上市

2013年1月10日 尚無評論

作業系統概論

 

睽違七年,這本著作十分有感覺,這是小弟的第一本撰寫主題,在2006發行,七年後這本書再次重新整理與撰寫,捨棄比較艱闢的內容,讓讀者可以更加輕鬆上手學習作業系統。這本書花費十分長的時間,中間也歷經一些事情,但終於還是完工即將問世了,也請各位讀者好友們繼續支持 ^^

awk 語法中使用環境變數

2012年12月20日 尚無評論

awk 是一個十分強大的工具,剛好有朋友在詢問在 awk 語法中如果我需要使用到環境變數內的值,該怎樣使用,例如:

var=100

在awk語法中若要使用 var 這個變數值,則需要透過下列語法操作:

awk -v new_var=$var ……………….

搜尋檔案內涵蓋的字串方式

2012年11月26日 1 則評論

早上有個學生在詢問怎樣在茫茫檔案中查詢是否有被插入某一個字串的方式,但找尋後又希望知道是在插入在那個檔案內,操作語法如下所示:

# find . -type f -exec grep “字串” ‘{}’ \; -print 2> /dev/null

這樣 find 搜尋後會拋給 grep 進行字串的比對,並且將找到的結果與檔案名稱都呈現出來

OpenNebula 3.7.80 XEN Cluster 配置紀錄 — Part II

2012年10月23日 尚無評論

在 OpenNebula 3.7.80 XEN Cluster 配置紀錄 — Part I 中,我們已順利將 ONE 環境給建構起來,但全部透過指令來進行操作對於大部分的新手而言可能會略顯痛苦,好在 OpenNebula有另外提供一個套件Sunstone來做為圖形化的管理介面,功能與指令操作管理完全相同,接著筆者將針對如何組態Sunstone的方式來進行介紹:

步驟一:於ONE-Master環境中安裝Sunstone套件

預設安裝 ONE 相關 RPM 套件時,套件內已經包含了 Sunstone 套件環境,只是預設並未啟用與安裝而已,安裝方式如下所示:

ONE-Master:~ # /usr/share/one/install_gems sunstone
Distribution “suse” detected.
About to install these dependencies:
* make
* gcc
* rubygem-rake
* gcc-c++
* sqlite3-devel

Press enter to continue…  [ 按下 ENTER 按鍵讓系統補齊運作 sunstone 所缺少的套件 ]

zypper install make gcc rubygem-rake gcc-c++ sqlite3-devel
Loading repository data…
Reading installed packages…
‘make’ is already installed.
No update candidate for ‘make-3.82-147.1.2.x86_64’. The highest available version is already installed.
Resolving package dependencies…

The following NEW packages are going to be installed:
gcc gcc-c++ gcc46 gcc46-c++ glibc-devel libstdc++46-devel linux-glibc-devel
rubygem-rake sqlite3-devel

9 new packages to install.
Overall download size: 13.6 MiB. After the operation, additional 59.1 MiB will
be used.
Continue? [y/n/?] (y): y [ 輸入 y 讓系統自動將缺少的套件補齊 ]
Retrieving package linux-glibc-devel-3.1_rc5-7.1.1.noarch (1/9), 778.0 KiB (3.1 MiB unpacked)
Retrieving: linux-glibc-devel-3.1_rc5-7.1.1.noarch.rpm [done (0 B/s)]
Retrieving package rubygem-rake-0.8.7-11.1.2.x86_64 (2/9), 359.0 KiB (1.5 MiB unpacked)
Retrieving: rubygem-rake-0.8.7-11.1.2.x86_64.rpm [done]
Retrieving package glibc-devel-2.14.1-14.27.1.x86_64 (3/9), 612.0 KiB (2.9 MiB unpacked)
Retrieving: glibc-devel-2.14.1-14.27.1.x86_64.rpm [done (7.5 KiB/s)]
Retrieving package sqlite3-devel-3.7.8-1.1.2.x86_64 (4/9), 92.0 KiB (339.0 KiB unpacked)
Retrieving: sqlite3-devel-3.7.8-1.1.2.x86_64.rpm [done (79.0 KiB/s)]
Retrieving package libstdc++46-devel-4.6.2_20111026-1.1.4.x86_64 (5/9), 2.4 MiB (21.3 MiB unpacked)
Retrieving: libstdc++46-devel-4.6.2_20111026-1.1.4.x86_64.rpm [done (1.3 MiB/s)]
Retrieving package gcc46-4.6.2_20111026-1.1.4.x86_64 (6/9), 5.5 MiB (18.5 MiB unpacked)
Retrieving: gcc46-4.6.2_20111026-1.1.4.x86_64.rpm [done (1.3 MiB/s)]
Retrieving package gcc46-c++-4.6.2_20111026-1.1.4.x86_64 (7/9), 3.9 MiB (11.5 MiB unpacked)
Retrieving: gcc46-c++-4.6.2_20111026-1.1.4.x86_64.rpm [done (1.3 MiB/s)]
Retrieving package gcc-4.6-15.1.3.x86_64 (8/9), 4.0 KiB (0 B unpacked)
Retrieving: gcc-4.6-15.1.3.x86_64.rpm [done]
Retrieving package gcc-c++-4.6-15.1.3.x86_64 (9/9), 4.0 KiB (0 B unpacked)
Retrieving: gcc-c++-4.6-15.1.3.x86_64.rpm [done]
Installing: linux-glibc-devel-3.1_rc5-7.1.1 [done]
Installing: rubygem-rake-0.8.7-11.1.2 [done]
Installing: glibc-devel-2.14.1-14.27.1 [done]
Installing: sqlite3-devel-3.7.8-1.1.2 [done]
Installing: libstdc++46-devel-4.6.2_20111026-1.1.4 [done]
Installing: gcc46-4.6.2_20111026-1.1.4 [done]
Installing: gcc46-c++-4.6.2_20111026-1.1.4 [done]
Installing: gcc-4.6-15.1.3 [done]
Installing: gcc-c++-4.6-15.1.3 [done]
About to install the gems for these components:
* sunstone
Press enter to continue…  [ 按下 ENTER 按鍵讓系統開始進行套件的配置與安裝 ]

gem install –no-ri –no-rdoc json sinatra thin sequel sqlite3
Fetching: json-1.7.5.gem (100%)
Building native extensions. This could take a while…
Successfully installed json-1.7.5
Fetching: rack-1.4.1.gem (100%)
Fetching: rack-protection-1.2.0.gem (100%)
Fetching: tilt-1.3.3.gem (100%)
Fetching: sinatra-1.3.3.gem (100%)
Successfully installed rack-1.4.1
Successfully installed rack-protection-1.2.0
Successfully installed tilt-1.3.3
Successfully installed sinatra-1.3.3
Fetching: eventmachine-1.0.0.gem (100%)
Building native extensions. This could take a while…
Fetching: daemons-1.1.9.gem (100%)
Fetching: thin-1.5.0.gem (100%)
Building native extensions. This could take a while…
Successfully installed eventmachine-1.0.0
Successfully installed daemons-1.1.9
Successfully installed thin-1.5.0
Fetching: sequel-3.40.0.gem (100%)
Successfully installed sequel-3.40.0
Fetching: sqlite3-1.3.6.gem (100%)
Building native extensions. This could take a while…
Successfully installed sqlite3-1.3.6
10 gems installed
ONE-Master:~ #

步驟二:接著安裝 noVNC 功能於Sunstone環境

noVNC是一個webSocket為基礎的VNC用戶端軟體,用來作為連結運作中的VM使用,預設安裝 Sunstone 環境時並不會自動安裝,因此我們需要額外進行配置,操作方式如下所示:

ONE-Master:~ # cd /usr/share/one/
ONE-Master:/usr/share/one # ./install_novnc.sh
Downloading noVNC latest version…
######################################################################## 100.0%
Extracting files to temporary folder…
Installing Sunstone client libraries in /usr/lib/one/sunstone/public…
Installing SelfService client libraries in /usr/lib/one/ruby/cloud/occi/ui/public…
Downloading Websockify VNC proxy files
######################################################################## 100.0%
######################################################################## 100.0%
Backing up and updating /etc/one/sunstone-server.conf with new VNC proxy path…
Backing up and updating /etc/one/occi-server.conf with new VNC proxy path…
Installation successful

步驟三:組態 Sunstone 監聽網路 IP 位置

Sunstone 安裝後並不需要太多的設定便可以直接進行運作,其伺服器的組態檔案位在 /etc/one/sunstone-server.conf,在啟用伺服器服務之前我們必須要調整監聽的 IP 位址與服務埠號,操作方式如下所示 ( 組態檔案中的 29 ~ 32 行 ):

29 # Server Configuration
30 #
31 :host: 127.0.0.1    [ 修改為 ONE-Master 所使用的 IP 位址 ]
32 :port: 9869

啟動與關閉 Sunstone 伺服器也是透過 oneadmin來進行操作,因此當我們修正好相關監聽IP位址資訊之後,便可以切換到 oneadmin 使用者帳號身分內,執行  sunstone-server start

oneadmin@ONE-Master:~> sunstone-server start
sunstone-server started

步驟四:透過網頁來存取 Sunstone 伺服器

由於剛才我們已經將 Sunstone 伺服器的監聽位址改為 192.168.1.27:9869  ,如下圖所示,當我們透過瀏覽器連線到這個位址時,便可以順利看到Sunstone伺服器的網頁畫面:

登入 Sunstone 伺服器可以直接使用 oneadmin 的帳號與密碼便可以順利進入介面來進行操作,預設 Sunstone 伺服器介面為英文,因此我們可以點選Dashboard –> Configuration 中進行語系的調整,將介面改為繁體中文版:

而 Sunstone 伺服器的詳細操作方式,讀者若有興趣可以參考 http://opennebula.org/documentation:rel3.8:sunstone 官方文件來進行使用,在Sunstone伺服器介面中美執行一個動作時,讀者可以仔細觀察右下方會出現操作狀態提示文字,我們可以從隨時彈出的文字框架中確認這個指令操作是否有異常。因此,若要快速進行 ONE 的使用,Sunstone 伺服器是一個不錯的選擇。