2009年5月20日 星期三

linux安裝程式的指令(apt-get、yum)

早期是用rpm
但後來fc,suse,centos,ubuntu都有發展出內建的一套介面程式
目前我有用過的就這幾套
大致上是
yum -->fc,centos,suse
yast -->suse
apt-get -->ubuntu(debian)
(當然..你想在ubuntu上使用yum或是centos上使用apt-get也是可以啦,自己裝一裝就是了)

安裝指令
yum install 套件名稱
apt-get install 套件名稱

搜尋指令
yum provides 關鍵字
apt-cache search 關鍵字


基本上..大概就這二個比較常用,其他像update,remove等參數都是同樣的用法

但在fc6上,我有遇到一個問題..就是用yum install 會無法安裝
它會顯示找不到檔案(那是因為fc6以後,它預設的更新站台己轉移)
要解決這個問題,需要去修改/etc/yum.repos.d/這個目錄下的幾個.repo檔
例如:fedora-core.repo這個檔案
修改原本的
#baseurl=http://download.fedora.redhat.com/pub/fedora/linux/core/$releasever/$basearch/os/

改成
baseurl=http://archives.fedoraproject.org/pub/archive/fedora/linux/core/$releasever/$basearch/os/


fc6的/etc/yum.repos.d/這個目錄下...預設有

fedora-core.repo fedora-legacy.repo
fedora-development.repo fedora-updates.repo
fedora-extras-development.repo fedora-updates-testing.repo
fedora-extras.repo

這幾個檔...原則上每個都要參照原本的路徑去修正
不然就會遇到類似
Error: Cannot find a valid baseurl for repo: extras
這樣的錯誤訊息 ----> 看最後是什麼關鍵字..就去改 fedora-xxxx.repo

這裡要說的是,suse預設是沒有這東西的,即使裝好yum,它的/etc/yum.repos.d/下仍然是空的
得自己新增一個abc.repo的檔案在該目錄下,如下範例

[base]
name=SUSE LINUX 10.0 - Base
#baseurl=ftp://ftp.gwdg.de/pub/opensuse/distribution/SL-10.0-OSS/inst-source/suse
mirrorlist=/etc/yum.repos.d/base.mirrors
enabled=1
gpgcheck=1
gpgkey=ftp://ftp.gwdg.de/pub/opensuse/distribution/SL-10.0-OSS/inst-source/pubring.gpg

相關的詳細資料,請參閱http://liquidat.wordpress.com/2005/10/16/setting-up-yum-on-suse-linux-100-3/


最後摘錄一些從 yum apt 常用指令索引看來的資料

APT 常用指令如下:

apt-get update
更新套件列表

apt-get dist-upgrade
升級 rpm

apt-cache search
搜尋套件,ex: apt-cache search httpd

apt-get install
安裝套件,這裡的套件安裝,會考慮到相依性的問題。 ex: apt-get install httpd

apt-get remove
移除套件,這裡的套件移除,也會考慮到相依性的問題。 ex: apt-get remove httpd

apt-get clean
清除安裝時下載的暫存套件原始檔案,位於 /var/cache/apt/archives

YUM 常用指令如下:

yum update
更新套件, ex: yum update httpd,如果只有 yum update ,會更新所有已經安裝的套件。

yum search
搜尋套件,ex: yum search httpd*,會搜尋所有跟 httpd 有關的套件。

yum install
安裝套件,這裡的套件安裝,會考慮到相依性的問題。 ex: yum install httpd

yum remove
移除套件,這裡的套件移除,也會考慮到相依性的問題。 ex: yum remove httpd

yum clean
清除安裝時下載的暫存套件原始檔案,位於 /var/cache/yum,因為這裡可以清除的項目很多,我最常用的是 yum clean all ,一次給他清掉 :p

yum list
列出套件名稱,用法常用有分以下幾種:

yum list updates
列出所有可以更新的套件

yum list installed
列出所有已安裝的套件

