2008年7月27日 星期日

終端機設定



尋尋覓覓 也沒這麼誇張拉
最近終於找到我喜歡的終端機設定
文字顏色 #F0F607
文字字型 MiscFixed 13
背景顏色 #121207

就像上圖一樣

2008年7月13日 星期日

lab用 桌機建構完成

因為工作的關係 可能要學些系統
拜科技進步所賜 以前要建構這些lab環境 一般人可能負擔不起
現在只要一台不錯的桌機 就可以搞定了
先列出這次組的硬體規格
CPU :Athlon 64X2 4600+
RAM :創見DDRII-800 2G*4 共 8G
MB :技嘉MA78GPM-DS2H
HD :WD SATAII 400G
Power:全漢PFC 400W
Case :coolermaster iTower 930
CPU跟硬碟是跟朋友買的中古品
RAM選創見是因為終身保固 換貨不囉唆
MB這塊則是讓我等了一陣子 號稱目前最前的內顯 記憶體是內建DDR3 128mb 不是共享的喔
Power 朋友推薦的
Case使用應該是市面上唯一一台有前制式熱插拔硬碟 一般這種只有在伺服器上面出現
雖然他的面板適用塑膠的 至少讓我這個常會換硬碟的人是個很方便的功能

這個規格 一次開了四個VM還是很順 爽度一百 讚拉!~

2008年7月10日 星期四

Installing Plone 3 with the Unified Installer

Unified Installer

Unified Installer 是個可安裝在Unix-like系統上的安裝套件,他包含了zope、python、plone以及相關的lib。


Root or User Install

依照安裝者的權限所安裝出的環境也有些許不同:
The root install:

# 安裝在 /opt/ 底下
# 會把libz及libjpeg安裝到system libraries
# 新增一個名為plone的使用者,並會將相關的檔案擁有者設給plone。他也擁有配置及執行zope的權限。

The normal (non-root) user install:

# 安裝在 $HOME/ 底下
# 會把libz及libjpeg安裝到local libraries
# 只有該user能執行zope

Why Choose root or normal?

一般來說使用root帳號來安裝是最好的,因為安裝套件時是在安裝者的uid下被創造的,因此應該會有較高等級的控制及存取權限。
而normal user比較適合在測試或開發的環境下使用。

To ZEO or Not to Zeo?

zope 提供兩種執行方式 Client/Server 及 stand-alone
在Client/Server configuration架構,ZEO允許許多用戶端程序共用一個資料庫程序

The stand-alone Zope instance
適合較單純或測試環境使用

The ZEO Client/Server configuration
此架構有幾個優點適合給生產或開發平台使用:
更好的負載平衡選項
執行script功能
更好的除錯功能


Running the Unified Installer

安裝時所需的套件

# gcc, the GNU Compiler Collection.
# g++, the C++ extensions for gcc.
# GNU make, the fundamental build-control tool.
# GNU tar. This is the version of tar on all Linux, BSD and OS X platforms, but not Solaris.
# bzip2 and gzip decompression packages. gzip is nearly standard; some platforms will require that bzip2 be installed.

安裝步驟:

解壓縮Unified Installer
tar zxf Plone-3.VERSION-UnifiedInstaller.tar.gz

切換到安裝套件的目錄
cd Plone-3.VERSION-UnifiedInstaller

Running install.sh
(如果要使用root身份安裝,請使用su root或是在命令前加上sudo)

ZEO Installation:

./install.sh zeo


Stand-Alone Zope Installation:

./install.sh standalone

接著可以稍微放鬆一下並看看安裝過程:
如果安裝程序未開始,這代表可能有所需的套件為安裝,安裝他並在安裝後在安裝一次Plone
如果安裝成功,你可以看到一些有關設定啟動Zope/Plone的指令,請注意admin的password,這是系統預設的密碼。相關的指令會紀錄在README.txt而密碼會紀錄在adminPassword.txt裡。
如果安裝失敗,請注意任何的錯誤或診斷訊息。如果你無法修復這些問題,你可以寄信給plone-setup mailing list請求幫忙,並請詳述有關你的系統資訊及所有錯誤訊息。

