linux搭建svn服務並手動同步代碼到web目錄和自動更新

1.安裝svn服務端linux

yum -y install subversionweb

2.查看安裝路徑等信息vim

rpm -ql subversionbash

3.查看svn幫助信息服務器

svn helpsvn

4.建立svn版本庫目錄(這是個大庫,裏面用svnadmin建立的纔是各個項目的庫)post

mkdir /home/svnDB編碼

5.建立版本庫(項目)日誌

mkdir /home/svnDB/test/code

svnadmin create /home/svnDB/test/

6.配置版本庫

進入/home/svnDB/test/conf,裏面有三個文件

authz文件是權限控制文件

passwd是賬號密碼文件

svnserve.conf SVN服務配置文件

(1)在passwd文件的[users]塊中添加用戶名和密碼:帳號=密碼,例如username=password

(2)在authz的末尾增長

[/]

username=rw

(*=)這個是其餘的都沒有讀寫權限,前面的纔有

(3)在svnserve.conf

去掉四個個的前面的#號,以下

anon-access = none(匿名用戶設置爲none,這樣才能看到日誌信息,不然日誌顯示nodate)

auth-access = write #受權用戶能夠寫

password-db = passwd #使用passwd做爲帳號文件

authz-db = authz #使用authz做爲權限文件

ps:注意,前面不能有空格

7.啓動svn服務,這裏啓動大倉庫

svnserve -d -r /home/svnDB

8.客戶端安裝這裏略過,直接進入服務端的更新到web目錄

svn co svn://你的ip 你想放在那個目錄(這樣的建立到web目錄若是更新能夠在那個目錄下直接svn update,可是有svn的隱藏文件)

svn export svn://你的ip 你想放在哪一個目錄(這樣的web目錄沒有svn隱藏文件,可是不能直接用svn update更新,推薦上面的)

9.使用鉤子進行svn自動更新到web目錄

(1)、cd  /home/svnDB/test/hooks/ 

(2)、cp cp post-commit.tmpl post-commit (複製這份模板文件,由於svn將要執行的是post-commit文件)

(3)、vim post-commit 

將最後面幾行刪除

REPOS="$1"
REV="$2"
mailer.py commit "$REPOS" "$REV" /path/to/mailer.conf

============================================================

而後加上本身將要執行的同步的命令

export LANG=zh_CN.UTF-8  #(這句話比較重要,若是客戶端跟服務器編碼不同會出現同步失敗)
WEB=你的web目錄  #(將要同步過去的web項目路徑)
/usr/bin/svn update $WEB  #(/usr/bin/svn表明你的svn服務文件地址 若是是經過yum安裝的話,或者已經註冊了svn服務,則能夠直接使用svn,不須要輸入全路徑)

wq!保存退出,此時已經完成更新命令

===========================================================================================================================

設置post-commit文件能夠執行權限(若不設置則會出現commit false 255錯誤)

chmod  a+x  post-commit  (或者chmod  777 post-commit)

10.將svn設置開機啓動

找個地方寫個腳本,svnserve命令最好用絕對路徑,可用which svnserve查找,如個人在/usr/bin/svnserve

腳本內容如:

#!/bin/bash

/usr/bin/svnserve -d -r /home/svnDB

保存以後加入到開機啓動文件那裏

11.設置分組和目錄權限

咱們開發的時候是多人,多人可能屬於一個組,有些組權限大,有些組權限小

打開配置文件authz,在[groups]區寫上分組信息,如

g48=akb,ske,nmb

other=mike,tom

而後權限配置

[/]

@g48=rw(以@開頭就是指這個組,這裏/指全部的倉庫的全部目錄都有rw權限)

[test:/controllers]