更多的中文參考資訊,可以見以下兩個網站:
YUM的使用
APT 的安裝、使用
早期是用rpm
但後來fc,suse,centos,ubuntu都有發展出內建的一套介面程式
目前我有用過的就這幾套
大致上是
yum -->fc,centos,suse
yast -->suse
apt-get -->ubuntu(debian)
(當然..你想在ubuntu上使用yum或是centos上使用apt-get也是可以啦,自己裝一裝就是了)

安裝指令
yum install 套件名稱
apt-get install 套件名稱

搜尋指令
yum provides 關鍵字
apt-cache search 關鍵字


基本上..大概就這二個比較常用,其他像update,remove等參數都是同樣的用法

但在fc6上,我有遇到一個問題..就是用yum install 會無法安裝
它會顯示找不到檔案(那是因為fc6以後,它預設的更新站台己轉移)
要解決這個問題,需要去修改/etc/yum.repos.d/這個目錄下的幾個.repo檔
例如:fedora-core.repo這個檔案
修改原本的
#baseurl=http://download.fedora.redhat.com/pub/fedora/linux/core/$releasever/$basearch/os/

改成
baseurl=http://archives.fedoraproject.org/pub/archive/fedora/linux/core/$releasever/$basearch/os/


fc6的/etc/yum.repos.d/這個目錄下...預設有

fedora-core.repo fedora-legacy.repo
fedora-development.repo fedora-updates.repo
fedora-extras-development.repo fedora-updates-testing.repo
fedora-extras.repo

這幾個檔...原則上每個都要參照原本的路徑去修正
不然就會遇到類似
Error: Cannot find a valid baseurl for repo: extras
這樣的錯誤訊息 ----> 看最後是什麼關鍵字..就去改 fedora-xxxx.repo

這裡要說的是,suse預設是沒有這東西的,即使裝好yum,它的/etc/yum.repos.d/下仍然是空的
得自己新增一個abc.repo的檔案在該目錄下,如下範例

[base]
name=SUSE LINUX 10.0 - Base
#baseurl=ftp://ftp.gwdg.de/pub/opensuse/distribution/SL-10.0-OSS/inst-source/suse
mirrorlist=/etc/yum.repos.d/base.mirrors
enabled=1
gpgcheck=1
gpgkey=ftp://ftp.gwdg.de/pub/opensuse/distribution/SL-10.0-OSS/inst-source/pubring.gpg

相關的詳細資料,請參閱http://liquidat.wordpress.com/2005/10/16/setting-up-yum-on-suse-linux-100-3/


最後摘錄一些從 yum apt 常用指令索引看來的資料

APT 常用指令如下:

apt-get update
更新套件列表

apt-get dist-upgrade
升級 rpm

apt-cache search
搜尋套件,ex: apt-cache search httpd

apt-get install
安裝套件,這裡的套件安裝,會考慮到相依性的問題。 ex: apt-get install httpd

apt-get remove
移除套件,這裡的套件移除,也會考慮到相依性的問題。 ex: apt-get remove httpd

apt-get clean
清除安裝時下載的暫存套件原始檔案,位於 /var/cache/apt/archives

YUM 常用指令如下:

yum update
更新套件, ex: yum update httpd,如果只有 yum update ,會更新所有已經安裝的套件。

yum search
搜尋套件,ex: yum search httpd*,會搜尋所有跟 httpd 有關的套件。

yum install
安裝套件,這裡的套件安裝,會考慮到相依性的問題。 ex: yum install httpd

yum remove
移除套件,這裡的套件移除,也會考慮到相依性的問題。 ex: yum remove httpd

yum clean
清除安裝時下載的暫存套件原始檔案,位於 /var/cache/yum,因為這裡可以清除的項目很多,我最常用的是 yum clean all ,一次給他清掉 :p

yum list
列出套件名稱,用法常用有分以下幾種:

yum list updates
列出所有可以更新的套件

yum list installed
列出所有已安裝的套件

更多的中文參考資訊,可以見以下兩個網站:
YUM的使用
APT 的安裝、使用

apache 的 rewrite