Checking your installation

你可以使用下列方式來測試動Zope/Plone是否有正確啟動:
打開瀏覽器並在位址列上輸入 http://localhost:8080,應該會看到Zope的歡迎訊息。



進入PLone,請輸入http://localhost:8080/Plone




進入Zope的管理介面,請輸入http://localhost:8080/manage




如果你無法進入,常見的問題是有別的程式也使用了相同的8080 port,更改port並再次啟動看看。另外防火牆的設定也是常見的問題之一。

以上參考 Installing Plone 3 with the Unified Installer

2008年6月13日 星期五

OSI model

OSI提供的是模型,不是規範,OSI是由ISO於1984年所發表的,描述資料如何在網路間傳遞,OSI將整個網路分為7層,各層各自負責各層的工作:



physical layer 實體層


資料傳送單位:0與1 =>bit
此層用來定義:接頭型式、電壓、電流、線材(傳輸媒介)、腳位等等....
負責位元的傳送與接收
設備:集線器,接收信號並將信號再生或放大,再從所有埠送出,但不檢視任何資料



Data link layer 資料連結層


資料傳送單位:frame,會將bit=>byte=>frame(框架)或是將網路層的訊息轉換成bit,供實體層傳輸
定址:使用MAC(6 bytes)
前3B:廠商代碼
後3B:流水號
傳送機制:CSMA/CD
定義上層協定,錯誤偵測(Error detection),網路拓撲,流量控制
將訊息格式化為frame,並加上包含目的與來源硬體位址的表頭(Header)
乙太網路資料連結層的兩個子層:
Media access control MAC,媒介存取控制
CSMA/CD

Logical link control LLC,邏輯連結控制
負責辨識網路層協定,透過LLC標頭得知該如何處理封包
設備:交換器、橋接器
當接收到資料時:
1.檢查資料完整(FCS,tailer)
2.檢查長度(>64bytes~<1500bytes)
3.目的地的MAC是自己才接收

Network layer 網路層

定址(IP)
Routing (繞送)
1.找到最近閘道器
2.資料送到最近目的地的閘道器
3.資料送達目的地
使用 IP協定(IPX、AppleTalk等等)
資料傳送單位:Package
設備:路由器


Transport Layer 傳輸層

多工
決定順序
Error Recovery 錯誤回復功能
TCP及UDP
資料單位:Segment
Data de-encapsulation
將資料切割與重組到資料串流中
流量控制
封包排序
確認
著名的TCP、UDP協定就是在此層


Session layer 會議層

建立管理拆除會談
單工半雙工全雙工



Presentation layer 表現層

將資料呈現給應用層
資料的轉換與編碼格式
壓縮、解壓縮、加密、解密等




Application layer 應用層

使用者真正跟電腦溝通的地方,所有會使用到網路的程式都可算是

backup Plone

最近想開始研究Plone,我想是沒有中文說明的關係吧,Plone在台灣似乎是很少討論,反倒是對岸的社群還滿多的。想說邊研究邊看原廠說明文件,一方面也可以加強自己的英文....................

一開始我想的第一個重點是備份,沒錯!因為如果玩壞了可以馬上利用備份來還原資料,這份文件是參考官方提共的說明http://plone.org/documentation/how-to/backup-plone/?searchterm=backup,有興趣的人可以自行去瀏覽


備份重點
Plone的主要幾個備分重點如下:
Zope database ,Plone的資料庫,主要的資料都在這裡,Zope database的資料庫存放路徑為 /安裝Plone的資料夾/zeocluster/server/var/ 底下,附檔名fs的就是資料庫
(3.1.5已經改為 安裝Plone的資料夾/zeocluster/var/filestorage)

Product,Plone提供很多Product用來擴充Plone的功能,這些額外安裝的Product大都放在/安裝Plone的資料夾/zeocluster/server/Products/底下

