2007年11月11日 星期日

磁帶機使用(轉貼)

磁帶機的簡單使用
2007-10-24

環境:Ubuntu 7.04 feisty, HP DAT-72 usb外置磁帶機。
基本概念

*
磁帶是線性存放裝置,沒有什麼分區表的概念,磁頭在哪裡,就從哪裡開始讀。
*
磁帶機好像只能用root用戶操作。
*
磁帶上可以劃分存儲空間,每個存儲空間有一個file number,從0開始順序排列。
*
磁頭在存儲空間中的位置用block number來表示,0代表開始,大於0的整數代表塊,比如39代表磁頭在本file number的第39塊的位置,而-1則代表磁頭位於本file number的結尾。
*
同樣一部磁帶機,用/dev/st0時是當自動回卷設備使用,每次操作完成之後,磁頭都返回file number=0, block number=0, BOT的位置;而用/dev/nst0調用時,操作完成時磁頭就停在那個位置,不會回到開頭。
*
使用nst非回卷方式,用tar tvf列檔,只有當block number=0時才能出內容,並且列完之後block number為大於0的整數,注意這並不代表本段存儲空間的結尾(-1)。

由於磁帶機本身具有壓縮功能,所以添加檔的時候不建議指定zip或者bz2壓縮,因為如果一點點壓縮後的資料損壞,會導致全部內容不可識別;如果的確需要壓縮的話,可以壓縮成本地檔再存儲到磁帶上,減少對其他檔的影響。
自動回卷的使用方式

這種方式比較簡單,用tar直接操作即可,基本上和tar操作本地檔相同。

往新磁帶上存儲檔,注意如果磁帶上已有檔,會被覆蓋掉:

tar cvf /dev/st0 file_to_store

向磁帶上添加檔:

tar rvf /dev/st0 file_to_store

更新磁帶上的同名檔:

tar uvf /dev/st0 file_to_store

列出磁帶上的現有檔:

tar tvf /dev/st0

刪除磁帶上的檔:

tar vf /dev/st0 --delete file_to_delete

但我使用這個命令的時候總是提示錯誤,檔倒是刪掉了,可查看的時候也總有錯誤資訊,難道是無法刪除,或者只能全部xvf出來再存到磁帶上?不過我們也應當養成一個好的習慣,每次向磁帶機存儲檔的時候一定要在檔案名中帶上日期標記。
非自動回卷的使用方式

一般這樣使用,都是用到多個存儲空間file number的時候;如果還是一個存儲段,只是手工移動檔指標就沒有什麼意義了。

在操作上,檔的存儲方式和自動回卷是基本相同的,不同之處在於要注意磁頭的位置,並且手工進行必要的位移,以一個新磁帶的操作為例來說明(status我只截取有用的部分顯示):

# mt -f /dev/nst0 status
file number = 0
block number = 0
General status bits on (41010000):
BOT ONLINE IM_REP_EN

存入一個新的檔A

# tar cvf /dev/nst0 A
A
# mt -f /dev/nst0 status
file number = 1
block number = 0
General status bits on (81010000):
EOF ONLINE IM_REP_EN

注意這時磁頭已經移動到了第二段存儲空間了,現在再存入一個新的檔B,當然BA是不在一個存儲空間中的:

# tar cvf /dev/nst0 B
B
# mt -f /dev/nst0 status
file number = 2
block number = 0
General status bits on (81010000):
EOF ONLINE IM_REP_EN

磁頭又移動到第三段存儲空間了,如果要查看剛才存的第二段存儲空間中的內容,需要先移動磁頭:

# mt -f /dev/nst0 bsf 2
# mt -f /dev/nst0 status
file number = 0
block number = -1
General status bits on (1010000):
ONLINE IM_REP_EN

# mt -f /dev/nst0 fsf 1
# mt -f /dev/nst0 status
file number = 1
block number = 0
General status bits on (81010000):
EOF ONLINE IM_REP_EN

由於有存儲空間結束標記,所以這裡採用退21的方式,詳細的磁頭移動方式可以看man mt。然後查看文件列表:

# tar tvf /dev/nst0
-rw-r--r-- root/root 21194792 2007-10-24 11:37 B
# mt -f /dev/nst0 status
file number = 1
block number = 2070
General status bits on (1010000):
ONLINE IM_REP_EN

列出檔清單之後,磁頭停在了檔結束的位置,但不是存儲空間的結尾。現在移動磁頭到本段存儲空間的開始,並且添加檔C

# mt -f /dev/nst0 bsf 1
# mt -f /dev/nst0 status
file number = 0
block number = -1
General status bits on (1010000):
ONLINE IM_REP_EN

# mt -f /dev/nst0 fsf 1
# mt -f /dev/nst0 status
file number = 1
block number = 0
General status bits on (81010000):
EOF ONLINE IM_REP_EN

# tar rvf /dev/nst0 C
C
# mt -f /dev/nst0 status
file number = 2
block number = 0
General status bits on (81010000):
EOF ONLINE IM_REP_EN

首先還是要移動磁頭,到這裡基本上可以發現mtfsfbsf的規律了,fsf是磁頭向前移動,並且總是停留在block number = 0的位置,而bsf是磁頭向後移動,總是停留在 block number = -1的位置。添加完成檔之後,磁頭又定位到了第三個存儲空間(下一個)的開始。現在我們依然是移動磁頭到第二段存儲空間開始,並且用覆蓋方式添加檔 D

# mt -f /dev/nst0 bsf 2
# mt -f /dev/nst0 fsf 1
# mt -f /dev/nst0 status
file number = 1
block number = 0
General status bits on (81010000):
EOF ONLINE IM_REP_EN

# tar cvf /dev/nst0 D
D
# mt -f /dev/nst0 status
file number = 2
block number = 0
General status bits on (81010000):
EOF ONLINE IM_REP_EN

D是用覆蓋方式添加的,所以剛才添加的檔BC現在應該都消失了:

# mt -f /dev/nst0 bsf 2
# mt -f /dev/nst0 fsf 1
# mt -f /dev/nst0 status
file number = 1
block number = 0
General status bits on (81010000):
EOF ONLINE IM_REP_EN

# tar tvf /dev/nst0
-rw-r--r-- root/root 34201298 2007-10-24 11:57 D
# mt -f /dev/nst0 status
file number = 1
block number = 3341
General status bits on (1010000):
ONLINE IM_REP_EN

完成,回卷磁帶,從開始一直tvf

# mt -f /dev/nst0 rewind
# tar tvf /dev/nst0
-rw-r--r-- root/root 341054 2007-10-24 11:37 A

# tar tvf /dev/nst0
# tar tvf /dev/nst0
-rw-r--r-- root/root 34201298 2007-10-24 11:57 D

# tar tvf /dev/nst0
# tar tvf /dev/nst0

# tar tvf /dev/nst0
tar: /dev/nst0: Cannot read: Input/output error
tar: At beginning of tape, quitting now
tar: Error is not recoverable: exiting now

# mt -f /dev/nst0 status
file number = 2
block number = -1
General status bits on (9010000):
EOD ONLINE IM_REP_EN

現在,能看懂這個了麼?我用空行隔開的位置正好是block number0的位置。還有一些其他的操作就比較簡單了:

出帶,將磁帶卷至初始位置然後從磁帶機內彈出
# mt –f /dev/nst0 offline

清除磁帶中的所有內容,特慢,還傷帶,輕易不要用
# mt –f /dev/nst0 erase

我的幾個疑問

*
如何刪除file number
*
既然磁帶是線性存儲,如果向前面一個file number中添加檔,存儲空間不夠怎麼辦?

小結

搞明白磁帶機的存儲方式和基本操作,用起來就簡單了。個人感覺如果要存的檔數量不多,尤其是只需要存幾個大檔的情況,直接用自動回卷方式,只使用一個存儲空間就可以了,這樣操作比較簡單。如果一定要用磁帶存儲複雜結構的資料,可以考慮手工在各個存儲空間之間來回切換的方式,原理都是一樣,只是更高一點點的技巧和小心。

同時,保存一份磁帶上現有檔的索引也是非常有必要的(tvf的結果),既方便檔的查找,也可以由此推算出磁帶上的剩餘空間大小。
參考




How to use the DAT-tape with Linux
This document describes how to use the DAT-tape standing besides Gettysburg with the Linux machine cs-zz12. It asumes some familiarity with Linux or other UNIX-systems. It is itentionaly kept short, so that you can find the important information quickly. If you are in a hurry, check the typical sessions section.
Tape organisation
The tape is structured in multiple files which are in a sequential order. The individual files are usually tar-archives. You can always append new files (tar-archives) to the tape (if there is enough space left).
Handling the tape
Insert the tape softly with the arrow on the upper side, pointing in the direction of the drive.

It will then be sucked in automatically. Ejecting the tape is done with the mt-command (see below).

Important: Before the first "mt" or "tar" command, you must switch the SCSI Switch to "1". Otherwise the system will fail to recognize the SCSI devices (including the tape drive).
Tape operation
You can operate the tape with the command "mt" (magnetic tape). You use it like this: "mt -f /dev/nst0 command". For more detailed information, see the man page. Examples are given below. The most important commands are:

* stat: prints the current status of the tape such as
o file number: The number of the file where the tape currently is (where 0 is the first file, -1 is the last).
o block number: The block number in the current file (here too, 0 is the first block and -1 is the last one).
* rewind: rewind the tape to its beginning.
* fsf : Forward space files. This is also useful to get from the last block of one file to the first block of the next file.
* bsf : Backward space files.
* eom: Wind to end of media. Useful to append new files to the end of the tape.
* offline: Rewind the tape and eject it.

Examples for the mt-command

* To get the status of the tape: mt -f /dev/nst0 stat
* Rewind the tape to the start: mt -f /dev/nst0 rewind
* Wind to the next file on tape: mt -f /dev/nst0 fsf 1

Transfering data to and from the tape
You usually do this with the "tar" command. "Tar" always needs the parameter "-f" with the corresponding device, in this case "/dev/nst0". The parameter "-v" (verbose) is also suggested. The other parameters you usually need are:

* -c: Create (overwrite) tar-archive. If you overwrite a tar-file which is not the last one on the tape, all files after the overwritten one are lost!
* -x: Extract from tar-archive at current position on tape.
* -t: List contents of tar-archive at current position on tape.

Examples for tar-command

* List the contents of the next tar-file on the tape: tar -tvf /dev/nst0
* Put the directory (or files and directories) (with all its sub-directories) at the current position on tape: tar -cvf /dev/nst0
* Extract everything from the next tar-file on the tape into the current directory: tar -xvf /dev/nst0
* Extract (only) from the next tar-file on the tape into the current directory: tar -xvf /dev/nst0

Typical sessions
Backup / Store

1. Insert tape in tape drive and probably switch SCSI Switch to one.
2. Check status of tape: mt -f /dev/nst0 stat
3. Probably go to end of tape: mt -f /dev/nst0 eom
4. Store on tape: tar -cvf /dev/nst0
5. Rewind and eject tape: mt -f /dev/nst0 offline

Restore

1. Insert tape in tape drive and probably switch SCSI Switch to one.
2. Check status of tape: mt -f /dev/nst0 stat
3. Go to the directory where you want to restore your file(s).
4. Go to the right file on the tape with the following commands:
* Check file number and position in file: mt -f /dev/nst0 stat
* Advance one file: mt -f /dev/nst0 fsf 1
* View contents of tar-file: tar -tvf /dev/nst0
* Go back one file: mt -f /dev/nst0 bsf 1
* If you are in the last block of a file and you should be at the beginning of the file, do the following:
1. mt -f /dev/nst0 bsf 1
2. mt -f /dev/nst0 fsf 1
And check with: mt -f /dev/nst0 stat
5. Extract your file(s): tar -xvf /dev/nst0 []
6. Rewind and eject tape: mt -f /dev/nst0 offline