本篇文章節錄自Apache 重寫規則的常見應用 (rewrite)

主要記錄一下怎麼針對 *.host.com 去做 rewrite的動作


若今天要轉換www.username.domain.com的請求
到www.domain.com/username

對HTTP/1.1的請求包括一個Host: HTTP頭,我們能用下面的規則集重寫
http://www.username.domain.com/anypath 到 /home/username/anypath

Rewriteengine on
rewritecond %{HTTP_HOST} ^www\.[^.]+\.host\.com$
rewriterule ^(.+) %{HTTP_HOST}$1 [C]
rewriterule ^www\.([^.]+)\.host\.com(.*) /home/$1$2

這裡的 $1 $2 基本上就是對應前面的 ( ) 內的東西
例:$1 = username , $2 = /anypath

注:
rewritecond 條件重寫規則,當滿足上面定義的條件才會應用下面的重寫規則,
rewritecond 另有各種變量,請查閱相關文檔。

另外,可以開啟rewrite的log記錄來看一下是不是轉到莫名其妙的地方去了
可以查看:
http://w.yi.org/ftp/FAPM/apache/Apache2/zh/mod/mod_rewrite.html#rewriteloglevel
或直接加入下面二行

RewriteLog "/var/log/httpd/rewrite.log"
RewriteLogLevel 3


注意:
RewriteLogLevel指令設置重寫引擎日誌的詳細程度的級別。 默認級別0意味著不記錄,而9或更大的值意味著記錄所有的操作。

要關閉重寫引擎日誌,可以簡單地設此值為0,關閉所有的重寫操作記錄。

使用較高的Level值會使Apache服務器速度急劇下降! 重寫日誌使用大於2的Level值只用於調試!

本篇文章節錄自Apache 重寫規則的常見應用 (rewrite)

主要記錄一下怎麼針對 *.host.com 去做 rewrite的動作


若今天要轉換www.username.domain.com的請求
到www.domain.com/username

對HTTP/1.1的請求包括一個Host: HTTP頭,我們能用下面的規則集重寫
http://www.username.domain.com/anypath 到 /home/username/anypath

Rewriteengine on
rewritecond %{HTTP_HOST} ^www\.[^.]+\.host\.com$
rewriterule ^(.+) %{HTTP_HOST}$1 [C]
rewriterule ^www\.([^.]+)\.host\.com(.*) /home/$1$2

這裡的 $1 $2 基本上就是對應前面的 ( ) 內的東西
例:$1 = username , $2 = /anypath

注:
rewritecond 條件重寫規則,當滿足上面定義的條件才會應用下面的重寫規則,
rewritecond 另有各種變量,請查閱相關文檔。

另外,可以開啟rewrite的log記錄來看一下是不是轉到莫名其妙的地方去了
可以查看:
http://w.yi.org/ftp/FAPM/apache/Apache2/zh/mod/mod_rewrite.html#rewriteloglevel
或直接加入下面二行

RewriteLog "/var/log/httpd/rewrite.log"
RewriteLogLevel 3


注意:
RewriteLogLevel指令設置重寫引擎日誌的詳細程度的級別。 默認級別0意味著不記錄,而9或更大的值意味著記錄所有的操作。

要關閉重寫引擎日誌,可以簡單地設此值為0,關閉所有的重寫操作記錄。

使用較高的Level值會使Apache服務器速度急劇下降! 重寫日誌使用大於2的Level值只用於調試!

2009年5月18日 星期一

新增swap的大小

主機因故把swap都吃光了...
但又無法有效釋放....只好手動幫它增swap了
下述內容是從 2.2. 增加 Swap 空間 摘錄,若需要詳細內容
請自行前往
http://www.aliok.net/study/linux/rhl-cg-zh_TW-9/index.html
這邊閱讀

由於主機上己無空閒的磁區可供分割出新的swap分割區
於是就利用新增swap檔案的方式來增加swap空間

新增一個 swap 檔案:

請先決定新 swap 檔案的大小,然後乘以 1024 以取得磁碟區塊(block)的大小,例如 64MB 之 swap 檔案的區塊大小為 65536。

請以 root 身份在 shell 提示符號下輸入下列指令,並包括 count 等於區塊大小的數值:

dd if=/dev/zero of=/swapfile bs=1024 count=65536


並使用以下指令來設定 swap 檔案:

mkswap /swapfile


如要立即啟用 swap 檔案(非開機時自動啟動),請使用下列指令:

swapon /swapfile


如要在開機時啟動它,請編輯 /etc/fstab 以包含:

/swapfile swap swap defaults 0 0


下次系統開機時,它將會啟用新的 swap 檔案。

在增加新的 swap 檔案並啟用它後,請檢視 cat /proc/swaps 或 free 指令的輸出以確定它已經被啟用。

主機因故把swap都吃光了...
但又無法有效釋放....只好手動幫它增swap了
下述內容是從 2.2. 增加 Swap 空間 摘錄,若需要詳細內容
請自行前往
http://www.aliok.net/study/linux/rhl-cg-zh_TW-9/index.html
這邊閱讀

由於主機上己無空閒的磁區可供分割出新的swap分割區
於是就利用新增swap檔案的方式來增加swap空間

新增一個 swap 檔案:

請先決定新 swap 檔案的大小,然後乘以 1024 以取得磁碟區塊(block)的大小,例如 64MB 之 swap 檔案的區塊大小為 65536。

請以 root 身份在 shell 提示符號下輸入下列指令,並包括 count 等於區塊大小的數值:

dd if=/dev/zero of=/swapfile bs=1024 count=65536


並使用以下指令來設定 swap 檔案:

mkswap /swapfile


如要立即啟用 swap 檔案(非開機時自動啟動),請使用下列指令:

swapon /swapfile


如要在開機時啟動它,請編輯 /etc/fstab 以包含:

/swapfile swap swap defaults 0 0


下次系統開機時,它將會啟用新的 swap 檔案。

在增加新的 swap 檔案並啟用它後,請檢視 cat /proc/swaps 或 free 指令的輸出以確定它已經被啟用。

2009年5月5日 星期二

pure-ftpd + mysql + web_manage

之前己經建置過了,但沒仔細記錄
這次就好好的記錄起來吧~~
參考了很多地方...但總是有缺了一些狀況的說明...
首先先去下載二個檔案
1.pure-ftpd-1.0.22.tar.gz
2.pure-ftpd_user_manage-2.1.tar.tgz

然後就是一連串的安裝過程了...


首先安裝 pure-ftpd-1.0.22.tar.gz
解開後,到目錄下執行
./configure \
--prefix=/usr/local/pureftpd \
--with-mysql \
--with-paranoidmsg \
--with-shadow \
--with-welcomemsg \
--with-uploadscript \
--with-quotas \
--with-cookie \
--with-virtualhosts \
--with-virtualchroot \
--with-diraliases \
--with-sysquotas \
--with-ratios \
--with-ftpwho \
--with-throttling

#make
#make install
#cd configuration-file
#chmod u+x pure-config.pl
#cp pure-config.pl /usr/local/pureftpd/sbin/
#cp pure-ftpd.conf /etc/pureftpd/

到這裡算是做好pure-ftpd的準備工作
======================================================================
若遇到
configure: error: libmysqlclient is needed for MySQL support

則先安裝mysql-devel,即可解決這問題
(yum install mysql-devel)
以及
將/usr/lib64/mysql/内的libmysqlclient.so.15.0.0做個軟連結到/usr/lib下即可
PHP預設是去的 /usr/lib/搜尋的,所以會找不到

上面的資訊來自: E点废墟(www.xok.la) 详细出处参考:http://xok.la/2008/08/configure_error_cannot_find_libmysqlclient_under.html

======================================================================
接下來安裝 pure-ftpd_user_manage-2.1.tar.tgz
解開它
tar -xvzf pure-ftpd_user_manage-2.1.tar.tgz
然後從網頁去做設定
http://xxxxxxx/pure-ftpd_user_manage/install.php
照著它的步驟一步一步設定好