Zope configuration file ,Zope的設定檔,通常在 /安裝Plone的資料夾/zeocluster/server/etc/底下,名為zeo.conf

備分方式
上述這些都可以直接使用複製的方式複製在媒體上,除了資料庫。zope的db雖然也可以使用複製的方式來備份,但這並不百分之百代表db會完整的備份下來,尤其是在plone還在運

作的時候,要備份資料庫可以:
1.先將Plone停止,再備份資料庫

2.使用repozo.py 這隻script來備份資料庫,詳細說明請參考Backing up FileStorage files

3.使用Zope管理介面的備份工具
進入Zope的管理介面,在網址列輸入http://localhost:8080/mange,並點選左欄的Control_Panel



進入後,點選主畫面下方的Database Management



在點選你要備份的資料庫



按下PACK,這樣就完成備份

2008年6月12日 星期四

Plone 介紹



Plone 是個透過 web 使用的內容管理系統(CMS),架構在 Zope 之上,以 GNU GPL 授權釋出的開放原始碼軟體。Plone 常被用在文件出版或做為群組軟體之用,支援多種文字,強調可用性(accessibility),內建全文搜索功能,並可藉由安裝或卸除產品(products)來改變 Plone 網站的功能。

Plone 一般而言較少有安全漏洞的問題,但所需硬體資源較多。很合適作為組織內部的網站,但若要在網際網路上用 Plone 提供高承載的服務,最好要搭配一些網頁快取系統和╱或 ZEO 的分散式後端系統。

Plone的特色
安裝容易:透過Plone的安裝套件,您只需要輕鬆的點兩下即可完成Plone的安裝。
語系:Plone支援超過35種以上的語言,讓您可更輕鬆的使用Plone。
自由軟體:Plone與Linux一樣透過GNU方式發佈軟體,這使您可以自由的使用、修改此軟體。
支援性強:世界上有將近一千個Plone的開發團隊,這使得Plone有更強的支援性。
擴張性強:透過add-products的功能讓Plone可以安裝更多不同的功能



Plone 這個名字是為了向 Plone 這個來自英國伯明翰的電子樂團致敬而取的。

支援平台
Plone 支援 Windows, Linux, BSD, Mac OS X等平台,安裝方式也只需輕鬆的點兩下滑鼠就可以完成Plone的安裝。

知名採用網站
自由軟體基金會、美國中情局、教材交流網站 Connexions 等等的網站都是用 Plone 架設的。Plone 官方網站上有一個 網站清單和 提供 Plone 服務的公司清單。



歷史
由 Alan Runyan、Alexander Limi 與 Vidar Andersen 在 1999 年開始開發。
Plone 基金會於 2004 年成立,以處理和 Plone 的開發、宣傳和法律相關事務。

外部連結
官方網站

Plonebook — 免費的 PDF 電子書

Plone 的相關產品

Plone 示範檔

Plone 的 Wiki

介紹 Plone 的影片

2008年5月29日 星期四

Process Management

程序
在Linux底下,每觸發一個事件(通常是執行一個指令或程式),系統會將他設定成一個程序並給予一個ID,稱為PID,管理者就可以藉由這個PID來管理程序。另外系統也會依照觸發程序的使用者所擁有的權限給予程序適當的權限。

父程序與子程序
當一個程序又去觸發另一個程序時,第一個程序為父程序,新觸發的程序就稱為子程序。像我們所登入系統後會得到一個bash的shell,我們可以在這個bash而執行許多指令,假設我們在這個shell執行了/usr/bin/less這個指令,這個less的PID就稱為子程序,而bash就是他的父程序。
關於子程序與父程序的關係,可以使用pstree這支指令去觀察:
pstree 參數
-p 列出各程序的PID
-u 列出各程序的所屬帳號名稱

程序的觀察
前面所介紹的pstree指令,僅能列出子程序與父程序的關係,並不會顯示出程序的相關資訊,若要或得程序的詳細資訊可以使用ps這隻程式,他提供了程序的狀態、CPU、記憶體的使用情況等等:
ps 參數
在不加任何參數直接執行 ps時,只會列出使用者個人、有連結終端機的程序,如下:
[root@localhost tmp]# ps
PID TTY TIME CMD
2591 pts/1 00:00:00 bash
30891 pts/1 00:00:00 ps