Remote operation
If your tape drive is in another machine than the machine you want to backup from, you can use the same tar-commands as described above with one little change: Login to the machine where the data is and instead of the tar-archive filename /dev/nst0, you specify hostname:/dev/nst0 (where hostname is the name of the machine where the tape-drive is). If you need to be another user on the machine with the drive to access the tape, you can even use the filename user@hostname:/dev/nst0.

The mt command must still be executed on the machine where the tape drive is. There is no remot-mt as far as I know.
Last change: 21 February 2001
rauch@inf.ethz.ch

2007年11月8日 星期四

掛載SCSI磁帶機到HP DL380(RHEL3)上

狀況:Server主機無法使用磁帶機!
機器:HP ProLiant DL 380 G4 安裝RHEL3(Update4)
裝置:HP storgeworks DAT72(SCSI介面)
目的:如何正確掛載磁帶機上去,好正常運作!進行備份作業。

經查詢一些網路文件後,說是HP這款機器,
若是裝Linux Kernel 2.4的話,
會有cciss controller(SCSI陣列控制器)找不到磁帶機設備的問題,
必須在開機後,手動載入。

http://www.cpqlinux.com/cciss-tape.html
這篇文章可以參考一下!

一般Rad Hat的設備配置,
磁帶機設備會是/dev/st0甚至是/dev/st1。

也就是說,當我們用磁帶機命令查詢狀況時,
[root@dbsrv root]#mt -f /dev/st0 status
應該會有一些訊息出現!
可是在没有正確載入磁帶機設備的情形下,
我看到的結果是...

[root@dbsrv root]# mt -f /dev/st0 status
/dev/st0: No such device

哇哩咧!没有這個設備...天啊!那我的磁帶機不就...
磁帶機可是備份機制不可或缺的角色耶,
當然要趕緊讓它能正常運作!OK!

先檢查一下磁帶機設備要用得到的module有没有。
#lsmod | grep st

要是没有的話,可以用modprobe指令手動載入。
#modprobe st

好,有了支援的模組,
接下來重新註冊scsi設備到cciss controller裡頭。

[root@dbsrv root]# ls -l /proc/driver/cciss
total 0
-rw-r--r-- 1 root root 0 Nov 9 12:12 cciss0

看到控制器的文件了!註冊吧。
[root@dbsrv root]#echo "engage scsi" > /proc/driver/cciss/cciss0

若是你的機器控制器文件不至一個,
可以用迴圈處理,不必笨笨的一個一個echo。

#for x in /proc/driver/cciss/cciss[0-9]*
#do
#echo "engage scsi" > $x
#done

在那個echo "engage scsi"指令之後,會在/proc/scsi目錄下產生和cciss0有關的文件。

讓我們再一次檢查硬體資訊。用dmesg。
[root@dbsrv root]# dmesg | grep st0
Attached scsi tape st0 at scsi1, channel 0, id 0, lun 0

好像有抓到st0裝置了哦!再下一次磁帶機指令確認狀況!
[root@dbsrv root]# mt -f /dev/st0 status
SCSI 2 tape drive:
File number=-1, block number=-1, partition=0.
Tape block size 0 bytes. Density code 0x0 (default).
Soft error count since last status=0
General status bits on (50000):
DR_OPEN IM_REP_EN

哈!哈!哈!任務完成!
磁帶機終於能用了。

附帶說明,網路上看到的文件是說,若還是抓不到,
還有兩個指令可強制掃描磁帶機設備。
#echo "rescan" > /proc/scsi/cciss0/1
或是
#echo "rescan" > /proc/driver/cciss/cciss0
不過由於我的狀況是只要echo "engage scsi"就可以把裝置抓到,所以不知道以上那兩個指令有没有差啦。
大家針酌用囉。

OK!狀況好像解除,但是...
只要重新開機,那個echo "engage scsi"都要手動做一次,不是很煩嗎?
所以我當然要能夠讓echo "engage scsi"可以在開機時自動執行才對。

把之前那個迴圈拿來好好運用吧。
vi一個命令稿scsiengage存到/etc/init.d/路徑下。
內容:
#!/bin/sh
# chkconfig: 345 99 01
# description: engage scsi devices to cciss controller
# /etc/rc.d/init.d/scsiengage
# This script file is created by WuKuoHoung 2007/11/09