然後將它最後產生的pureftpd-mysql設定檔複製起來
將它存到 /etc/pureftpd/pureftpd-mysql.conf
(記得將install.php刪除)
接下來修改
/etc/pureftpd/pure-ftpd.conf

# MySQL configuration file (see README.MySQL)
MySQLConfigFile /etc/pureftpd/pureftpd-mysql.conf

# Minimum UID for an authenticated user to log in.
MinUID 100
------->這個要注意一下,利用mysql設定帳號時,選登入的身份時
所選的UID記得要比這個數字高才可以登入

======================================================================
然後...就是執行程式了
依照剛才拷貝的pure-config.pl以及pure-ftpd.conf的路徑
/usr/local/pureftpd/sbin/pure-config.pl /etc/pureftpd/pure-ftpd.conf
這樣即可順利開啟起來

之前己經建置過了,但沒仔細記錄
這次就好好的記錄起來吧~~
參考了很多地方...但總是有缺了一些狀況的說明...
首先先去下載二個檔案
1.pure-ftpd-1.0.22.tar.gz
2.pure-ftpd_user_manage-2.1.tar.tgz

然後就是一連串的安裝過程了...


首先安裝 pure-ftpd-1.0.22.tar.gz
解開後,到目錄下執行
./configure \
--prefix=/usr/local/pureftpd \
--with-mysql \
--with-paranoidmsg \
--with-shadow \
--with-welcomemsg \
--with-uploadscript \
--with-quotas \
--with-cookie \
--with-virtualhosts \
--with-virtualchroot \
--with-diraliases \
--with-sysquotas \
--with-ratios \
--with-ftpwho \
--with-throttling

#make
#make install
#cd configuration-file
#chmod u+x pure-config.pl
#cp pure-config.pl /usr/local/pureftpd/sbin/
#cp pure-ftpd.conf /etc/pureftpd/

到這裡算是做好pure-ftpd的準備工作
======================================================================
若遇到
configure: error: libmysqlclient is needed for MySQL support

則先安裝mysql-devel,即可解決這問題
(yum install mysql-devel)
以及
將/usr/lib64/mysql/内的libmysqlclient.so.15.0.0做個軟連結到/usr/lib下即可
PHP預設是去的 /usr/lib/搜尋的,所以會找不到

上面的資訊來自: E点废墟(www.xok.la) 详细出处参考:http://xok.la/2008/08/configure_error_cannot_find_libmysqlclient_under.html

======================================================================
接下來安裝 pure-ftpd_user_manage-2.1.tar.tgz
解開它
tar -xvzf pure-ftpd_user_manage-2.1.tar.tgz
然後從網頁去做設定
http://xxxxxxx/pure-ftpd_user_manage/install.php
照著它的步驟一步一步設定好

然後將它最後產生的pureftpd-mysql設定檔複製起來
將它存到 /etc/pureftpd/pureftpd-mysql.conf
(記得將install.php刪除)
接下來修改
/etc/pureftpd/pure-ftpd.conf

# MySQL configuration file (see README.MySQL)
MySQLConfigFile /etc/pureftpd/pureftpd-mysql.conf

# Minimum UID for an authenticated user to log in.
MinUID 100
------->這個要注意一下,利用mysql設定帳號時,選登入的身份時
所選的UID記得要比這個數字高才可以登入

======================================================================
然後...就是執行程式了
依照剛才拷貝的pure-config.pl以及pure-ftpd.conf的路徑
/usr/local/pureftpd/sbin/pure-config.pl /etc/pureftpd/pure-ftpd.conf
這樣即可順利開啟起來

2009年5月4日 星期一

建立Mass Virtual Hosting

前面記了一篇virtual host快速設定法
裡面有提到Mass Virtual Hosting的做法,但覺得不是很清楚
於是再去找了 Hayes’s Blog 所寫的 Mass Virtual Hosting
這一篇就真的很詳細了....把內容直接做個記錄
方便往後自己要設定時,有整理過的資料可以參考