然而只列出這些是不夠的,我們可以加入ㄧ些參數得到更多的資料:
a 顯示有連接終端機的所有行程
u 顯示有效使用者相關的程序
x 顯示未連結終端機的所有程序(通常是長期運作的的伺服行程)
l 較長、詳細的格式輸出(顯示nice值)

ps 常搭配 aux這三個參數使用,執行結果如下
[root@localhost ~]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 2112 704 ? Ss 08:02 0:01 init [5]
root 2 0.0 0.0 0 0 ? S< 08:02 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S< 08:02 0:00 [migration/0]
root 4 0.0 0.0 0 0 ? S< 08:02 0:00 [ksoftirqd/0]
root 5 0.0 0.0 0 0 ? S< 08:02 0:00 [watchdog/0]
root 6 0.0 0.0 0 0 ? S< 08:02 0:00 [events/0]
root 7 0.0 0.0 0 0 ? S< 08:02 0:00 [khelper]

user 該程序的使用者名稱
PID 該程序的PID
%CPU 使用CPU的百分比
%MEM 使用實體記憶體的百分比
VSZ 使用虛擬記憶體的大小
RSS 佔用固定的記憶體大小
TTY 運作的終端機,如果與終端機無關則顯示 ?
STAT 程序狀態,有以下幾種
R 程序執行中
S 程序睡眠中,可被喚醒
T 程序偵測或停止
Z 程序已停止,但父程序無法正常終止他
START 程序觸發時間
TIME 該程序實際使用CPU時間
COMMAND 程序指令名稱

相對於ps的靜態輸出,top提供了動態的輸出,top可以更即時的獲取程序狀態:
top 參數
-d 更新的秒數,預設是五秒更新一次
-b 通常會搭配資料流重導向來將批次的結果輸出成為檔案
-n 指定觀察的次數,常與-b搭配
-p 指定PID
在top執行時可用的快速鍵:
?:顯示可用的快速鍵
P:以CPU的使用率進行排序
M:以記憶體的使用率進行排序
N:以PID進行排序
k:給某PID傳送信號
r:重新設定某PID的nice值
top的執行畫面如下:
top - 14:51:28 up 7:05, 3 users, load average: 0.01, 0.00, 0.00
Tasks: 126 total, 2 running, 124 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.4%us, 0.6%sy, 0.0%ni, 98.6%id, 0.4%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 2075220k total, 571116k used, 1504104k free, 59064k buffers
Swap: 2031608k total, 0k used, 2031608k free, 305772k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2381 root 20 0 143m 61m 15m R 84.2 3.0 1:59.05 nautilus
2088 root 20 0 49148 19m 6016 S 3.9 1.0 0:38.33 Xorg
3372 root 20 0 2360 964 724 R 2.0 0.0 0:00.01 top
1 root 20 0 1948 768 560 S 0.0 0.0 0:01.04 init
2 root 15 -5 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root RT -5 0 0 0 S 0.0 0.0 0:00.00 migration/0
4 root 15 -5 0 0 0 S 0.0 0.0 0:00.11 ksoftirqd/0
5 root RT -5 0 0 0 S 0.0 0.0 0:00.00 watchdog/0
6 root 15 -5 0 0 0 S 0.0 0.0 0:00.01 events/0
7 root 15 -5 0 0 0 S 0.0 0.0 0:00.00 khelper
第一行為系統的已啟動時間,線上人數,平均負載:三個數字分別代表1、5、10分鐘
第二行為總程序數,這個例子為,126的程序,2個執行中,124個睡眠,0個已停止,0個zombie程序
第三行為CPU的整體負載
第四行為實體記憶體的使用情形
第五行為虛擬記憶體(swap)的使用情形
接下來的畫面就是各程序的狀態,與ps大致上都相同