modprobe st

for x in /proc/driver/cciss/cciss[0-9]*
do
echo "engage scsi" > $x
done

編輯好後,用chkconfig管理!
別忘了加上可執行的檔案屬性。
[root@dbsrv root]# chmod u+x /etc/init.d/scsiengage
[root@dbsrv root]#chkconfig --add scsiengage
[root@dbsrv root]#chkconfig --list scsiengage
scsiengage 0:off 1:off 2:off 3:on 4:on 5:on 6:off
[root@dbsrv bk]# find /etc/ -type l | grep scsiengage
/etc/rc.d/rc0.d/K01scsiengage
/etc/rc.d/rc1.d/K01scsiengage
/etc/rc.d/rc2.d/K01scsiengage
/etc/rc.d/rc3.d/S99scsiengage
/etc/rc.d/rc4.d/S99scsiengage
/etc/rc.d/rc5.d/S99scsiengage
/etc/rc.d/rc6.d/K01scsiengage

好了!chkconfig自動幫我們建好在開關機自動執行的link了。
要注意的是,用echo "engage scsi"之後,註冊好的scsi裝置,是不能再卸除的。除非關機!
所以這個scsiengage命令稿並没有像其他在/etc/init.d/的命令稿,
有著start|stop|restart|reload|status等啓動參數可用。因為没必要!了乎。

2007年11月5日 星期一

LAMP建置下載參考用

在一台linux上安裝Apache2 PHP4 MySQL4 等配套的套件,下載網址。

Apache v2.0.54 官網: http://www.apache.org
http://www.apache.org/dist/httpd/httpd-2.0.54.tar.gz [7.16MB]

PHP v4.3.11 官網: http://www.php.net
http://cn.php.net/distributions/php-4.3.11.tar.gz [4.64MB]

Zend Optimizer v2.5.10 官網: http://www.zend.com
http://downloads.zend.com/optimizer/2.5.10/ZendOptimizer-2.5.10-linux-glibc21-i386.tar.gz [3.36MB]

MySQL v4.0.24 官網: http://www.mysql.com
http://ftp.stu.edu.tw/pub/Unix/Database/Mysql/Downloads/MySQL-4.0/mysql-4.0.24.tar.gz [16.1MB]

GD Library v2.0.33 官網: http://www.boutell.com/gd/
http://www.boutell.com/gd/http/gd-2.0.33.tar.gz [573KB]

FreeType v2.1.10 官網: http://www.freetype.org
http://savannah.nongnu.org/download/freetype/freetype-2.1.10.tar.gz [1.31MB]

Jpeg v6b 官網: http://www.ijg.org
ftp://ftp.uu.net/graphics/jpeg/jpegsrc.v6b.tar.gz [598KB]

LibPNG v1.2.8 官網: http://www.libpng.org/pub/png/
http://switch.dl.sourceforge.net/sourceforge/libpng/libpng-1.2.8.tar.gz [498KB]

OpenSSL v0.9.7g 官網: http://www.openssl.org
http://www.openssl.org/source/openssl-0.9.7g.tar.gz [2.98MB]

vsftpd v2.0.3 官網: http://vsftpd.beasts.org
ftp://vsftpd.beasts.org/users/cevans/vsftpd-2.0.3.tar.gz [149KB]

zlib v1.2.2 官網: http://www.gzip.org/zlib/

RHEL3(update4)手動更新AMP

基於一些管理的需求,我所管理的一部HP DL380 主機,要能跑AMP!
也就是Apache+MySQL+PHP。
一開始建置主機環境時,是安裝RHEL3(update4)Server環境,
但我現在要它能跑Apache2,MySQL5以及PHP5。
因此之前裝的套件,我都不能再用了。

也由於我們買的RHEL3並没有完成註冊,
而要更新套件我也不想去找原廠的服務,
於是只有自已來手動更新了!

網路上對RHEL3更新AMP的文件不好找,
我原本有以CentOS替代的念頭,
但想到這個改裝OS的大動作,要是主管問起一些奇奇怪怪的問題,
我可能不好回應!