以前要新增一個 Virtual Host, 都必須寫類似以下這幾行的code在設定檔裡,
然後重啟 apache, 這樣對於架設大量 vhost 的 server 也太辛苦了

< Virtualhost 111.123.231.220 >
ServerName www.i-bbs.tw
DocumentRoot /var/www/
< /Virtualhost >

趁著伺服器下線研究了好幾個方案, 最後選擇了用 rewrite 的方法加上一些修改..

Step1 : edit /usr/local/etc/apache22/httpd.conf ,
把 mod_rewrite.so 這個 module 打開 , 然後在最低部加上



RewriteLog /var/log/rewrite_log # 自訂 log 的 path
RewriteLogLevel 0 # level 一定要設 0, 不然噴出來的 log 會擠爆硬碟 :p
RewriteEngine on
RewriteMap lowercase int:tolower
RewriteMap vhost txt:/etc/vhost.map # vhost.map 的 path
RewriteCond %{REQUEST_URI} !^/icons/
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
RewriteCond ${vhost:%1} ^(/.*)$
RewriteRule ^/(.*)$ %1/$1 [L]

Step2 : edit /etc/vhost.map

#domain doc’s path
i-bbs.tw /usr/local/www/apache22/data/
www.i-bbs.tw /usr/local/www/apache22/data/www.i-bbs.tw
hayes.i-bbs.tw /usr/local/www/apache22/data/hayes.i-bbs.tw
mysql.i-bbs.tw /usr/local/www/apache22/data/phpMyAdmin

這裡有一個要注意的地方
由於我們要讓apache去讀取系統預設的/var/www以外的地方
所以得把selinux關掉(selinux的說明)
詳細做法-How to Disable SELinux
簡單來說...就是修改/etc/selinux/config 然後重開機就可以了
前面記了一篇virtual host快速設定法
裡面有提到Mass Virtual Hosting的做法,但覺得不是很清楚
於是再去找了 Hayes’s Blog 所寫的 Mass Virtual Hosting
這一篇就真的很詳細了....把內容直接做個記錄
方便往後自己要設定時,有整理過的資料可以參考

以前要新增一個 Virtual Host, 都必須寫類似以下這幾行的code在設定檔裡,
然後重啟 apache, 這樣對於架設大量 vhost 的 server 也太辛苦了

< Virtualhost 111.123.231.220 >
ServerName www.i-bbs.tw
DocumentRoot /var/www/
< /Virtualhost >

趁著伺服器下線研究了好幾個方案, 最後選擇了用 rewrite 的方法加上一些修改..

Step1 : edit /usr/local/etc/apache22/httpd.conf ,
把 mod_rewrite.so 這個 module 打開 , 然後在最低部加上



RewriteLog /var/log/rewrite_log # 自訂 log 的 path
RewriteLogLevel 0 # level 一定要設 0, 不然噴出來的 log 會擠爆硬碟 :p
RewriteEngine on
RewriteMap lowercase int:tolower
RewriteMap vhost txt:/etc/vhost.map # vhost.map 的 path
RewriteCond %{REQUEST_URI} !^/icons/
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
RewriteCond ${vhost:%1} ^(/.*)$
RewriteRule ^/(.*)$ %1/$1 [L]

Step2 : edit /etc/vhost.map

#domain doc’s path
i-bbs.tw /usr/local/www/apache22/data/
www.i-bbs.tw /usr/local/www/apache22/data/www.i-bbs.tw
hayes.i-bbs.tw /usr/local/www/apache22/data/hayes.i-bbs.tw
mysql.i-bbs.tw /usr/local/www/apache22/data/phpMyAdmin

這裡有一個要注意的地方
由於我們要讓apache去讀取系統預設的/var/www以外的地方
所以得把selinux關掉(selinux的說明)
詳細做法-How to Disable SELinux
簡單來說...就是修改/etc/selinux/config 然後重開機就可以了