linux下svn的安裝和配置
《linux 下svn 的安裝和配置》一、相關(guān)的幾個(gè)安裝包Apr : apr-1.3.8.tar.gz 和 apr-util-1.3.9.tar.gzApache : httpd-2.2.13.tar
《linux 下svn 的安裝和配置》
一、相關(guān)的幾個(gè)安裝包
Apr : apr-1.3.8.tar.gz 和 apr-util-1.3.9.tar.gz
Apache : httpd-2.2.13.tar.gz
Subversion: subversion-1.5.6.tar.gz 和 subversion-deps-1.5.6tar.gz *說明: SVN 依賴的APR 版本要正確。
Apache 為2.0.x ,對(duì)應(yīng)的APR 版本應(yīng)為0.9.x ;
Apache 為2.2.x ,對(duì)應(yīng)的APR 版本應(yīng)為1.2.x 。
二、 安裝步驟
1. 安裝apr-1.3.8.tar.gz
# tar –zvxf apr-1.3.8.tar.gz (解壓)
# cd apr-1.3.8 (進(jìn)入apr…所在的目錄)
# ./configure (安裝不指定路徑時(shí) 默認(rèn)安裝到/usr/local/apr) # make ; # make install (安裝)
2. 安裝 apr-util-1.3.9.tar.gz
# tar –zvxf apr-util-1.3.9.tar.gz
# cd apr-util-1.3.9
# ./configure - -with-apr=/usr/local/apr
# make ; # make install
3. 安裝httpd-2.2.13.tar.gz
# tar xzvf httpd-2.2.6.tar.gz
# cd httpd-2.2.6
# ./configure --prefix=/usr/local/apache2
--enable-dav
--enable-modules=so
--enable-maintainer-mode
--enable-rewrite
--with-apr=/usr/local/apr/bin/apr-1-config
--with-apr-util=/usr/local/apr/bin/apu-1-config
# make # make install
,安裝之后重新啟動(dòng)apache 服務(wù):# /usr/local/apache2/bin/apachectl –k start / restart * apache的默認(rèn)端口為80(更改端口號(hào):/etc/…/)
4. 安裝subversion
# tar –zvxf subversion-1.5.6.tar.gz
# tar –zvxf subversion-deps-1.5.6.tar.gz (這兩個(gè)自動(dòng)解壓成一個(gè)包 subversion-1.5.6) # cd subversion-1.5.6
(如果linux 系統(tǒng)上已經(jīng)裝有apr 或者apr-util ,移除 apr 存在的版本,
subversion 解壓 后的文件里有apr 相關(guān)的文件,需要移除)
# rm –rf apr
# rm -rf apr-util
說明:由于subversion-deps 包里的APR 是0.9.x 的,
因此編譯svn 時(shí)要?jiǎng)h除從deps 里解壓出來的apr, apr-util,改而使用apache 2.2里提供的
# cd subversion-1.5.6
#./configure
--with-apxs=/usr/local/apache2/bin/apxs
--prefix=/usr/local/svn
--with-apr=/usr/local/apr/bin/apr-1-config
--with-apr-util=/usr/local/apr/bin/apu-1-config
--with-ssl
--with-zlib
--enable-maintainer-mode
#make ; #make install
(如果apache 不是安裝在默認(rèn)路徑,configure 必須加上--with-apxs 選項(xiàng), 如:./configure
--with-apxs=/usr/local/apache2/bin/apxs)
* configure可能存在的問題及解決方法
1. configure: error: could not find library containing RSA_new
-- yum install openssl-devel
2. configure: error: no XML parser was found: expat or libxml 2.x required
-- yum install expat-devel
3. configure: error: --with-zlib requires an argument.
-- 去掉此選項(xiàng)。
(如果: 執(zhí)行了configure,make 后 make install時(shí)出錯(cuò):
/bin/sh /usr/local/httpd-2.2.3/srclib/apr/libtool --mode=install /usr/bin/install -c -m 755 libaprutil-1.la /usr/local/apache2/lib
,libtool: install: error: cannot install `libaprutil-1.la' to a directory not ending in /usr/local/apache22/lib
make[2]: *** [install] Error 1
則在./configure 后
make clean
make
make install
)
確定一下svn 有沒有安裝成功
# /usr/local/svn/bin/svnserve --version
# vi /usr/local/apache2/conf/httpd.conf
看到下面兩個(gè)模塊說明安裝成功
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
5. 開始建立版本庫
/usr/local/svn/bin/svnadmin create /svn/project/www (創(chuàng)建倉(cāng)庫"www" )
ls /svn/project/www (查看有沒有創(chuàng)建好, 如果多了一些文件則說明版本庫已經(jīng)創(chuàng)建好) (如果出現(xiàn)“無法創(chuàng)建頂級(jí)目錄”的錯(cuò)誤,請(qǐng)先
cd /
mkdir svn
)
導(dǎo)入項(xiàng)目文件到版本庫
/usr/local/svn/bin/svn import /home/test file:///svn/project/www -m "init"
這條語句將把路徑/share/www下找到的項(xiàng)目文件導(dǎo)入到你創(chuàng)建的/svn/project/www 倉(cāng)庫中去,提交后的修訂版為1
配置提高svn 版本庫的安全性
chmod –R 700 /svn/project/www (不讓其他人有該目錄的權(quán)限)
注意:直接這么chmod 會(huì)導(dǎo)致svn 客戶端無法訪問, 同時(shí)需要修改apache 配置文件./conf/httpd.conf文件,(如果你的水平不夠高的話, 這一步可以先跳過, 以免給自己找麻煩! 等把服務(wù)完全搞定后再來進(jìn)一步提高安全性) 在httpd.conf 文件中有這么一段內(nèi)容: User daemon
Group daemon
,把上述內(nèi)容改成:
User apache
Group apache
(我的系統(tǒng)在安裝apache 的時(shí)候, 自動(dòng)增加了apache 用戶和apache 組, 如果你系統(tǒng)沒有這個(gè)用戶和組, 則請(qǐng)自己添加該用戶和組)
修改svn 倉(cāng)庫的所有者
chown -R apache:apache /svn/project
6. Apache配置:
配置步驟
1 單資源庫,如果打算只建立一個(gè)資源庫,用這種方式。打開命令提示符,輸入svnadmin create E:ResourcesSVNRepositories?A,回車。其中
E:ResourcesSVNRepositories?A為你的資源庫路徑。
2 多資源庫,如果要?jiǎng)?chuàng)建多個(gè)資源庫,用這種方式。打開命令提示符,輸入svnadmin create E:ResourcesSVNRepositories?A,回車;輸入三vsndmin
create E:ResourcesSVNRepositories?B,回車...
首先應(yīng)保證Apache 能正常運(yùn)行。將SVN 根目錄的bin 目錄下的mod_dav_svn.so和 mod_authz_svn.so兩個(gè)文件拷貝到Apache 根目錄下的modules 目錄下;
打開Apache 配置文件httpd.conf ,找到
#LoadModule dav_fs_module modules/mod_dav_fs.so
#LoadModule dav_module modules/mod_dav.so
將前面的#去掉,并添加兩行:
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
在文件末尾加上
如果是單資源庫:
DAV svn
SVNPath E:¥Resources¥SVN¥Repositories
AuthType Basic
AuthName "Subversion Reporsitory"
,AuthUserFile E:¥Resources¥SVN¥conf¥passwd
AuthzSVNAccessFile E:¥Resources¥SVN¥conf¥authz
Require valid-user
如果是多資源庫:
DAV svn
SVNListParentPath on
SVNParentPath E:¥Resources¥SVN¥Repositories
AuthType Basic
AuthName "Subversion Reporsitory"
AuthUserFile E:¥Resources¥SVN¥conf¥passwd
AuthzSVNAccessFile E:¥Resources¥SVN¥conf¥authz
Require valid-user
( 其中:
重啟Apache ,查看Apache Service Monitor狀態(tài)欄是否包含“SVN/1.6.0 DAV/2”字樣。在瀏覽器中輸入http://******/svn/(其中******為你的主機(jī)域名地址或者IP 地址),驗(yàn)證配置。)
方法1:配置svn 權(quán)限管理
1). 添加用戶:
# /usr/local/apache/bin/htpasswd –c /svn/passwd user1
第一次設(shè)置用戶時(shí)使用-c 表示新建一個(gè)用戶文件?;剀嚭筝斎胗脩裘艽a,完成對(duì)用戶的增加, 第二次添加用戶不需要帶-c 參數(shù)
2). 權(quán)限分配:
vi /svn/auth.conf (進(jìn)入文件auth.conf ,對(duì)其進(jìn)行編輯)
,[groups]
Admin=usr1,user2 (這個(gè)表示admin 群組里的成員 user1,user2)
Develop=u1, u2 (這個(gè)表示Develop 群組里的成員 u1,u2)
[www:/] (這表示,倉(cāng)庫www 的根目錄下的訪問權(quán)限)
user1 = rw (www 倉(cāng)庫user1用戶具有讀和寫權(quán)限)
user2 = r ( www 倉(cāng)庫userl 用戶具只有讀權(quán)限)
@develop=rw (這表示 群 develop 的成員都具有讀寫權(quán)限)
[/] (這個(gè)表示在所有倉(cāng)庫的根目錄下)
* = r (這個(gè)表示對(duì)所有的用戶都具有讀權(quán)限)
注意:在編輯authz.conf 文件時(shí),所有行都必須要頂頭寫,否則會(huì)報(bào)錯(cuò)
3). 配置提高svn 版本庫的安全性
chmod –R 700 /svn/project/www (不讓其他人有該目錄的權(quán)限)
注意:直接這么chmod 會(huì)導(dǎo)致svn 客戶端無法訪問, 同時(shí)需要修改apache 配置文件./conf/httpd.conf文件, 在httpd.conf 文件中有這么一段內(nèi)容:
User daemon
Group daemon
把上述內(nèi)容改成:
User apache
Group apache
(我的系統(tǒng)在安裝apache 的時(shí)候, 自動(dòng)增加了apache 用戶和apache 組, 如果你系統(tǒng)沒有這個(gè)用戶和組, 則請(qǐng)自己添加該用戶和組)
修改svn 倉(cāng)庫的所有者
chown -R apache:apache /svn/project
方法2:配置svn 權(quán)限管理(即authz.conf 的配置)
1. 添加用戶:
/usr/local/apache/bin/htpasswd –c /svn/passwd user1
第一次設(shè)置用戶時(shí)使用-c 表示新建一個(gè)用戶文件?;剀嚭筝斎胗脩裘艽a,完成對(duì)用戶的增加,第二次添加用戶不需要帶-c 參數(shù)
2. 權(quán)限分配:
vi /svn/auth.conf (進(jìn)入文件auth.conf ,對(duì)其進(jìn)行編輯)
,[groups]
Admin=usr1,user2 (這個(gè)表示admin 群組里的成員 user1,user2)
Develop=u1, u2 (這個(gè)表示Develop 群組里的成員 u1,u2)
[www:/] (這表示,倉(cāng)庫www 的根目錄下的訪問權(quán)限)
user1 = rw (www 倉(cāng)庫user1用戶具有讀和寫權(quán)限)
user2 = r ( www 倉(cāng)庫userl 用戶具只有讀權(quán)限)
@develop=rw (這表示 群 develop 的成員都具有讀寫權(quán)限)
[/] (這個(gè)表示在所有倉(cāng)庫的根目錄下)
* = r (這個(gè)表示對(duì)所有的用戶都具有讀權(quán)限)
注意:在編輯authz.conf 文件時(shí),所有行都必須要頂頭寫,否則會(huì)報(bào)錯(cuò)
7、重啟apache 服務(wù)和啟動(dòng)svn 服務(wù)
/usr/local/apache/bin/apachectl –k restart
就可以通過 http://192.168.18.110/svn/project/www 這個(gè)URL 來訪問倉(cāng)庫了,當(dāng)然,受權(quán)限的限制,必須是合法用戶才能訪問且具有相應(yīng)的權(quán)限
客戶端
windows 客戶端用TortoiseSVN-1.4.4.9706-win32-svn-1.4.4.msi 也許有更高版本,我沒有測(cè)試
Eclipse 插件:software update > url=http://subclipse.tigris.org/update_1.0.x
注意:
如果輸入用戶名密碼后出現(xiàn):
Could not open the request SVN filesystem
請(qǐng)檢查你的/usr/local/apache/conf/httpd.conf 是否正確
如果客戶端出現(xiàn):
org.tigris.subversion.javahl.clientexception ra layer request failed
請(qǐng)檢查你的url.username password
如果系統(tǒng)時(shí)間和現(xiàn)實(shí)時(shí)間相差太大,可能會(huì)導(dǎo)致安裝出問題,修改系統(tǒng)時(shí)間的命令: Date –s (修改linux 系統(tǒng)時(shí)間)
,訪問過程中出現(xiàn)的兩個(gè)問題:
1. svn: Can?t create directory ?/subversion/main/db/transactions/0-1.txn?: Permission denied
解答:設(shè)置svn 配置庫庫文件夾的權(quán)限(chmod -R 777 /svn/project/www) 2. Error: 服務(wù)器發(fā)送了意外的返回值(403 Forbidden),在響應(yīng) “CHECKOUT” 的請(qǐng)求
[Linux]svn服務(wù)的安裝和啟動(dòng)設(shè)置
在CentOS 系統(tǒng)下,使用以下命令進(jìn)行SVN 服務(wù)的安裝
# yum -y install subversion
安裝完畢后,svnserve 服務(wù)就被添加到了系統(tǒng)的自動(dòng)啟動(dòng)進(jìn)程里面,但是尚未開啟,所以依然無法隨系統(tǒng)自動(dòng)啟動(dòng)服務(wù)。為了安全起見,我們需要修改SVN 服務(wù)端口,及自定義版本庫所在目錄。所以需要對(duì)以下文件進(jìn)行相應(yīng)的修改。
# vi /etc/rc.d/init.d/svnserve
找到以下內(nèi)容
pidfile=${PIDFILE-/var/run/svnserve.pid}
lockfile=${LOCKFILE-/var/lock/subsys/svnserve}
args="--daemon --pid-file=${pidfile} $OPTIONS"
修改為
pidfile=${PIDFILE-/var/run/svnserve.pid}
lockfile=${LOCKFILE-/var/lock/subsys/svnserve}
logfile=/var/log/svnserve.log
args="--daemon --root /storage/repos --listen-port 621 --pid-file=${pidfile} --log-file=${logfile} $OPTIONS"
--root 是版本庫所在的目錄
--listen-port 是SVN 服務(wù)端口號(hào)
--log-file 是SVN 日志文件
修改完成后使用以下命令將自動(dòng)跟隨系統(tǒng)啟動(dòng)功能進(jìn)行激活
# chkconfig svnserve on
也可以使用以下方式進(jìn)行手工操作
# service svnserve start 啟動(dòng)服務(wù)
# service svnserve stop 停止服務(wù)
# service svnserve restart 重啟服務(wù)