Linux安裝SVN實現自動同步到Web目錄

我的博客:
Linux安裝SVN實現自動同步到Web目錄shell

一:安裝SVN
1,檢查服務器是否安裝SVNvim

svn --version
    已安裝:
        svn, version 1.6.11 (r934486)
            compiled Aug 17 2015, 08:37:43
        Copyright (C) 2000-2009 CollabNet.
        Subversion is open source software, see http://subversion.tigris.org/
        This product includes software developed by CollabNet (http://www.Collab.Net/).
        The following repository access (RA) modules are available:
        * ra_neon : Module for accessing a repository via WebDAV protocol using Neon.
          - handles 'http' scheme
          - handles 'https' scheme
        * ra_svn : Module for accessing a repository using the svn network protocol.
          - with Cyrus SASL authentication
          - handles 'svn' scheme
        * ra_local : Module for accessing a repository on local disk.
          - handles 'file' scheme
    未安裝:
        -bash: svn: command not found

2,未安裝使用yum安裝bash

yum install subversion

3,建立倉庫目錄(倉庫目錄可更改到其餘目錄,看你意願)服務器

mkdir –p /svn

4,建立項目版本庫socket

svnadmin create /svn/davesvn  --davesvn爲版本庫名稱

5,建立成功後進入版本庫目錄svn

cd /svn/davesvn
ls 查看目錄下生成的文件
conf    存放版本庫所用配置文件的目錄
db      版本數據存儲目錄
format  存儲一個整數的文件,此整數表明庫層次結構版本
hooks   存放版本庫勾子目錄
locks   存儲庫鎖目錄,用來跟蹤庫的訪問者
README.txt

6,接下來開始配置SVNpost

cd conf
ls 
authz           |  權限配置文件
passwd          |  用戶名口令文件
svnserve.conf   |  svn服務配置文件
//配置密碼 XXX=XXX
vim password
[users]  
zhan = 123456
//配置權限 XXX=XXX
vim authz
[/]
zhan = rw
//配置svnserve.conf  取消如下注釋 注意不要有空格
vim svnserve.conf
anon-access = read      #匿名用戶可讀  
auth-access = write     #受權用戶可寫  
password-db = passwd    #使用哪一個文件做爲帳號文件  
authz-db = authz        #使用哪一個文件做爲權限文件  
realm = /svn/davesvn    #認證空間名,版本庫所在目錄

7,啓動SVN服務編碼

svnserve -d -r /svn/davesvn
-d 表示後臺運行
-r 指定目錄是 /svn/davesvn
若提示:svnserve: Can't bind server socket: Address already in use
表示服務已經啓動,先中止服務
ps -ef | grep svn
kill -9 [進程號] 殺掉進程

二,實現自動部署項目
1,使用post-commit實現自動部署code

在/svn/davesvn/hooks下建立post-commit文件,文件設置可執行權限
cp post-commit.tmpl post-commit
chmod 755 post-commit

2,打開post-commit文件,清空post-commit內容,加入如下內容orm

!/bin/sh
export LANG=zh_CN.UTF-8
svn co svn://[你的ip地址]/davesvn [WEB實際目錄]
LOG_PATH=/tmp/svn_test.log
WEB=[WEB實際目錄]
REPOS="$1"
REV="$2"
svn update --username [剛設置的SVN用戶名] --password [剛設置的SVN密碼] $WEB --no-auth-cache >> $LOG_PATH

3,最後回到shell

svn co svn://你的ip/davesvn [WEB目錄]
按照提示輸入帳號密碼實現自動同步

三,使用

SVN檢出:查看是否能夠正常檢出
svn://服務器IP:3690/davesvn
正常檢出後提交查看WEB目錄是否實現同步內容

排坑:

svn錯誤:post-commit hook failed (exit code 1) with output.
1,檢查post-commit裏面設置的字符編碼是否正確
    原來是#export LANG=zh_CN.GBK
    修改成export LANG=en_US.UTF-8便可(svn服務器默認是utf8)
2,檢查post-commit裏面設置的帳號密碼和SVN配置裏面的帳號密碼是否正確
3,255錯誤:post-commit有沒有給執行權限
4,查看服務器3690端口是否開啓
4,最後不管在作什麼,最主要的仍是細緻,看報錯信息,不要慌張
相關文章
相關標籤/搜索