還是維持OS的版本好了!


步驟大致有12個!簡述如下:
Step 1: 配合apache2,更新zlib
Step 2:安裝 OpenSSL
Step 4:安裝支援jpeg的套件
Step 5:加裝freetype
Step 6:加裝libpng
Step 7:安裝 GD Library
Step 8:安裝libiconv
Step 9:進行Apache更新
Step 10:安裝MySql5
Step 11:安裝php5
Step 12:進行 Zend Optimizer

要安裝的套件原始碼tarball
#wget http://ftp.isu.edu.tw/pub/Sun/freeware/SOURCES/zlib-1.2.3.tar.gz
#wget http://ftp.isu.edu.tw/pub/FreeBSD/ports/distfiles/openssl-0.9.7g.tar.gz
#wget http://ftp.acc.umu.se/pub/gnome/sources/libxml2/2.6/libxml2-2.6.16.tar.gz
#wget http://ftp.isu.edu.tw/pub/Unix/GNU/ftp/gnu/ghostscript/jpegsrc.v6b.tar.gz
#wget http://ftp.isu.edu.tw/pub/Sun/freeware/companioncd/sources/freetype-2.1.10.tar.gz
#wget http://ftp.isu.edu.tw/pub/Sun/freeware/SOURCES/libpng-1.2.8.tar.gz
#wget http://ftp.isu.edu.tw/pub/Sun/freeware/SOURCES/gd-2.0.33.tar.gz
#wget http://ftp.ntu.edu.tw/gnu/gnu/libiconv/libiconv-1.10.tar.gz
#wget http://apache.cdpa.nsysu.edu.tw/httpd/httpd-2.0.54.tar.gz
#wget http://downloads.zend.com/optimizer/2.5.10/ZendOptimizer-2.5.10-linux-glibc21-i386.tar.gz

OK,找到一些資料後,開始動手...

Step 1: 配合apache2,更新zlib
#wget http://ftp.isu.edu.tw/pub/Sun/freeware/SOURCES/zlib-1.2.3.tar.gz
#tar zxvf zlib-1.2.3.tar.gz
#cd zlib-1.2.3
#./configure
ps/若是以前裝過zlib,可以不指定路徑,不然建議用 ./configure --prefix=/usr/local/zlib

#make
#make install

Step 2:安裝 OpenSSL
#wget http://ftp.isu.edu.tw/pub/FreeBSD/ports/distfiles/openssl-0.9.7g.tar.gz
#tar zxvf openssl-0.9.7g.tar.gz
#cd openssl-0.9.7g
#./config --prefix=/usr/local/ssl --openssldir=/usr/local/ssl
#make
#make install
#ln -s /usr/local/ssl /usr/lib/ssl

ps/OpenSSL安裝時,也建議用以下這方式,參數略有不同。
#cd openssl-0.9.7g
#./config --prefix=/usr/local/ssl --openssldir=/usr/local/ssl shared zlib
#make
#make install
ln -s /usr/local/ssl /usr/lib/ssl

Stpe 3:支援xml用的libxml
#wget http://ftp.acc.umu.se/pub/gnome/sources/libxml2/2.6/libxml2-2.6.16.tar.gz
ps/我常去找套件的義守大學FTP伺服器,剛好没有這個,還好用google找到另一個載點。

#tar -zxvf libxml2-2.6.16.tar.gz
#cd libxml2-2.6.16
#./configure
ps/可不必指定路徑,看參考文件是說安裝php可能找不到它,因為PHP5只支持libxml2-2.5.10以上版本!

#make
#make install


Step 4:安裝支援jpeg的套件、### jpeg ### jpegsrc.v6b.tar.gz ###
#wget http://ftp.isu.edu.tw/pub/Unix/GNU/ftp/gnu/ghostscript/jpegsrc.v6b.tar.gz
#tar zxvf jpegsrc.v6v.tar.gz
#cd jpeg-6b
ps/接下來有點麻煩,竟然要自己手動建目錄,可能是編譯文件没定義進去吧?

