Centos SVN

標準

1. 系統

CentOS 4.x/RHEL 4
CentOS 5.1/RHEL 5

 

2. 參考

Subversion: http://subversion.tigris.org/
Version Control with Subversion: http://svnbook.red-bean.com/

 

3. 安裝

 

[root@lucifer ~]# yum install mod_dav_svn subversion

你首先要做的事情就是安裝我在上面所提及的兩個套件。如果你未安裝 Apache,這樣做亦會為你把它拉進來。

當你用 yum 安裝時,它會列出上面兩個套件以外的套件。其它東西亦會自動被安裝。視乎你已有的套件,你的經歷也許會不同。

 

4. 設定

 

4.1. Apache

在你進一步學習之先,你需要確定 Apache 已經被設置好。我假設你在做一個全新的安裝,因此如果你的 Apache 已經在運作中……請小心你所做的改動。我亦會解釋如何設置基本的密碼保護。然而,假若你想容許任何人存取版本庫,你可輕易地省略這部份。

你首先要做的事情就是開啟 /etc/httpd/conf/httpd.conf,而且最低限度更改 ServerName 這個指引。如果你需要協助或擁有更複雜的設定,請參詳 Apache 的文件。

 

[root@lucifer ~] vim /etc/httpd/conf/httpd.conf —— 作所需修改並存檔
[root@lucifer ~] service httpd start
[root@lucifer ~] chkconfig httpd on

在網絡上瀏覽你的機器,http://yourmachine ,看看你能否取得測試頁。做得到嗎?好了,讓我們進到更有趣的事情。

 

4.2. Subversion 給 Apache 的設定

下一步就是在 Apache 內設置某些設定,好讓 Subversion 與 Apache 能夠融洽相處。現在讓我們看看 Subversion 為你安裝的範例設定檔。

 

[root@lucifer ~] cd /etc/httpd/conf.d/
[root@lucifer ~] vim subversion.conf

# 有需要的話,請確定你移除這兩行的註釋
LoadModule dav_svn_module     modules/mod_dav_svn.so
LoadModule authz_svn_module   modules/mod_authz_svn.so

# 加入下列內容來支援基本驗證,並將 Apache 指向實際放置版本庫的地方。
<Location /repos>
        DAV svn
        SVNPath /var/www/svn/repos
        AuthType Basic
        AuthName "Subversion repos"
        AuthUserFile /etc/svn-auth-conf
        Require valid-user
</Location>

上面的位置是 Apache 在 URL 列上使用的。舉個例說:http://yourmachine/repos 指向你所指定的 SVNPath。上面只是一個範例,因此請按你的喜好放置東西。請確定你在完成編輯後儲存檔案。

然後我們須要建立你在上一部所指定的密碼檔。開始時你要利用 -cm 這個選項。它會建立檔案並用 MD5 將密碼加密。如果你需要加用戶,請確定你只使用 -m 選項,而不包含初次建立時的 -c。

 

[root@lucifer ~] htpasswd -cm /etc/svn-auth-conf yourusername
New password:
Re-type new password:
Adding password for user yourusername
[root@lucifer ~] htpasswd -m /etc/svn-auth-conf anotherusername
New password:
Re-type new password:
Adding password for user anotherusername

 

4.3. 設定你的版本庫

你接著要做的事情就是建立你用來提交及取出檔案的版本庫。利用 svn 所包含的工具,這是很容易的。

 

[root@lucifer ~] cd /var/www/ —— 或者你在上面所指定的路徑
[root@lucifer ~] mkdir svn
[root@lucifer ~] cd svn
[root@lucifer ~] svnadmin create repos
[root@lucifer ~] chown -R apache.apache repos
[root@lucifer ~] service httpd restart

現在去測試你能否透過網頁瀏覽器存取你的版本庫:http://yourmahcine/repos 。你應該取得一個對話方塊詢問用戶名稱及密碼。若然是這樣,請輸入你的憑證,然後你應該看見一版 Revision 0:/ 的頁面。這樣的話,版本庫的設定便大工告成了。如果你須要多個版本庫,請參考上面連結內的文檔。這裡只示範如何設置一個版本庫及開始應用它。話說回來,讓我們就這樣做。

 

5. 運用 subversion

 

5.1. 配置你的版本庫

如果一切順列,你現在應該已準備好使用你所建立的版本庫。subversion 的 svn 工具是你將要用來與資料庫溝通的指令行客戶端。若要看這個工具的用法:

 

[root@lucifer ~] svn --help

