linux下安裝apache + subversion
作者:哈密瓜
(我的環(huán)境是centos5.1 apache版本:httpd-2.2.9 subversion版本:subversion-1.5.2)
目錄:
一.安裝apr跟apr-util
二.安裝apache服務(wù)器
三. 安裝subversion
四. 配置subversion
五. 配置apache的httpd.conf
六. 驗(yàn)證安裝
七.導(dǎo)入數(shù)據(jù)到資料庫(kù)
八.版本庫(kù)服務(wù)器的同步
附:安裝過(guò)程中遇到的問(wèn)題
一.安裝apr、apr-util跟zlib
1.下載apr跟apr-util
apr-1.3.3.tar.gz apr-util-1.3.4.tar.gz zlib-1.2.3.tar.gz
2.解壓
tar zvxf apr-1.3.3.tar.gz
tar zvxf apr-util-1.3.4.tar.gz
tar zvxf zlib-1.2.3.tar.gz
3.安裝
cd apr-1.3.3
./configure --prefix=/usr/local/apr
make && make install
cd apr-util-1.3.4
./configure --with-apr=/usr/local/apr
Make && make install
cd zlib-1.2.3
./configure --prefix=/usr/local/zlib
Make && make install
二.安裝apache服務(wù)器:
1. 下載最新的apache 2.2.9
httpd-2.2.9.tar.gz
2.解壓
tar zvxf htt-2.2.9.tar.gz
3. 安裝
./configure \
“--prefix=/usr/local/apache2” \
“ --enable-so” \
“--enable-dav” \
“--with-apr=/usr/local/apr/bin/apr-1-config” \
“--with-apr-util=/usr/local/apr/bin/apu-1-config”
make
make install
注意:--prefix指定安裝目錄,注意一定要加--enable-so是核心能夠裝載DSO和--enable-dav是安裝mod_dav_svn.so跟mod_authz_svn.so這兩個(gè)模塊
4.測(cè)試
打開(kāi)瀏覽器輸入http://服務(wù)器ip 如果出現(xiàn)
It Works!
Apache安裝成功
三. 安裝subversion
1. 下載最新的subversion-1.5.2
subversion-1.5.2.tar.gz
2. 安裝
./configure。
“--prefix=/usr/local/subversion” \
“ --with-apxs=/usr/local/apache2/bin/apxs” \
“--with-apr=/usr/local/apr/bin/apr-1-config” \
“--with-apr-util=/usr/local/apr/bin/apu-1-config” \
“--with-ssl” \
“--with-zlib=/usr/local/zlib” \
“--enable-maintainer-mode”
make
make install
3. 為了方便使用subversion的命令,將subversion安裝目錄下的bin目錄加入到Path中
vi /etc/profile
最后加入:
SVN_HOME=/usr/local/subversion
PATH=$PATH SVN_HOME/bin:
export SUSBVERSION PATH
四. 配置subversion
1. 創(chuàng)建賬號(hào)密碼文件
htpasswd –c /data/svn/passwd.conf apache
輸入密碼,兩次確認(rèn)
注意:第一次設(shè)置用戶密碼要加入 –c 這個(gè)參數(shù),以后就可以不用了
2. 創(chuàng)建資料庫(kù)
首先要?jiǎng)?chuàng)建一個(gè)資料庫(kù)(我使用單資料庫(kù)的方式),使用svnadmin增加資料庫(kù)
cd /usr/local/subversion/bin
./svnadmin create /data/svn/svnroot/www
到www下看是不是多了文件,多了就是說(shuō)明創(chuàng)建成功
3.創(chuàng)建權(quán)限文件
Touch –p /data/svn/authz.conf
vi authz.conf
[groups] #組
Admin = apache #admin組成員
[ggg:/] #版本庫(kù)ggg的權(quán)限
@Admin = rw #admin組有讀寫(xiě)的權(quán)限
test1 = rw #test1有讀寫(xiě)的權(quán)限
[www:/]
@Admin = rw
test2 = rw
[/]
* = r #svn父目錄所有人都與讀的權(quán)限
注意:最后的[/]這個(gè)要設(shè)置好了,這里面的權(quán)限設(shè)置可以讓你對(duì)ggg和www的版本庫(kù)有相同的權(quán)限,一般不要也行,個(gè)人建議不要
五. 配置apache的httpd.conf
打開(kāi)apache的conf/httpd.conf,安裝subversion后,apache的conf/httpd.conf文件會(huì)自動(dòng)增加了模塊
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
相應(yīng)的so文件也自動(dòng)copy到了apache/modules。這些工作就不用自己動(dòng)手了。
需要自己動(dòng)手修改apache下的httpd.conf最后增加以下內(nèi)容
【參數(shù)說(shuō)明見(jiàn)下面的圖】
單個(gè)版本庫(kù):
<Location /svn>
DAV svn
SVNPath /data/svn/svnroot/www
AuthType Basic
AuthName "Subversion repository"
AuthUserFile /data/svn/passwd.conf
AuthzSVNAccessFile /data/svn/authz.cong
Require valid-user
</Location>
多個(gè)版本庫(kù):
<Location /svn>
DAV svn
SVNListParentPath on
SVNParentPath /data/svn/svnroot
AuthType Basic
AuthName " Subversion repository "
AuthUserFile /data/svn/passwd.conf
AuthzSVNAccessFile /data/svn/authz.conf
Require valid-user
</Location>
圖片一
注意:
(1) 單個(gè)版本庫(kù)就是SVNPath /data/svn/svnroot/www跟./svnadmin create /data/svn/svnroot/www目錄要一樣,要不忙死你……【這個(gè)是對(duì)單個(gè)版本庫(kù)】,多個(gè)版本庫(kù)知道svn的主目錄,我這就是SVNParentPath /data/svn/svnroot
(2) AuthzSVNAccessFile是權(quán)限控制文件,單個(gè)版本庫(kù)不需要,多個(gè)版本庫(kù)要設(shè)置不同版本庫(kù)的權(quán)限
(3) 目錄svnroot目錄的權(quán)限設(shè)置成755
注:下面的六、七是單個(gè)版本庫(kù)測(cè)試的效果,多個(gè)版本庫(kù)類(lèi)似!
六. 驗(yàn)證安裝
打開(kāi)瀏覽器,輸入地址為http://服務(wù)器ip/svn
出現(xiàn)登陸窗口,輸入用戶名跟密碼,
圖片二
如果可以正常打開(kāi)如上頁(yè)面則說(shuō)明安裝配置正常,可以正常使用了,在頁(yè)面上可以看到由于目前資料庫(kù)中沒(méi)有內(nèi)容,因此看到的內(nèi)容為空。
七.導(dǎo)入數(shù)據(jù)到資料庫(kù)
Cd /usr/local/subversion/bin
./svn import /要導(dǎo)入的目錄 file:///data/svn/svnroot -m “說(shuō)明文字”
重新打開(kāi)瀏覽器,輸入地址http://服務(wù)器ip/svn,輸入用戶名密碼,出現(xiàn)
圖片三
好了,成功!
八.版本庫(kù)服務(wù)器的同步
1.單版本庫(kù)跟服務(wù)器目錄的同步:
進(jìn)入到版本庫(kù)下的hooks下去
svn checkout file:///版本庫(kù)的目錄 /本地要取出的目錄
Cd /data/svn/svnroot/www/hookd
Vi post-commit
#!/bin/sh
SVN=/usr/local/subversion/bin/svn
WEB=/data/www #web目錄要更新同步的目錄
$SVN update --username apache --passwd 123456 $WEB #這里面的username跟password一定要有讀寫(xiě)的權(quán)限
Chmod 757 post-commit #給它可執(zhí)行的權(quán)利
2.多版本更服務(wù)器目錄的同步
進(jìn)入到版本庫(kù)下的hooks下去
svn checkout file:///版本庫(kù)的目錄 /本地要取出的目錄
Cd /data/svn/svnroot/www/hookd
Vi post-commit
#!/bin/sh
SVN=/usr/local/subversion/bin/svn
$SVN update --username apache --passwd 123456 /home #里面的username跟password一定要有讀寫(xiě)的權(quán)限
Chmod 757 post-commit #給它可執(zhí)行的權(quán)利
注意:(紅色字體一定要注意)
1.svn checkout file:///版本庫(kù)的目錄 /本地要取出的目錄 ——>這步一定要做要不會(huì)同步修改的
2.目錄位置一定要對(duì)應(yīng)好了,要不出現(xiàn)問(wèn)題累死……
附:安裝過(guò)程中遇到的問(wèn)題
1.編譯subversion時(shí)出現(xiàn)少expat庫(kù)
解決:下載expat-2.0.0.tar.gz安裝皆可
2.安裝subversion時(shí),編譯到最后會(huì)出現(xiàn)一段
configure: WARNING: we have configured without BDB filesystem support
大概是不能創(chuàng)建db格式的版本庫(kù)
解決:這個(gè)沒(méi)什么關(guān)系,一般不會(huì)有多大影響
3.安裝subversion時(shí),make沒(méi)問(wèn)題,make install時(shí)出現(xiàn)
/usr/local/src/subversion-1.5.2/subversion/svnversion/.libs/lt-svnversion: error while loading shared libraries: libexpat.so.1: cannot open shared object file: No such file or directory
意思是找不到libexpat.so.1這個(gè)文件
運(yùn)行 whereis libexpat.so.1
libexpat.so: /lib/libexpat.so.0 /usr/local/lib/libexpat.so /usr/local/lib/libexpat.so.1
解決:vi /etc/ld.so.conf
加入libexpat.so.1的目錄 /usr/local/lib/ 保存退出
運(yùn)行l(wèi)dconfig
4.【這個(gè)問(wèn)題是我創(chuàng)建單個(gè)版本庫(kù)時(shí)遇到的】安裝好了后,瀏覽器打開(kāi)http://服務(wù)器ip/svn,登陸出現(xiàn)不了頁(yè)面,出現(xiàn):
<D:error> <C:error/> <m:human-readable errcode="2"> Could not open the requested SVN filesystem </m:human-readable> </D:error>
解決:這是httpd.conf里的<Locate svn>中的SVNPath指向錯(cuò)誤沒(méi)指到創(chuàng)建的資料庫(kù)
第四步的最后我強(qiáng)調(diào)的東西
5.這是開(kāi)始安裝時(shí)會(huì)出現(xiàn)的錯(cuò)誤,安裝subversion時(shí)會(huì)出現(xiàn)找不到arp的問(wèn)題
解決:在編譯subversion時(shí)加入
--with-apr=/usr/local/apr/bin/apr-1-config
--with-apr-util=/usr/local/apr/bin/apu-1-config
6.插張?jiān)L問(wèn)方式跟服務(wù)器安裝方式關(guān)系的介紹圖:
圖片四
這是自己寫(xiě)得,存在問(wèn)題希望大家指出來(lái)!
[ 本帖最后由 gyl4802959 于 2008-11-28 11:58 編輯 ] |