#mkdir /usr/local/jpeg
#mkdir /usr/local/jpeg/bin
#mkdir /usr/local/jpeg/lib
#mkdir /usr/local/jpeg/include
#mkdir /usr/local/jpeg/man
#mkdir /usr/local/jpeg/man/man1
ps/注意,是數字一,別搞錯了。

#./configure --prefix=/usr/local/jpeg --enable-shared
ps/configure 之後的參數 一定要有--enable-shared,不然不會生成共享的函式庫。

#make
#make install 或 make install-lib


Step 5:加裝freetype
#wget http://ftp.isu.edu.tw/pub/Sun/freeware/companioncd/sources/freetype-2.1.10.tar.gz
#tar zxvf freetype-2.1.10.tar.gz
#cd freetype-2.1.10
#./configure --prefix=/usr/local/freetype
#make
#make install


Step 6:ksr 加裝libpng
若是用libpng-1.2.8.tar.gz有問題,可改用libpng-1.2.18.tar.gz。
#wget http://ftp.isu.edu.tw/pub/Sun/freeware/SOURCES/libpng-1.2.8.tar.gz
#tar -zxf libpng-1.2.18.tar.gz
#cd libpng-1.2.8
#./configure --prefix=/usr/local/libpng(可能會提示說找不到命令script)

//////////////////////////////////////////////////////////////////////////////////////////////////////////
There is no "configure" script in this distribution of
libpng-1.2.8.有錯誤時的提示內容。
Instead, please copy the appropriate makefile for your system from the
"scripts" directory. Read the INSTALL file for more details.
Update, July 2004: you can get a configure based distribution
from the libpng distribution sites. Download the file
libpng-1.2.8-config.tar.gz
////////////////////////////////////////////////////////////////////////////////////////////////

#make
#make install

ps/注意:如果提示找不到命令script則先執行以下命令。手動生成Makefile!
#cp scripts/makefile.linux makefile


Step 7:安裝 GD Library
#wget http://ftp.isu.edu.tw/pub/Sun/freeware/SOURCES/gd-2.0.33.tar.gz
#tar -zxvf gd-2.0.33.tar.gz
#cd gd-2.0.33
#./configure --prefix=/usr/local/gd --with-jpeg=/usr/local/jpeg --with-freetype=/usr/local/freetype --with-png --with-zlib
#make
#make install

Step 8:安裝libiconv
#wget http://ftp.ntu.edu.tw/gnu/gnu/libiconv/libiconv-1.10.tar.gz
#tar -zxvf libiconv-1.10.tar.gz
#cd libiconv-1.10
#./configure --prefix=/usr/local/libiconv
#make
#make install

ps1/將iconv.h連接到php的安裝source檔的程序中,不然好像進行php 的make會有錯誤
ps2/以下命令備用
# cd /usr/src/php-5.1.2/ext/iconv/
# link /usr/local/libiconv/include/iconv.h iconv.h


Step 9:進行Apache更新
因為php5一定要用Apache2,安裝時要注意一下版本!

cd httpd-2.0.54(php5安装环境需要apache2.0.46以上版本,下载时注意!)
#wget http://apache.cdpa.nsysu.edu.tw/httpd/httpd-2.0.54.tar.gz
#tar zxvf httpd-2.0.54.tar.gz
#./configure --prefix=/usr/local/apache --enable-module=so

ps/以下那行也行,針酌用。
#./configure --prefix=/usr/local/apache --enable-so --enable-ssl

#make
#make install


Step 10:安裝MySql5
到 http://downloads.mysql.com/archives.php 下載RPM即可!
MySQL-client-standard-5.0.27-0.rhel3.i386.rpm
MySQL-devel-standard-5.0.27-0.rhel3.i386.rpm
MySQL-server-standard-5.0.27-0.rhel3.i386.rpm
MySQL-shared-standard-5.0.27-0.rhel3.i386.rpm

#rpm -ivh MySQL-*

#rpm -ivh --nodeps MySQL-*

ps1/有可能提示需要安裝perl-DBI-1.32-9.i386.rpm,視狀況。
ps2/若有因為原套件的衝突。可以參考用...
#rpm -e --nodeps 套件名
移除之後應該就可以順利安裝了。

