Linux下搭建SVN服務器及自動更新項目文件到web目錄(www)的方法

首先搭建SVN服務器
1,安裝SVN服務端
直接用apt-get或yum安裝subversion便可(固然也能夠本身去官方下載安裝)
sudo apt-get install subversion
 
2,建立版本庫
svnadmin create /home/myrepos    //這裏的文件目錄本身隨便設置 
 
3,配置svnserve
上述版本庫/home/myrepos創建後在文件夾下會生成conf文件夾,進入/home/myrepos/conf下面會有下面3個文件
authz passwd svnserve.conf
咱們依次修改
3.1,svnserve.conf修改如下幾個部分:
  • authz-db = authz
  • auth-access = write
  • password-db = passwd
  • authz-db = authz
3.2,passwd修改成:
  • [users]  
  • username = password    //這裏的username和password本身設置  
3.3,authz最後加上如下兩行(這兩行解決了 SVN客戶端解決authorization failed問題)
  • [/]
  • * = rw
4,啓動svnserve便可:
svnserve -d -r /home/myrepos/ 
 
5,客戶端使用:
客戶端用svn或者windows下的TortoiseSVN客戶端
5.1,從服務端checkout版本庫(在當前目錄下)
svn checkout svn://服務器的ip地址/
5.2,本身增長一些文件,或者把以前的東西(以下面三個文件夾)拷貝到當前目錄下,想讓svn幫你管理
code project document
5.3,假設我把上述三個文件夾放到當前svn的文件夾下想讓svn管理,而後我要作的是添加到svn版本庫裏:
svn add code project document    //或者直接用svn add * 
5.4,最後提交到svn服務器
svn commit -m 'import three directories' 
必定要對當前版本寫註釋。
 
而後配置SVN鉤子自動更新項目文件到web目錄
 
在SVN服務器端
說明:
服務器操做系統:ubuntu(linux)
SVN安裝路徑:/usr/bin/svn
SVN項目路徑:/home/svn
SVN登陸帳號:yourname
SVN登陸密碼:yourpass
Web站點根目錄:/home/wwwroot/
實現目的:
當svn項目中有任何修改更新時,系統會自動實時從svn中檢出文件並同步到Web站點根目錄
具體操做:
1、使用SVN中post-commit實現自動實時從svn中檢出文件並同步到Web站點根目錄
cd /home/svn/hooks
cp post-commit.tmpl post-commit
vim post-commit #編輯,添加如下代碼
REPOS="$1"
REV="$2"
export LANG=en_US.UTF-8
SVN_PATH=/usr/bin
WEB_PATH=/home/wwwroot/
SVN_USER=admin
SVN_PASS=admin
LOG_PATH=/tmp/svn.log
echo `date "+%Y-%m-%d %H:%M:%S"` >> $LOG_PATH
echo `whoami`,$REPOS,$REV >> $LOG_PATH
$SVN_PATH/svn update $WEB_PATH --username $SVN_USER --password $SVN_PASS --no-auth-cache >> $LOG_PATH
:wq #保存退出
chown www:www /home/svn/hooks/post-commit #設置腳本所屬用戶組,www爲web服務運行帳戶和組
chmod +x /home/svn/hooks/post-commit #添加腳本執行權限
說明:
whoami #執行此程序的用戶
REPOS="$1" #svn項目絕對路徑值
REV="$2" #最新版本號
--no-auth-cache #不保存帳戶認證信息
2、客戶端測試
使用svn客戶端添加一個文件以後,進行svn添加並提交操做進入服務器/home/wwwroot目錄下能夠看到提交到svn的文件已自動更新到web目錄下
至此,Linux下SVN服務器自動更新文件到Web目錄教程完成。
 
ps:你可能會遇到這個問題
在日誌文件中
Skipped "/home/wwwroot"
而後提交的文件並無自動更新到web目錄下
個人解決方法是:
cd /home/wwwroot/
svn checkout svn://服務器的ip地址 ./
而後你新提交的文件就能夠自動更新到web目錄下了
分析緣由:/home/wwwroot/目錄下不存在.svn目錄,svn不知道/home/wwwroot/
checkout後會在/home/wwwroot/目錄下生成.svn目錄,而後就能夠識別並自動更新提交的文件到改目錄下了
相關文章
相關標籤/搜索