<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>哇寶部落格 &#187; system</title>
	<atom:link href="http://blog.wabow.com/archives/tag/system/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.wabow.com</link>
	<description>Wabow Information Inc. Blog</description>
	<lastBuildDate>Fri, 20 Jan 2012 09:19:43 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>[system]如何在Linux中把某個user加入群組 Howto: Linux Add User To Group</title>
		<link>http://blog.wabow.com/archives/1948</link>
		<comments>http://blog.wabow.com/archives/1948#comments</comments>
		<pubDate>Thu, 13 Aug 2009 04:24:04 +0000</pubDate>
		<dc:creator>andrew</dc:creator>
				<category><![CDATA[技術分享]]></category>
		<category><![CDATA[system]]></category>

		<guid isPermaLink="false">http://blog.wabow.com/?p=1948</guid>
		<description><![CDATA[前言 在linux的系統中，user與group有著密不可分的關係。透過兩者間的權限設定而達到在操作linux系統上一層又一層緊密且安全的防護。 那麼，要如何針對user去指定其群組呢，讓我們來看以下的說明。 如何新增一個帳號並同時指定主群組(primary group) 在linux作業系統中，要增加一個使用者也就是新增一個帳號我們一般會下以下指令； useradd username 所以增加一個andrew帳號就是︰ # useradd andrew 那麼，如果要新增一個帳號同時指定這個帳號的主群組(primary group)該如何下指令呢?如下︰ useradd -g {group-name} username 所以新增一個叫做andrew的帳號並同時指定andrew的主群組為rd則輸入︰ # useradd -g rd andrew 這裡要注意rd這個群組必須是已存在的，要確認rd群組是否存在可以下指令︰ # grep rd /etc/group 如果沒有任何資訊被顯示出來的表示rd群組並不存在，新增rd群組的指令如下︰ # groupadd rd 如此我們就成功新增了使用者andrew並同時指定他的主群組為rd。 如何新增一個帳號並同時指定副群組(secondary group) 那麼，假使我們要新增一個帳號並同時指定他的副群組又該如何設定呢？指令如下︰ useradd -G {group-name} username 這裡一樣要注意要加入的群組本身必須是已存在的。所以總結來說，當useradd後面接的選項是小寫的g就是加入主群組，大寫的G就是加入副群組。 如果要一次加入數個副群組舉例來說如下︰ # useradd -G admins,www,rd daniel 這裡表示新增一個叫daniel的帳號，並同時把此帳號加入admins、www、rd這幾個群組裡，也就是把要加入的數個群組用逗號串接起來即可。 修改已存在帳號的群組 前兩段都是針對新增帳號的群組所做的說明，那麼如果我們想要修改某個已存在的帳號的主群組和增加副群組呢？這裡用到usermod這個指令，修改主群組指令如下︰ # usermod -g admins [...]]]></description>
			<content:encoded><![CDATA[<p><H3>前言</H3></p>
<p>在linux的系統中，user與group有著密不可分的關係。透過兩者間的權限設定而達到在操作linux系統上一層又一層緊密且安全的防護。<br />
那麼，要如何針對user去指定其群組呢，讓我們來看以下的說明。  <span id="more-1948"></span></p>
<p><H3>如何新增一個帳號並同時指定主群組(primary group)</H3></p>
<p>在linux作業系統中，要增加一個使用者也就是新增一個帳號我們一般會下以下指令；</p>
<blockquote><p>useradd username</p></blockquote>
<p>所以增加一個andrew帳號就是︰</p>
<blockquote><p># useradd andrew</p></blockquote>
<p>那麼，如果要新增一個帳號同時指定這個帳號的主群組(primary group)該如何下指令呢?如下︰</p>
<blockquote><p>useradd -g {group-name} username</p></blockquote>
<p>所以新增一個叫做andrew的帳號並同時指定andrew的主群組為rd則輸入︰</p>
<blockquote><p># useradd -g rd andrew</p></blockquote>
<p>這裡要注意rd這個群組必須是已存在的，要確認rd群組是否存在可以下指令︰</p>
<blockquote><p># grep rd /etc/group</p></blockquote>
<p>如果沒有任何資訊被顯示出來的表示rd群組並不存在，新增rd群組的指令如下︰</p>
<blockquote><p># groupadd rd</p></blockquote>
<p>如此我們就成功新增了使用者andrew並同時指定他的主群組為rd。</p>
<p><H3>如何新增一個帳號並同時指定副群組(secondary group)</H3></p>
<p>那麼，假使我們要新增一個帳號並同時指定他的副群組又該如何設定呢？指令如下︰</p>
<blockquote><p>useradd -G {group-name} username</p></blockquote>
<p>這裡一樣要注意要加入的群組本身必須是已存在的。所以總結來說，當useradd後面接的選項是小寫的g就是加入主群組，大寫的G就是加入副群組。<br />
如果要一次加入數個副群組舉例來說如下︰</p>
<blockquote><p># useradd -G admins,www,rd daniel</p></blockquote>
<p>這裡表示新增一個叫daniel的帳號，並同時把此帳號加入admins、www、rd這幾個群組裡，也就是把要加入的數個群組用逗號串接起來即可。</p>
<p><H3>修改已存在帳號的群組</H3></p>
<p>前兩段都是針對新增帳號的群組所做的說明，那麼如果我們想要修改某個已存在的帳號的主群組和增加副群組呢？這裡用到usermod這個指令，修改主群組指令如下︰</p>
<blockquote><p># usermod -g admins andrew</p></blockquote>
<p>這裡表示我們要把andrew這個帳號的主群組修改為admins。而以下指令︰</p>
<blockquote><p># usermod -a -G ftp daniel</p></blockquote>
<p>則表示我們把daniel這個帳號加入到ftp這個群組。</p>
<p><H3>參考網址</H3></p>
<p><a href="http://www.cyberciti.biz/faq/howto-linux-add-user-to-group/">http://www.cyberciti.biz/faq/howto-linux-add-user-to-group/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.wabow.com/archives/1948/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apache 2 頻寬限制模組 mod_cband</title>
		<link>http://blog.wabow.com/archives/1681</link>
		<comments>http://blog.wabow.com/archives/1681#comments</comments>
		<pubDate>Thu, 09 Jul 2009 08:00:15 +0000</pubDate>
		<dc:creator>andrew</dc:creator>
				<category><![CDATA[技術分享]]></category>
		<category><![CDATA[system]]></category>

		<guid isPermaLink="false">http://blog.wabow.com/?p=1681</guid>
		<description><![CDATA[緣起 在架設網站實務上，常會遇到希望知道主機上網站使用的頻寬或是流量等資訊，不論是客戶純粹想藉由此資訊來了解這個網站是否真的"有用"，或是拿來當作所支付的頻寬/流量費用是否有達到實際使用量的參考。通常頭一個想到的就是mrtg(可參考鳥哥的網站http://linux.vbird.org/linux_security/old/04mrtg.php 很詳細)這個模組，架設簡單且在需求不是那麼高的情況下，是很好用。但由於 MRTG 是透過 snmp 協定去統計，也就是單一主機上的網路卡去做偵測及統計。如果一台主機上有好幾個虛擬網站(VirtualHost)的話，MRTG就比較難針對單一網站做統計。因此這個時候可以利用Apache 2 的模組 mod_cband，mod_cband是一種頻寬限制模組，他除了可以針對單一主機上各虛擬網站去限制頻寬以免流量爆掉，本身也提供了頻寬數據的表格可參考。現在就讓我們看看如何開始使用mod_cband吧! 安裝mod_cband 這裏使用tarball的安裝方式。先下載mod_cband，目前版本為0.9.7.5，下載點按此。在Linux指令列下可以下指令: wget http://fresh.t-systems-sfr.com/unix/privat/mod-cband-0.9.7.5.tgz 然後解壓縮 tar -zxvf mod-cband-0.9.7.5.tgz 開始安裝(這裡以系統已安裝apsx 或 apsx2的環境來做範例 ) cd mod-cband-0.9.7.5 ./configure make make install 很簡單吧!就是一般的編譯與安裝，安裝完畢會自動在apache的設定檔httpd.conf中寫入以下訊息: LoadModule cband_module /usr/lib64/httpd/modules/mod_cband.so 至此安裝完畢，記得要重新啟動apache。 設定mod_cband 那麼我們要如何設定才能達到限制網站頻寬以及查看統計圖表的需求呢?以下舉實例來說明。開啟 /etc/httpd/conf/httpd.conf 來編輯: ServerName www.example.com.tw ServerAdmin admin@example.com.tw DocumentRoot /var/www/www.example.com.tw #限制此VirtualHost最高頻寬速度 1024kbps、每秒最高接受請求(request)數 200 個 、最高每秒連接(connection)數 200 個 CBandSpeed 1024 200 200 #限制來自遠端訪問單一ip最高頻寬速度512kbps，每秒最高30個請求(request)，最高每秒30個連接(connection)數。 [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://blog.wabow.com/wp-content/uploads/2009/07/mod_cband-status-500x265.jpg" alt="mod_cband status" width="500" height="265" class="aligncenter size-large wp-image-1683" /><span id="more-1681"></span><br />
<H3>緣起</H3></p>
<p>在架設網站實務上，常會遇到希望知道主機上網站使用的頻寬或是流量等資訊，不論是客戶純粹想藉由此資訊來了解這個網站是否真的"有用"，或是拿來當作所支付的頻寬/流量費用是否有達到實際使用量的參考。通常頭一個想到的就是mrtg(可參考鳥哥的網站http://linux.vbird.org/linux_security/old/04mrtg.php<br />
很詳細)這個模組，架設簡單且在需求不是那麼高的情況下，是很好用。但由於 MRTG 是透過 snmp 協定去統計，也就是單一主機上的網路卡去做偵測及統計。如果一台主機上有好幾個虛擬網站(VirtualHost)的話，MRTG就比較難針對單一網站做統計。因此這個時候可以利用Apache 2 的模組 mod_cband，mod_cband是一種頻寬限制模組，他除了可以針對單一主機上各虛擬網站去限制頻寬以免流量爆掉，本身也提供了頻寬數據的表格可參考。現在就讓我們看看如何開始使用mod_cband吧!</p>
<p><H3>安裝mod_cband</H3></p>
<p>這裏使用tarball的安裝方式。先下載mod_cband，目前版本為0.9.7.5，下載點<a href="http://fresh.t-systems-sfr.com/unix/privat/mod-cband-0.9.7.5.tgz">按此</a>。在Linux指令列下可以下指令:</p>
<blockquote><p>wget http://fresh.t-systems-sfr.com/unix/privat/mod-cband-0.9.7.5.tgz</p></blockquote>
<p>然後解壓縮</p>
<blockquote><p>tar -zxvf mod-cband-0.9.7.5.tgz</p></blockquote>
<p>開始安裝(這裡以系統已安裝apsx 或 apsx2的環境來做範例 )</p>
<blockquote><p>cd mod-cband-0.9.7.5<br />
./configure<br />
make<br />
make install</p></blockquote>
<p>很簡單吧!就是一般的編譯與安裝，安裝完畢會自動在apache的設定檔httpd.conf中寫入以下訊息:</p>
<blockquote><p>LoadModule cband_module       /usr/lib64/httpd/modules/mod_cband.so</p></blockquote>
<p>至此安裝完畢，記得要重新啟動apache。</p>
<p><H3>設定mod_cband</H3></p>
<p>那麼我們要如何設定才能達到限制網站頻寬以及查看統計圖表的需求呢?以下舉實例來說明。開啟 /etc/httpd/conf/httpd.conf 來編輯:</p>
<blockquote><p>
ServerName www.example.com.tw<br />
ServerAdmin admin@example.com.tw<br />
DocumentRoot /var/www/www.example.com.tw</p>
<p>#限制此VirtualHost最高頻寬速度 1024kbps、每秒最高接受請求(request)數 200 個 、最高每秒連接(connection)數 200 個<br />
CBandSpeed 1024 200 200</p>
<p>#限制來自遠端訪問單一ip最高頻寬速度512kbps，每秒最高30個請求(request)，最高每秒30個連接(connection)數。<br />
CBandRemoteSpeed 512 30 30<br />
　<br />
#設定多久對所記錄的全域頻寬紀錄進行重設(refresh)  4W=4weeks(4週)(一個月)<br />
CBandPeriod 4W</p>
<p>	#開啟 mod_cband 的即時監看功能(查看整台主機)，可以透過 http://server_name/cband-status 進行觀查。<br />
	SetHandler cband-status</p>
<p>	#設定瀏覽http://server_name/cband-status的權限<br />
	Order allow,deny<br />
	Allow from 127.0.0.1/32 10.1.1.0/24</p>
<p>	#開啟 mod_cband 的即時監看功能(查看單一VirtualHost)，可以透過 http://server_name/cband-status-me 進行觀查。<br />
	SetHandler cband-status-me</p>
<p>	#設定瀏覽http://server_name/cband-status-me的權限<br />
	Order allow,deny<br />
	Allow from 127.0.0.1/32 10.1.1.0/24</p>
</blockquote>
<p>--<br />
設定完畢記得存檔後還是一樣重新啟動apache，如此就開始使用了。</p>
<p><H3>即時監看範例</H3></p>
<p><a href="http://www.blingcandy.com.tw/cband-status" target="_blank">查看整台主機</a><br />
<a href="http://www.blingcandy.com.tw/cband-status-me" target="_blank">查看單一VirtualHost</a></p>
<p><H3>結論</H3></p>
<p>網路其實有很多網站頻寬限制或是監控的模組工具可使用，像ntop或是cacti都是很常見的工具。mod_cband也是筆者認為安裝簡單且設定上很直覺的工具之一，不妨試用看看!</p>
<p>參考網站<br />
<a href="http://www.adj.idv.tw/html/75/t-1675.html">http://www.adj.idv.tw/html/75/t-1675.html</a><br />
<a href="http://www.redmaple.idv.tw/index.php/archives/164">http://www.redmaple.idv.tw/index.php/archives/164</a> (Debian上安裝 mod_cband)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.wabow.com/archives/1681/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>使用 MySQL 的 Binary Log 復原資料庫實錄</title>
		<link>http://blog.wabow.com/archives/1603</link>
		<comments>http://blog.wabow.com/archives/1603#comments</comments>
		<pubDate>Wed, 24 Jun 2009 10:32:51 +0000</pubDate>
		<dc:creator>andrew</dc:creator>
				<category><![CDATA[技術分享]]></category>
		<category><![CDATA[system]]></category>

		<guid isPermaLink="false">http://blog.wabow.com/?p=1603</guid>
		<description><![CDATA[2009年6月19日，星期五接近中午的時候，一通電話聲劃破公司的寂靜。neo掛上電話後，只跟我說了一句: "客戶說，訂單資料表被清空了!" 彷彿晴天霹靂一般的愣了好幾秒。不過因為該客戶網站已經在上線正常運作，在愣下去會越來越麻煩，因此便跟Jace跟neo緊急討論了處理方法。 先確認幾個要點: 1.最新一份完整備份資料庫資料夾檔案的建立時間 - db_back.tar.gz 2.mysql當初有開啟紀錄binlog的功能，可以透過dump出所有語法來還原訂單資料表 3.請客戶在適當時間點將網站換上維護公告避免新的資料持續進來 4.查看biglog中是否有TRUNCATE TABLE的指令並確認資料要復原到那個時間點 OK，先連到資料庫主機查看binlog資料。一般位置會放在 /var/log/mysql 下，檔名大概就長的像mysql-bin.003597這樣，會隨著檔案紀錄的大小自動產生新的檔案。 依據客戶打電話來通知的時間點比對binlog檔的建立時間開啟檔案，來搜尋TRUNCATE TABLE字樣。真的被找到了....確認該指令的時間點(ENDDATATIME)後，再確認db_back.rar的檔案建立時間點(STARTDATATIME)後，將這段時間的binlog檔案一一匯出成sql檔，指令如下: mysqlbinlog mysql-bin.003598 &#124; grep tablename &#62; /tmp/binlog-dump-01.sql 我們透過mysqlbinlog指令抓取mysql-bin.003598中訂單資料表的指令後匯出到binlog-dump-01.sql這個檔案。待檔案都確認匯出後，把db_back.tar.gz解壓縮，然後新建一個資料庫(NEWDB)， 之後停止mysql服務。再來把解壓縮出來資料庫檔案搬到剛才新建的資料庫在linux上的資料夾(/var/lib/mysql/NEWDB)，然後變更檔案權限為660及擁有者為mysql，指令如下: chmod 660 -R * chown mysql:mysql -R * 確認權限無誤後開啟mysql服務。此時記得在NEWDB中把訂單資料表先複製一份出來，以免待會使用biglog匯出的sql檔匯入時如果有問題又要重建資料表。再來就是把biglog匯出的sql檔匯入，指令如下: mysql -u dauserid -p --default-character-set=utf8 NEWDB&#60; binlog-dump-01.sql 按下enter後輸入該db user的密碼後就開始跑sql指令。待所有sql檔都匯入後，查看新建的資料庫中訂單資料表的資料格式是否無誤。 因為正式資料庫中訂單資料表從被TRUNCATE後還是有一些訂單資料產生，而這些訂單的自動編號欄位從1開始重新編號，所以要做特別處理。將這些資料先匯出sql檔(order.sql)後，將該訂單資料表清空，然後再次停掉mysql服務。再將我們在NEWDB處理好的訂單資料庫檔案複製到正式資料庫的linux資料夾下，同樣的變更檔案權限為660及擁有者為mysql，再把mysql服務開啟。然後開啟我們剛剛匯出的order.sql，將自動編號的欄位移除，然後把該sql檔匯入到正式資料庫的訂單資料表。此時這些後來新增的訂單資料就會從還原的訂單資料後自動編號下去，到此訂單資料表已還原處理完畢。後續就是通知客戶訂單資料表已還原，並可以把維護公告拿掉恢復網站運作了。 後記 上面描述的過程其實在當時處理時並非這麼順利，一下子遇到將備份資料庫檔案複製到新建資料庫時發生硬碟空間滿了，只好把檔案先刪除再把復原動作移到另一台主機去做；再來在抓取復原資料的起始點也耗費了很多時間，因為一個正在運作網站的資料庫存取指令真的多的可怕，光過濾也耗費了很多時間跟精力。所以在此建議大家，phpmyadmin雖然是一套對mysql操作上很方便的工具，但相對方便來說，任何對資料庫的操作就更應該小心，特別是清空資料庫的動作更是要注意。所以如果在不確定自己的精神狀態是非常好的情況下，還是先不要開啟phpmyadmin來操作以防萬一。切記切記... 參考 MySQL 使用 binary log 回復 某段時間區間 的資料]]></description>
			<content:encoded><![CDATA[<p>2009年6月19日，星期五接近中午的時候，一通電話聲劃破公司的寂靜。neo掛上電話後，只跟我說了一句:<br />
"客戶說，訂單資料表被清空了!"<br />
<span id="more-1603"></span><br />
彷彿晴天霹靂一般的愣了好幾秒。不過因為該客戶網站已經在上線正常運作，在愣下去會越來越麻煩，因此便跟Jace跟neo緊急討論了處理方法。<br />
先確認幾個要點:</p>
<blockquote><p>1.最新一份完整備份資料庫資料夾檔案的建立時間 - db_back.tar.gz<br />
2.mysql當初有開啟紀錄binlog的功能，可以透過dump出所有語法來還原訂單資料表<br />
3.請客戶在適當時間點將網站換上維護公告避免新的資料持續進來<br />
4.查看biglog中是否有TRUNCATE TABLE的指令並確認資料要復原到那個時間點</p></blockquote>
<p>OK，先連到資料庫主機查看binlog資料。一般位置會放在 /var/log/mysql 下，檔名大概就長的像mysql-bin.003597這樣，會隨著檔案紀錄的大小自動產生新的檔案。<br />
依據客戶打電話來通知的時間點比對binlog檔的建立時間開啟檔案，來搜尋TRUNCATE TABLE字樣。真的被找到了....確認該指令的時間點(ENDDATATIME)後，再確認db_back.rar的檔案建立時間點(STARTDATATIME)後，將這段時間的binlog檔案一一匯出成sql檔，指令如下:</p>
<blockquote><p>mysqlbinlog mysql-bin.003598 | grep tablename &gt; /tmp/binlog-dump-01.sql</p></blockquote>
<p>我們透過mysqlbinlog指令抓取mysql-bin.003598中訂單資料表的指令後匯出到binlog-dump-01.sql這個檔案。待檔案都確認匯出後，把db_back.tar.gz解壓縮，然後新建一個資料庫(NEWDB)， 之後停止mysql服務。再來把解壓縮出來資料庫檔案搬到剛才新建的資料庫在linux上的資料夾(/var/lib/mysql/NEWDB)，然後變更檔案權限為660及擁有者為mysql，指令如下:</p>
<blockquote><p>chmod 660 -R *<br />
chown mysql:mysql -R *</p></blockquote>
<p>確認權限無誤後開啟mysql服務。此時記得在NEWDB中把訂單資料表先複製一份出來，以免待會使用biglog匯出的sql檔匯入時如果有問題又要重建資料表。再來就是把biglog匯出的sql檔匯入，指令如下:</p>
<blockquote><p>mysql -u dauserid -p  --default-character-set=utf8  NEWDB&lt; binlog-dump-01.sql</p></blockquote>
<p>按下enter後輸入該db user的密碼後就開始跑sql指令。待所有sql檔都匯入後，查看新建的資料庫中訂單資料表的資料格式是否無誤。<br />
因為正式資料庫中訂單資料表從被TRUNCATE後還是有一些訂單資料產生，而這些訂單的自動編號欄位從1開始重新編號，所以要做特別處理。將這些資料先匯出sql檔(order.sql)後，將該訂單資料表清空，然後再次停掉mysql服務。再將我們在NEWDB處理好的訂單資料庫檔案複製到正式資料庫的linux資料夾下，同樣的變更檔案權限為660及擁有者為mysql，再把mysql服務開啟。然後開啟我們剛剛匯出的order.sql，將自動編號的欄位移除，然後把該sql檔匯入到正式資料庫的訂單資料表。此時這些後來新增的訂單資料就會從還原的訂單資料後自動編號下去，到此訂單資料表已還原處理完畢。後續就是通知客戶訂單資料表已還原，並可以把維護公告拿掉恢復網站運作了。</p>
<p><H3>後記</H3></p>
<p>上面描述的過程其實在當時處理時並非這麼順利，一下子遇到將備份資料庫檔案複製到新建資料庫時發生硬碟空間滿了，只好把檔案先刪除再把復原動作移到另一台主機去做；再來在抓取復原資料的起始點也耗費了很多時間，因為一個正在運作網站的資料庫存取指令真的多的可怕，光過濾也耗費了很多時間跟精力。所以在此建議大家，phpmyadmin雖然是一套對mysql操作上很方便的工具，但相對方便來說，任何對資料庫的操作就更應該小心，特別是清空資料庫的動作更是要注意。所以如果在不確定自己的精神狀態是非常好的情況下，還是先不要開啟phpmyadmin來操作以防萬一。切記切記...</p>
<p><H3>參考</H3><br />
<a href="http://www.hksilicon.com/kb/articles/2834/1/MySQL--binary-log---/Page1.html">MySQL 使用 binary log 回復 某段時間區間 的資料</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.wabow.com/archives/1603/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Subversion 出現 svn: Unrecognized URL scheme for &#039;http://.....&#039; 時的解決方式</title>
		<link>http://blog.wabow.com/archives/1017</link>
		<comments>http://blog.wabow.com/archives/1017#comments</comments>
		<pubDate>Thu, 23 Apr 2009 02:20:13 +0000</pubDate>
		<dc:creator>andrew</dc:creator>
				<category><![CDATA[技術分享]]></category>
		<category><![CDATA[system]]></category>

		<guid isPermaLink="false">http://blog.wabow.com/?p=1017</guid>
		<description><![CDATA[前言 公司在針對各專案，一直都是使用Subversion(簡稱svn)這套軟體來針對各專案的檔案做版本的控制。至於何謂Subversion以及要如何使用這套軟體可參考這篇文章，這裡就不再贅述。這篇文章僅用來記錄在安裝完新的主機後，當我們要從遠端某台svn主機要把專案的檔案取出時出現以下訊息: svn: Unrecognized URL scheme for 'http://www.sample.com/svn/bnq/trunk' 的解決方法。現在就讓我們來看看吧! 解說 一般來說，當我們費了千辛萬苦搞定一台主機後，如果要把網站的檔案利用svn取出放到新主機上，我們通常會下指令: svn co http://www.sample.com/svn/trunk /var/www/html/ 所謂的co其實是check out的縮寫，意思就是要把檔案取出；http://www.sample.com/svn/trunk 就是svn主機放置該專案的檔案位置；/var/www/html/ 則是我們打算把從svn取回檔案後要放置的位置。正常來說下完這行指令後依據svn主機的設定會要你做登入的認證，如果輸入正確則會開始看到檔案一個個放到我們設定的位置。但有時候卻會出現如前言中的訊息時又該怎麼辦呢?其實這是因為svn預設提供兩種方式來取得檔案，一種是file://，另一種是svn://，並沒有提供http://的方式來取檔。因此我們要幫svn掛上支援http方式的取檔模組，也就是neon這套程式。以下說明如何安裝neon。 安裝neon neon(官方網站:http://www.webdav.org/neon/)提供HTTP及WebDAV的client端函式庫。安裝指令如下: 1. tar xvzf neon-0.28.3.tar.gz 2. tar xvzf subversion-1.5.5.tar.gz 3. mv neon-0.28.3 subversion-1.5.5/neon 4. cd subversion-1.5.5 5. ./configure 6. make &#38;&#38; make install 這裡我們採用把neon掛入subversion下再重新安裝subversion的方式。指令1.2分別把neon與subversion解壓縮，指令3表示我們把解壓縮後的neon資料夾整個搬到subversion目錄下的neon資料夾中，指令4則是連到subversion目錄；至於指令5.6則是一般在linux下常見的編譯及安裝指令。當編譯及安裝完畢後，我們要怎麼確定svn已經有支援http方式的取檔方式呢?我們可以下以下指令: svn --version 畫面如果有出現以下訊息 * ra_neon : Module for accessing a repository [...]]]></description>
			<content:encoded><![CDATA[<h3>前言</h3>
<p>公司在針對各專案，一直都是使用Subversion(簡稱svn)這套軟體來針對各專案的檔案做版本的控制。至於何謂Subversion以及要如何使用這套軟體可參考<a href="http://huan-lin.blogspot.com/2009/04/introduction-to-version-control-system.html">這篇文章</a>，這裡就不再贅述。這篇文章僅用來記錄在安裝完新的主機後，當我們要從遠端某台svn主機要把專案的檔案取出時出現以下訊息:</p>
<blockquote><p>svn: Unrecognized URL scheme for 'http://www.sample.com/svn/bnq/trunk'</p></blockquote>
<p>的解決方法。現在就讓我們來看看吧!</p>
<p><span id="more-1017"></span></p>
<h3>解說</h3>
<p>一般來說，當我們費了千辛萬苦搞定一台主機後，如果要把網站的檔案利用svn取出放到新主機上，我們通常會下指令:</p>
<blockquote><p>svn co  http://www.sample.com/svn/trunk  /var/www/html/</p></blockquote>
<p>所謂的co其實是check out的縮寫，意思就是要把檔案取出；http://www.sample.com/svn/trunk 就是svn主機放置該專案的檔案位置；/var/www/html/ 則是我們打算把從svn取回檔案後要放置的位置。正常來說下完這行指令後依據svn主機的設定會要你做登入的認證，如果輸入正確則會開始看到檔案一個個放到我們設定的位置。但有時候卻會出現如前言中的訊息時又該怎麼辦呢?其實這是因為svn預設提供兩種方式來取得檔案，一種是file://，另一種是svn://，並沒有提供http://的方式來取檔。因此我們要幫svn掛上支援http方式的取檔模組，也就是neon這套程式。以下說明如何安裝neon。</p>
<h3>安裝neon</h3>
<p>neon(官方網站:<a href="http://www.webdav.org/neon/">http://www.webdav.org/neon/</a>)提供HTTP及WebDAV的client端函式庫。安裝指令如下:</p>
<blockquote><p>1.        tar xvzf neon-0.28.3.tar.gz<br />
2.        tar xvzf subversion-1.5.5.tar.gz<br />
3.        mv neon-0.28.3 subversion-1.5.5/neon<br />
4.        cd subversion-1.5.5<br />
5.         ./configure<br />
6.        make &amp;&amp; make install</p></blockquote>
<p>這裡我們採用把neon掛入subversion下再重新安裝subversion的方式。指令1.2分別把neon與subversion解壓縮，指令3表示我們把解壓縮後的neon資料夾整個搬到subversion目錄下的neon資料夾中，指令4則是連到subversion目錄；至於指令5.6則是一般在linux下常見的編譯及安裝指令。當編譯及安裝完畢後，我們要怎麼確定svn已經有支援http方式的取檔方式呢?我們可以下以下指令:</p>
<blockquote><p>svn --version</p></blockquote>
<p>畫面如果有出現以下訊息</p>
<blockquote><p>* ra_neon : Module for accessing a repository via WebDAV protocol using Neon.<br />
  - handles 'http' scheme</p></blockquote>
<p>即表示我們現在可以透過svn使用http的方式來取檔了!</p>
<h3>總結</h3>
<p>使用subversion版本控制軟體對於一個多人開發的專案來說，實在是有其必要性。透過版本控制可以避免很多檔案互蓋的情況發生，相信很多程式研發團隊常常會遇到這樣的問題。本篇文章僅針對使用svn取檔出現錯誤訊息時提供解決方案，如果有其他使用svn上的經驗，歡迎您回文分享!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.wabow.com/archives/1017/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