程序的執行順序
在Linux系統中,每個程序都會擁有一個優先執行程序的屬性,利用該屬性能讓系統知道哪個程序比較重要需要先執行。當我們執行ps -l或top時會發現有兩個欄位,PRI(top為PR)和NI,這兩個欄位就是用來計算程序的執行順序的:
PRI Priority的縮寫,數值越小越優先執行
NI 系統給予我們可改變執行順序的值,需注意以下幾點:
一般使用者的NI值為0~19
一般使用者僅能調高NI值
一般使用者僅能調整自己的NI值
root的NI值為-20~19
程序執行順序=PRI+NI,我們可以透過修改NI值來決定程序的執行順序,一般來講有兩種修改的方法:
程序執行時就指定NI值(nice)
修改執行中程序的NI值(renice)

nice -n command
-n 調整的NI值
command 欲執行的指令
[root@localhost ~]# nice -n -7 vi&
[root@localhost ~]# ps -l
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
4 R 0 3292 3289 0 80 0 - 1493 - pts/1 00:00:00 bash
4 T 0 3387 3292 0 73 -7 - 1530 signal pts/1 00:00:00 vi
這個例子我設定vi的NI為-7,並在背景執行,並使用ps -l觀察

renice number PID
number 欲設定的NI值
PID 欲設定程序的PID
例:
[root@localhost ~]# ps -l
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
4 R 0 3292 3289 0 80 0 - 1493 - pts/1 00:00:00 bash
4 T 0 3387 3292 0 73 -7 - 1530 signal pts/1 00:00:00 vi
4 R 0 3397 3292 0 80 0 - 1430 - pts/1 00:00:00 ps
延用剛才的範例,我已經將vi的NI設為-7,並得知PID為3387,現在將NI值改成10:
[root@localhost ~]# renice 10 3387
3387: old priority -7, new priority 10
[root@localhost ~]# ps -l
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
4 R 0 3292 3289 0 80 0 - 1493 - pts/1 00:00:00 bash
4 T 0 3387 3292 0 90 10 - 1530 signal pts/1 00:00:00 vi
4 R 0 3399 3292 0 80 0 - 1431 - pts/1 00:00:00 ps
NI值真的變成10了!

程序的管理
前面只提到程序的觀察,再來要介紹管理程序的指令
再來介紹 kill這個指令,這個指令可透過傳遞信號來管理程序的執行狀態,kill的語法如下:

kill -single PID
single 傳給程序的信號代碼
PID 該程序的PID
另外 -l參數會列出可用的信號清單
一般常用的信號有:
代碼 名稱 內容
1 SIGHUP 接收到此信號後,程序會重新讀取自己的組態檔,類似重新啟動的功能
2 SIGINT 中斷、停止執行,跟Ctrl+C 有同樣的作用
9 SIGKILL 強制結束程序
15 SIGTERM 以正常程序中止程序

假設我目前有個程序狀態顯示為 Z,而他的 PID為4100,要將他強制結束可以這樣:
[root@localhost ~]# kill -9 4100
要重新啟動的話也只要將信號代碼改成 1就行了:
[root@localhost ~]# kill -1 4100

除了代碼,也可以直接使用信號名稱:
[root@localhost ~]# kill -TERM 2569
另外,若未設定任何參數,kill預設會傳送 SIGTERM(15)

另一個跟 kill有關的是 killall,使用 kill必須要知道程序的PID,而 killall則是要知道程序的指令名稱:
[root@localhost ~]# killall -9 vi
相關參數:
i interactive,互動式,當要刪除時會先詢問使用者
I 忽略大小寫



相關指令
檢視目前記憶體使用狀況
free 參數
-b 以bytes為單位
-k 以Kbytes為單位
-m 以Mbytes為單位
-g 以Gbytes為單位
-t 顯示實體與swap記憶體總量
執行結果如下:
[root@localhost ~]# free -m
total used free shared buffers cached
Mem: 2026 554 1471 0 58 299
-/+ buffers/cache: 196 1829
Swap: 1983 0 1983