你 最有機會使用的選項是:svn import、svn commit(ci)、svn checkout(co)。開始時你會用 import 將檔案匯入你的版本庫;你會用 checkout 取出它們作修改;你會用 commit 將改動提交到資料庫內。一旦你見過它們被應用數次,這便頗為簡單。

在我繼續之先,我希望解釋關於目錄架構的配置。幾乎所有文件都談及用某個配置方法建立你的目錄。他們會提及要確定你在根目錄下設有 branches、tags 及 trunk 目錄,當中 trunk 會包含你的所有檔案。就例如:

 

.
|-- project1
|   |-- branches
|   |-- tags
|   `-- trunk
`-- project2
    |-- branches
    |-- tags
    `-- trunk

參考書會較詳細解釋這樣做的原因,但我基本上不會採用這種配置……這是因為我不算是寫程式或維護「項目」。我主要用它來儲存相對簡單的設定檔及文件。請用適合你的方式來設置。

作為一個範例,我會建立一些示範用的目錄及放置一些檔案在其中。這是在 SVN 伺服器上做的。請照樣做。

 

[root@lucifer ~] cd /tmp
[root@lucifer ~] mkdir mytestproj
[root@lucifer ~] cd mytestproj
[root@lucifer ~] mkdir configurations options main
[root@lucifer ~] vim configurations/testconf1.cfg —— 放你喜歡的東西在這些檔案內。
[root@lucifer ~] vim options/testopts1.cfg
[root@lucifer ~] vim main/mainfile1.cfg

請記得你可以隨你的自己的意思進行配置。當你完成了你所須的首個配置後,讓我們向前進並將它匯入 subversion 內。

 

5.2. 匯入

 

[root@lucifer ~] svn import /tmp/mytestproj/ file:///var/www/svn/repos/mytestproj -m "Initial repository layout for mytestproj"
Adding         /tmp/mytestproj/main
Adding         /tmp/mytestproj/main/mainfile1.cfg
Adding         /tmp/mytestproj/configurations
Adding         /tmp/mytestproj/configurations/testconf1.cfg
Adding         /tmp/mytestproj/options
Adding         /tmp/mytestproj/options/testopts1.cfg

 

5.3. 取出

現在利用網頁瀏覽器取出檔案:http://yourmachine/repos 。你應該能夠取出你所匯入的東西。一旦你在本地的 SVN 伺服器上載了你最初的配置,你只需用先前所建立的戶口連線到 subversion 伺服器,便可以在另一台遠端的機器上使用它。讓我們測試一下。

 

[me@mylappy ~] cd /tmp
[me@mylappy ~] svn co http://yoursvnserver/repos/mytestproj
Authentication realm: <http://yoursvnserver:80> Subversion repos
Password for 'youruser':
A    mytestproj/main
A    mytestproj/main/mainfile1.cfg
A    mytestproj/configurations
A    mytestproj/configurations/testconf1.cfg
A    mytestproj/options
A    mytestproj/options/testopts1.cfg
Checked out revision 1.

 

5.4. 編輯及提交

正如你所見,你已經從 subversion 伺服器取出了第 1 版。現在你可以編輯一些東西,然後將改動提交給 subversion 伺服器。

 

[me@mylappy ~] cd mytestproj
[me@mylappy ~] vim configurations/testconf1.cfg —— 加入或刪除某些東西並存檔。
[me@mylappy ~] svn commit -m "Added a line to testconf1.cfg."
Sending        configurations/testconf1.cfg
Transmitting file data .
Committed revision 2.

這樣做的一個好處,就是你可以刪除剛才在你的機器上所取出的所有目錄。你取出它們的唯一目的,就是要編輯它們,然後將它們送返主機。請瀏覽你的伺服器來取出不同檔案。

 

5.5. 新增/刪除物件

這一切都很好,但你如何在現存的版本庫內加入更多檔案?很簡單,就是利用 add 這個引數。請你現在就取出你最新的版本,複製一個檔案到目錄內,加入這個檔案,然後提交你的改動。

 

[me@mylappy ~] svn co http://yoursvnserver/repos/mytestproj
A    mytestproj/main
A    mytestproj/main/mainfile1.cfg
A    mytestproj/configurations
A    mytestproj/configurations/testconf1.cfg
A    mytestproj/options
A    mytestproj/options/testopts1.cfg
Checked out revision 2.

[me@mylappy ~] cd mytestproj
[me@mylappy ~] cp /etc/yum.repos.d/CentOS-Base.repo configurations/
[me@mylappy ~] svn add configurations/CentOS-Base.repo
A         configurations/CentOS-Base.repo

[me@mylappy ~] svn commit -m "Added the CentOS Yum repo file."
Adding         configurations/CentOS-Base.repo
Transmitting file data .
Committed revision 3.

要刪除物件,你只須以 delete 代替 add。提交你的改動,然後便成了。就是這麼簡單。再次返回你的瀏覽器,你會發現版本號碼是 3。你應該可以點擊檔案並找出你所做的改動。

 

5.6. 還原

這些都非常好,但我如何還原到舊的版本……這不是 subversion 的用意嗎?對,這很容易。好果你不清楚你現有的版本……看看 log 這個指令。這解釋了你為何每次提交時要放入信息。它們要簡潔,但含足夠資料來提醒你或許忘掉了的事情。

 

[me@mylappy ~] svn log http://yoursvnserver/repos —— 這針對整個版本庫
[me@mylappy ~] svn log http://yoursvnserver/repos/mytestproj —— 這針對個別項目

你會取得一個完整的版本列表連同註解,正如我上面所講。這樣你便能選擇你現在想取回哪個版本。

 

[me@mylappy ~] svn co -r 1 http://yoursvnserver/repos/mytestproj

這個指令會取回第 1 個版本。

 

6. 存取控制清單

一般來說,你不會想將所有版本庫的存取權給予所有用戶。你可以利用 ACL 來限制每位用戶存取版本庫的權限。ACL 可以透過 AuthzSVNAccessFile 這個檔案選項來啟用,它以一個檔名作為參數。例如:

 

AuthzSVNAccessFile /etc/svn-acl-conf

你可以在相關的 Location 部份加入它:

 

<Location /repos>
        DAV svn
        SVNParentPath /var/www/svn/repos
        AuthzSVNAccessFile /etc/svn-acl-conf
        AuthType Basic
        AuthName "Subversion repos"
        AuthUserFile /etc/svn-auth-conf
        Require valid-user
</Location>

然後你可以建立 /etc/svn-acl-config。這個檔案內藏有這個格式的分段:

 

[版本庫名稱:版本庫路徑]
用戶 = 存取權

當中存取權可以是 r(唯讀)、rw(讀寫)、或空白(禁止存取)。預設的 ACL 是禁止用戶存取版本載。假設你有一個名叫 framework 的版本庫,而你想給 john 唯讀的權限,及 joe 讀寫的權限。你可以加入下面這個分段:

 

[framework:/]
john =  r
joe = rw

你亦可以在名叫 groups 的分段內建立群組,然後在存取控制清單內將 @ 符號放在群組前面。例如:

 

[groups]
staff = joe, george

[framework:/]
john =  r
@staff = rw

如果你想令所有用戶能閱讀每個版本庫,你可以為每個版本庫的根目錄加入以下一個分段:

 

[/]
* = r

 

7. 後記

這只是 subversion 能賦予你的能力的很小部份。這份入門指南能助你一把,初步示範如何使用它,並理解它的運作。你可以用 subversion 的工具做各樣事情,所以請記得查閱文檔來學習關於可以協助你的不同選項。另外請留意為你的需要安裝 Apache 也許是小題大做。要完全使用 subversion 的工具,你可以在本地的機器上指定 file:///path/to/repo ,而不必像我的 Apache 範例般使用 http://yoursvnserver/repos/whatever 。據聞很多人都在他們的主機上用它來管理大型項目及設定檔,免得自己發瘋。祝你好運。

 

8. 進深閱讀

Version Control with Subversion

Centos install tomcat7

標準

一、      安裝JDK

1、         卸載伺服器自帶的jdk

# java –version                         –查看java版本

# rpm –qa | grep jdk                –查看伺服器自帶的jdk

# yum -y remove xxxx                  –卸載伺服器自帶jdk(xxx為顯示的版本資訊)

# rpm –qa | grep gcj

# yum –y remove xxxx

#sudo find /usr/ -name *jdk  –check java home

2、         安裝JDK

# cd /usr/local/src                    –進入套裝軟體的存放路徑

# mv /usr/local/src/jdk-6u35-linux-x64.bin /usr/local/jdk-6u35-linux-x64.bin  –把套裝軟體剪切到安裝目錄

# cd /usr/local                         –進入安裝目錄

# chmod 755 jdk-6u35-linux-x64.bin      –給套裝軟體添加執行許可權

# ./ jdk-6u35-linux-x64.bin        –執行安裝

3、         配置java環境變數

# cp /etc/profile /etc/profile.bak            –備份系統設定檔

# vi /etc/profile                                      –編輯設定檔(在最後追加如下內容)

export JAVA_HOME=/usr/local/jdk1.6.0_35

export JRE_HOME=/usr/local/jdk1.6.0_35/jre/

export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar

export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

# source /etc/profile                                          –重新載入設定檔

# java –version                                                   –查看安裝的jdk版本資訊

二、      安裝Tomcat

1、安裝Tomcat

# cd /usr/local/src                                      –進入安裝包存放目錄

# tar zxvf apache-tomcat-7.0.35.tar.gz        –解壓

# mv apache-tomcat-7.0.35 /usr/local/apache-tomcat-7.0.35          –資料夾剪切到安裝目錄

# /usr/local/apache-tomcat-7.0.35/bin/startup.sh         –啟動

# /usr/local/apache-tomcat-7.0.35/bin/shutdown.sh     –關閉

2、添加系統服務,自動開機啟動

# cd /etc/rc.d/init.d                               –進入系統服務資料夾

# vi tomcat                                           –創建tomcat系統服務設定檔(添加如下內容)

#

# chkconfig: 345 80 15

# description: Tomcat is a Servlet+JSP Engine.

# Enter the jdk installation directory

jdk_File=/usr/local/jdk1.6.0_35

# Enter the tomcat installation directory

tomcat_File=/usr/local/apache-tomcat-7.0.35

export JAVA_HOME=$jdk_File

# Source function library.

. /etc/rc.d/init.d/functions

start(){

if [ -z $(/sbin/pidof java) ]; then

echo “Starting tomcat"

$tomcat_File/bin/startup.sh

touch /var/lock/subsys/tomcat

else

echo “tomcat allready running"

fi

}

stop(){

if [ ! -z $(/sbin/pidof java) ]; then

echo “Shutting down tomcat"

$tomcat_File/bin/shutdown.sh

until [ -z $(/sbin/pidof java) ]; do :; done

rm -f /var/lock/subsys/tomcat

else

echo “tomcat not running"

fi

}

case “$1″ in

start)

start

;;

stop)

stop

;;

restart)

stop

start

;;

status)

$tomcat_File/bin/catalina.sh version

;;

*)

echo “Usage: $0 {start|stop|restart|status}"

esac

exit 0

:wq                                     –退出

# chmod 755 /etc/rc.d/init.d/tomcat                             –添加執行許可權

#chkconfig –add tomcat                                                   –添加系統服務

#chkconfig tomcat on                                                       –添加開機啟動

# service tomcat stop                                                  –停止

# service tomcat start                                                       –啟動

# service tomcat restart                                                –重啟

# service tomcat status                                                –查看狀態

開啟防火牆相應埠

開放8080埠的解決步驟如下:

1、修改/etc/sysconfig/iptables檔

# vi /etc/sysconfig/iptables

在22埠下添加如下一行:

-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 8080 -j ACCEPT

2、重啟防火牆,這裡有兩種方式重啟防火牆

a) 重啟後生效

開啟: chkconfig iptables on

關閉: chkconfig iptables off

b) 即時生效,重啟後失效

開啟: service iptables start

關閉: service iptables stop

 

Another config

 

#!/bin/sh
#
# Tomcat Server
#
# chkconfig: 345 96 30
# description: Java servlet container

JAVA_HOME=/opt/jdk

PATH=${JAVA_HOME}/bin:${PATH}

TOMCAT_START=/opt/tomcat/bin/startup.sh

TOMCAT_STOP=/opt/tomcat/bin/shutdown.sh

export JAVA_HOME PATH

start()
{
        if [ -x ${TOMCAT_START} ]; then
                echo "Starting tomcat server..."
                ${TOMCAT_START} &
        else
                echo "Cannot start tomcat server"
        fi
}

stop()
{
        if [ -x ${TOMCAT_STOP} ]; then
                echo "Stopping tomcat server..."
                ${TOMCAT_STOP} &
        else
                echo "Cannot stop tomcat server"
        fi
}

restart()
{
        stop
        sleep 10
        start
}

status()
{
        echo "No status available for tomcat server"
}

case "$1" in
'start')
        start
        ;;
'stop')
        stop
        ;;
'restart')
        restart
        ;;
'status')
        status
        ;;
*)
        echo "Please supply an argument [start|stop|restart]"
esac