CentOS下安裝配置SVN服務器並自動同步到web目錄

1、安裝php

yum install subversion測試是否安裝成功web

/usr/bin/svnserve --version如提示如下內容,說明已安裝成功shell

svnserve,版本 1.6.11 (r934486)
編譯於 May 14 2012,05:36:26vim

版權全部 (C) 2000-2009 CollabNet。
Subversion 是開放源代碼軟件,請參閱 http://subversion.tigris.org/ 站點。
此產品包含由 CollabNet(http://www.Collab.Net/) 開發的軟件。後端

下列版本庫後端(FS) 模塊可用:服務器

* fs_base : 模塊只能操做BDB版本庫。
* fs_fs : 模塊與文本文件(FSFS)版本庫一塊兒工做。svn

Cyrus SASL 認證可用。
2、配置
一、新建一個目錄:repos,可用於存儲SVN全部文件post

mkdir -p /opt/svn/repos測試

二、新建一個版本倉庫編碼

svnadmin create /opt/svn/repos

三、初始化版本倉庫中的目錄

mkdir project project/server project/client project/test(臨時目錄)
svn import project/ file:///opt/svn/repos/project -m '初始化svn目錄'
rm -rf project (可選 若是project沒用,能夠刪除)

四、修改svn版本庫的配置文件
vim /opt/svn/repos/conf/svnserve.conf

修改成以下內容:

[general]
anon-access = none
auth-access = write
password-db = /opt/svn/project/conf/passwd
authz-db = /opt/svn/project/conf/authz
realm = LAMP100 repos

注意:對用戶配置文件的修改當即生效,沒必要重啓svn。

五、添加用戶
要添加SVN用戶很是簡單,只需在/opt/svn/project/conf/passwd文件添加一個形如「username=password」的條目就能夠了.爲了測試,我添加了以下內容:

[users]
# harry = harryssecret
# sally = sallyssecret
pm = pm_pw
server_group = server_pw
client_group = client_pw
test_group = test_pw

六、修改用戶訪問策略
/opt/svn/project/conf/authz記錄用戶的訪問策略,如下是參考:

[groups]
project_p = pm
project_s = server_group
project_c = client_group
project_t = test_group

[project:/]
@project_p = rw
* =

[project:/server]
@project_p = rw
@project_s = rw
* =

[project:/client]
@project_p = rw
@project_c = rw
* =

[project:/doc]
@project_p = rw
@project_s = rw
@project_c = rw
@project_t = rw
* =以上信息表示,只有pm有根目錄的讀寫權,
server_group能訪問server目錄,
client_group能訪問client目錄,
全部人均可以訪問doc目錄.

七、啓動svn服務

svnserve -d --listen-port 9999 -r /opt/svn (以root用戶在運行)

八、測試svn服務器

cd /web/
svn co svn://192.168.10.10/repos/project
Authentication LAMP100 repos: <svn://192.168.10.10:9999> 92731041-2dae-4c23-97fd-9e1ed7f0d18d
Password for 'root':
Authentication LAMP100 repos: <svn://192.168.10.10:9999> 92731041-2dae-4c23-97fd-9e1ed7f0d18d
Username: server_group
Password for 'server_group':
svn: Authorization failed ( server_group沒用根目錄的訪問權 )

# svn co svn://192.168.10.10/repos/project
Authentication LAMP100 repos: <svn://192.168.10.10:9999> 92731041-2dae-4c23-97fd-9e1ed7f0d18d
Password for 'root':
Authentication LAMP100 repos: <svn://192.168.10.10:9999> 92731041-2dae-4c23-97fd-9e1ed7f0d18d
Username: pm
Password for 'pm':
A project/test
A project/server
A project/client
Checked out revision 1. ( 測試提取成功 )

# cd project/server
# vim index.PHP
# svn add index.php
# svn commit index.php -m "測試一下個人PHP程序"
Adding index.php
Transmitting file data .
Committed revision 2. ( 測試提交成功 )

3、配置post-commit,實現自動同步svn版本庫文件到web目錄
爲了能夠在修改完代碼提交到SVN服務器後,WEB服務器直接同步.須要配置SVN的鉤子,打開hooks目錄,
能夠看到有一個post-commit.tmpl文件,這是一個模板文件,
複製一份放在此目錄下,命名爲post-commit,並將其用戶組設爲www,並設置爲可執行:

chown www:www post-commit
chmod +x post-commit這樣就有了訪問www目錄的權限。
裏面原有的代碼所有註釋掉.這裏能夠執行shell命令,每次commit完成後都會調用此文件.

個人文件內容爲:

#!/bin/sh
#設定環境變量,若是沒有設定可能會出現update報錯
export LANG=zh_CN.UTF-8
REPOS="$1"
REV="$2"
SVN_PATH=/usr/bin/svn
WEB_PATH=/web/project
LOG_PATH=/tmp/svn_update.log
#/usr/bin/svn update --username user --password password $WEB_PATH --no-auth-cache
echo "nnn##########開始提交 " `date "+%Y-%m-%d %H:%M:%S"` '##################' >> $LOG_PATH
echo `whoami`,$REPOS,$REV >> $LOG_PATH
$SVN_PATH update --username user --password password $WEB_PATH --no-auth-cache >> $LOG_PATH
chown -R www:www $WEB_PATH

說明:一、#!/bin/sh 說明是執行shell命令二、export LANG=zh_CN.UTF-8 是爲了解決svn post commit 中文亂碼。若是你是GBK編碼可能會提示:Error output could not be translated from the native locale to UTF-8這是客戶端和服務器編碼的問題,默認是utf-8,可嘗試設置export LANG=zh_CN.GBK或者export LANG=en_US.UTF-8#執行更新操做三、svn update –username 你版本庫的用戶名 –password 用戶名的密碼 svn://你的IP地址:端口/repos/project /web/project四、chown -R www:www $WEB_PATH 更改文件夾屬主爲適合Web Server的裏面原有的代碼所有註釋掉.這裏能夠執行shell命令,每次commit完成後都會調用此文件。

相關文章
相關標籤/搜索