安裝完後,我們測一下資料庫是否正常運作了。
#service mysql start
ps/若是用service mysqld start會有問題, 因為它是舊的版本。

出現成功啓動的訊息後,登入看看...

#mysql -u root -p
Enter password:
因為剛裝好,密碼應該是空的。直接按Enter即可登入!

Welcome to the MySQL monitor. Commands end with ; or \g.
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>
mysql>select version();
+-----------------+
| version() |
+-----------------+
| 5.0.27-standard |
+-----------------+
1 row in set (0.05 sec)

OK了!exit出來吧。


Step 11:安裝php5
去php的官網找!
下載回來後解開它...
#tar -zxvf php-5.2.0.tar.gz
#cd php-5.2.0
#./configure \
--prefix=/usr/local/php \
--with-apxs2=/usr/local/apache/bin/apxs \
--with-xml \
--with-mysql \
--with-freetype-dir=/usr/local/freetype \
--with-gd=/usr/local/gd \
--with-zlib \
--with-jpeg-dir=/usr/local/jpeg \
--with-png-dir=/usr/local/libpng \
--with-iconv=/usr/local/libiconv \
--with-config-file-path=/usr/local/lib \
--disable-debug \
--enable-safe-mode \
--enable-trans-sid \
--enable-memory-limit \
--enable-short-tags \
--disable-posix \
--enable-exif \
--enable-ftp \
--enable-sockets
#make
#make install

ps/如果你順利完成install了,記得複制php.ini。
#cp php.ini-dist /usr/local/php/lib/php.ini

编辑apache配置文件httpd.conf
#vi /usr/local/apache/conf/httpd.conf(注意:为安装目录下配置文件)

要改幾個地方:
AddType application/x-tar .tgz下加一行
AddType application/x-httpd-php .php

找到#LoadModule php5_module modules/libphp5.so 把註解#去掉

找到DirectoryIndex index.html 追加index.php讓index.php可以做啓始頁面。

可能安裝時没訂好參數,user和group有錯誤,需修正。
找到User Group兩行。修改如下!
User apache
Group apache

再找#ServerName 把#去掉,修正成你正確的IP值。

最後是改DocumentRoot的值。把/usr/local/apache/htdocs改成你實際要存放網頁文件的路徑。

還有若是有設AddDefaultCharset的話,把它拿掉吧。有的網頁反而這樣才顯示正常。


#/usr/local/apache/bin/apachectl start 啓動apache

因為不是用rpm安裝,所以service httpd restart指令不用再用。
除非你有動手設定修改!

Step 12:進行 Zend Optimizer

#wget http://downloads.zend.com/optimizer/2.5.10/ZendOptimizer-2.5.10-linux-glibc21-i386.tar.gz
#tar zxvf ZendOptimizer-2.5.10-linux-glibc21-i386.tar.gz
#cd ZendOptimizer-2.5.10-linux-glibc21-i386
#./install
#cp data/5_0_x_comp/ZendOptimizer.so /usr/local/lib
ps/配置相對應的php.ini目錄,修改你所需的項目。

到你的網頁目錄下,編輯index.php 內容是:


OK!找台電腦,開啓FireFox或IE ...看到php的畫面,成功完成全部的套件安裝。

搜尋此網誌

本站大事記

這個部落格(網站)內容以分享LINUX和延伸出的技術文章為主!
特別是為了工作和進修需要,搜集了不少網站連結。
希望對來這裡觀文的朋友們,有提供一些有用的資訊或文章。
但這裡的文章中,也包含個人的心情扎記和隨興言談……
若是當中沒有對上你的口味,請多包涵!

原「琳娜絲與希斯寇的邂逅」,改名為「愛上琳娜絲」!

原「琳娜絲與希斯寇的邂逅」,改名為「愛上琳娜絲」!
--原序文--
就是當LINUX遇上CISCO啦!他們的結合還能作什麼事…不就是讓這個世界的網路,串…串起來啊…不然你們那能上這網站看部落格!