@other=rw(這裏是test倉庫下的controllers文件夾有rw權限,這個組checkout項目的時候地址就是svn://ip地址/test/controllers)

設置這些權限以後還要對應的去passwd文件設置賬號密碼,而後重啓svn

12.開啓修改日誌權限

只要將文件hooks目錄下的pre-revprop-change.tmpl更名爲pre-revprop-change,並加上執行權限便可。

不過這樣全部人均可以修改,還能修改其餘人的日誌

 

  1. 建立svn目錄
    mkdir /home/svn   //在home目錄下建立svn 文件夾
    
    svnadmin create /home/svn/test //建立svn版本倉庫 test

    建立完畢之後,在svn目錄下你會看到test目錄,test目錄詳細詳細以下


    下面是這些目錄的詳細講解

    在本文章主要是配置svn的信息以及如何同步代碼,因此涉及的目錄只有conf目錄以及hooks目錄,下面,咱們開始講解如何配置svn

  3.配置svn的基本信息

  1. cd ./conf //進入配置文件夾

  
  authz  文件是建立svn組和組用戶的權限
  passwd  設置組中用戶的帳號和密碼 
  svnserve.conf 配置版本庫信息和用戶文件和用戶密碼文件的路徑、版本庫路徑
  (若是是多個倉庫經過相同權限,帳號和密碼控制,能夠將authz,passwd文件放到svn目錄下)

  (1)authz 配置svn組和組用戶的權限

[group]
test = user1,user2 //建立test用戶組,並添加user1 user2用戶

[/]    //指定根目錄先的權限
@test = rw  //設置test組的權限爲可讀可寫

  (2)passwd 配置用戶密碼

[users]

user1 = 12345678   //用戶名就是組添加成員是的用戶     
user2 = 12345677

  (3)svnserve.conf 配置版本庫信息和用戶文件和用戶密碼文件的路徑、版本庫路徑

[general]
anon-access = none        //其餘人不可讀取
auth-access = write         //設置authz中用戶的權限爲可寫
password-db = passwd     //指向本身passwd文件
authz-db = authz             //指向authz文件
realm = /home/svn/test

  以上就是配置svn的權限,用戶帳戶密碼以及倉庫路徑

  此時,你須要將svn重啓,重啓方式如下

ps -ax | grep svn    //查出svn進程

kill -9 ******    //經過kill -9方式殺死進程 *****是對應的pid

svnserve -d -r /home/svn //啓動svn服務,固然你若是是想啓動具體的倉庫,能夠將路徑寫的更加詳細一點

  4.使用post-commit 實現同步代碼

  代碼同步須要使用到hooks文件目錄下的post-commit勾子文件,在hooks下不少tmpl文件,這些文件都是勾子的模板來的,
  若是須要使用的時候copy 一份去掉.tmpl後綴即可使用

  (1)生成一個新的有效的勾子文件post-commit

cp post-commit.tpml post-commit
chmod 777 post-commit //設置post-commit 文件的權限 切記這步必定不可漏,否則後期運行時會報錯

  這樣就會生成一個有效的post-commit 文件

  (2)同步代碼操做

#!/bin/sh
export LANG=en_US.UTF-8
SVN_PATH=/usr/bin/svn
WEB_PATH=/data/wwwroot/default/test    //test目錄就行你的項目的目錄
$SVN_PATH update $WEB_PATH --username user1 --password 12345678    //切記--username --password 是兩個-

  (3)進入服務器目錄,將項目checkout 出來

svn co svn://localhost/test/  /data/wwwroot/default/test --username user1 --password 12345678

 這樣子你的代碼同步功能已經實現了

 5.客戶端使用

  你只需下載個 tortoiseSVN 小烏龜而後將test倉庫拉取下來,而後將代碼放入倉庫文件夾中,經過添加文件方式add 後再commit ,你的項目就會同步到服務器中
  

 6.我遇到的那些錯誤

  1.首先客戶端鏈接svn服務器錯誤,之因此會鏈接失敗,是由於個人防火牆並無開啓3690(svn默認端口),你只需開啓便可
  不會請看這個連接 http://www.linuxidc.com/Linux/2012-09/70785.htm

  2.同步失敗  是由於post-commit文件的權限緣由,你只需將權限設置大於755便可

  3.提示**** is a direcitory /usr/bin/svn你把這個搞錯了,他不是一個目錄,是svn的路徑

相關文章
相關標籤/搜索