在linux上搭建SVN服務器並自動更新至WEB目錄


1、倉庫放在 /var/svn/ 目錄下,並且倉庫名為 project

2、創建用戶組user,該組下添加兩個成員user1、user2,密碼直接用用戶名,兩用戶可以checkout代碼和提交代碼

3、利用SVN的鈎子實現當倉庫的代碼更新的時候自動同步至我們的web目錄,在這里,我的web目錄在 /var/www/html 下

一、搭建svn環境並創建倉庫:

1、安裝Subversion:

  yum install -y subversion

2、檢測是否安裝成功(查看svn版本號)

  svnserve --version

3、創建版本庫

  先建目錄 mkdir /var/svn

  CD到這個目錄 cd /var/svn

  創建版本庫 svnadmin create /var/svn/project cd project (會看到自動生成的版本庫文件 conf db format hooks locks README.txt)

  

二、創建用戶組及用戶:

1、 進入版本庫中的配置目錄conf(三個文件): svn服務綜合配置文件(svnserve.conf)、 用戶名口令文件(passwd)、權限配置文件(authz)。

2、修改權限配置文件:vim authz

  

3、配置用戶名命令文件:vim passwd

  

4、配置SVN服務綜合配置文件svnserve.conf

  找到以下配置項,將前面的#號去掉,然后做相應的配置

   anon-access = none 匿名用戶訪問權限:無

  auth-access = write 普通用戶訪問權限:讀、寫

  password-db = passwd 密碼文件

  authz-db = authz 權限配置文件

 

  realm = /var/svn/project 版本庫所在

  注意:所有以上的配置項都需要頂格,即前面不能預留空格,否則報錯

5、啟動svn服務:

  svnserve -d -r /var/svn

  如果提示:svnserve: E000098: Can't bind server socket: Address already in use  

  證明現在svn已經被啟動了,由於我們修改了配置文件,因此要重啟svn服務

  停止svn服務 killall svnserve

  再運行 svnserve -d -r /var/svn,進行啟動服務  

6、測試服務器:

   我們在web目錄測試(/www/html)

   cd //www/html

   svn co svn://localhost/project (如果提示:Checked out revision 1. 表示checkout成功)

  我們添加新文件來測試是否提交成功

  cd //www/html

  touch index.php 

  svn add index.php  成功的話會顯示 (A index.php)

  svn commit index.php -m "測試提交文件" (如果成功會顯示:Adding index.php Transmitting file data . Committed revision 2. 則表示我們svn服務器搭建成功!文件已經能夠推送了。)

7、本地拉取、推送

  

  

  輸入用戶名稱和密碼(如果失敗去看看 端口3690是否被禁用 )

三、實現svn更新自動同步到web目錄:

  1、在web目錄中checkout版本庫

  這一步算是比較關鍵的一步了,當時我搭建的時候試了無數次,就是缺少了這一步。把剛才checkout的版本庫刪掉,我們來一次比較正式的checkout:

  svn co svn://localhost/project /www/html --username user1(SVN賬號) --user1(SVN密碼)

  進入/var/svn/project/hooks下,建立post-commit文件:

  cd /var/svn/project/hooks

  vim post-commit

  //在該文件里添加如下代碼,保存

  #!/bin/sh

  #設定環境變量,如果沒有設定可能會出現update報錯

  #設定語言,根據系統語言設置,如果是GBK就設置為 LANG=zh_CN.GBK

  export LANG=en_US.utf8

  SVN_PATH=/usr/bin/svn //這里不用改

  WEB_PATH=/www/html //web目錄,如果你的不同,可以改

  //這里的用戶隨便一個就好

  $SVN_PATH update $WEB_PATH --username 'user1' --password 'user1' --no-auth-cache

  保存退出。

  修改post-commit用戶為www目錄用戶

  chown apache:apache post-commit //我的 /home/www 的用戶組和所有者都是apache

  給post-commit 執行權限:

  chmod 755 post-commit

  本博客主要參考了:http://blog.csdn.net/baidu_30000217/article/details/51396016?locationNum=1


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM