ubuntu搭建svn服務器並htpp訪問版本庫並svn與web同步

Ubuntu搭建SVN服務器多版本庫

1  介紹
  Subversion是一個自由,開源的版本控制系統,這個版本庫就像一個普通的文件服務器,不一樣的是,它能夠記錄每一次文件和目錄的修改狀況。這樣就可 以很方面恢復到之前的版本,並能夠查看數據更改細節。目前,Subversion已成爲主流的開源代碼版本管理軟件之一,簡稱SVN。
2.  安裝和服務器搭建
    執行下列指令安裝 
sudo apt-get install subversion
3  建立版本庫
   3.1先建立目錄文件夾
sudo mkdir /home/svn
sudo mkdir /home/svn/project1
sudo mkdir /home/svn/project2
   3.2建立第一個項目project1 第二個項目project2
svnadmin create /home/svn/project1
svnadmin create /home/svn/project2
4. 爲了便於管理,將全部版本庫的密碼和權限設置在同一個文件下面,操做步驟以下:
    4.1 取出project1下面conf文件夾下的authz和passwd兩個文件到svn根目錄下面
    4.2 修改每一個版本庫目錄conf文件夾下面的svnserve.conf文件, 將
         # anon-access = read ,#auth-access = write ,# password-db = passwd,#authz-db = authz 修改成:
           anon-access = none ,auth-access= write,password-db = ../../passwd,authz-db = ../../authz
           (password-db = ../../passwd,authz-db = ../../authz表明相對路徑而非絕對路徑)
5. 定義一下幾個角色用來測試
    5.1 配置管理員(svnadmin),用來管理整個庫
    5.2 項目經理(manage),用來相關管理文檔
    5.3 開發人員 (dev),測試開發是否正常
 6. 下面添加角色
       打開svn目錄下的passwd文件,建立方法是在[user]下面添加 username = passwd,記得「=」先後的空格,以下圖:
    (svnadmin控制全部項目,統一管理)
 
7. 爲角色分配權限:
       假設(quxin是project1的項目經理,huzhixin是project2的項目經理,dev一、dev2是project1 的開發人員,dev三、dev4是project2的開發人員,test1是             project1的測試人員,test2是project2的測試人員)
       庫目錄及具體權限以下圖所示:
       
    具體權限:(根目錄下,svnadmin擁有全部權限,其餘人只有讀權限,要設置子目錄權限,需設置子目錄上級的權限方可,設置個別文件權限以下:)
   
8啓動svn服務
   一次啓動  sudo svnserve -d -r /home/svn
查看是否啓動成功,可看的監聽3690端口
sudo netstat -antp |grep svnserve
tcp 0 0 0.0.0.0:3690 0.0.0.0:* LISTEN 28967/svnserve
若是想關閉服務,可以使用pkill svnserve
    開機自啓動svn
在/etc/init.d目錄創建一個腳本文件svnd.sh
cd /etc/init.d
touch svnd.sh
chmod +x svnd.sh
vi svnd.sh
輸入以下內容:
#!/bin/bash
#svnserve startup
svnserve -d -r /ysh/svn
更新修改權限:
update-rc.d svnd.sh defaults
(若提示權限不足,請用sudo執行)
9 工具
SVN 服務器端:Subversion 1.5 ,客戶端 TrotoiseSVN 1.5 ( https://tortoisesvn.net/downloads.html)
10訪問版本庫地址
svn://ip/project1
svn://ip/project2
 
阿里雲Ubuntu系統搭建SVN版本庫瀏覽服務器
(4)sudo apt-get install apache2-utils libapache2-svn
其中subversion是SVN必須的,apache2和libapache2-svn是爲了配置SVN服務器支持經過HTTP訪問
##SVN服務器配置
一、相關用戶、組的設定
sudo addgroup subversion
sudo usermod -G subversion -a www-data
二、配置Subversion
(1)配置dav_svn.conf文件
vim /etc/apache2/mods-available/dav_svn.conf
按照下面的步驟進行配置便可
<1>刪除<Location /svn>和DAV svn這兩行前面的註釋
 
<2>刪除SVNParentPath ...前面的註釋,而且把後面的路徑替換成建立的SVN的項目路徑/home/svn 
 
<3>刪除AuthType Basic、AuthName 「Subversion Repository」前面的註釋,去掉AuthUserFile所在行前面的註釋,而且修改後面的路徑爲/etc/subversion/dav_svn.passwd,去掉AuthzSVNAccessFile所在行前面的註釋,而且修改後面的路徑爲/etc/subversion/dav_svn.authz,刪除Require valid-user和</Location>前面的註釋,具體以下所示:
其中:
/etc/subversion/dav_svn.passwd文件是SVN用戶名和密碼的配置,指定基本用戶驗證的密碼文件存放的位置
/etc/subversion/dav_svn.authz文件是訪問權限配置
重啓Apache 2 WEB服務器
sudo /etc/init.d/apache2 restart
三、更改版本庫所示的用戶、組
sudo chown -R root:subversion project1
賦予組成員對全部新加入文件倉庫的文件擁有相應的權限
sudo chmod -R g+rws project1
四、用戶和權限配置
(1)建立dav_svn.passwd文件並添加用戶admin001,執行命令後會提示要輸入密碼
sudo htpasswd -c /etc/subversion/dav_svn.passwd admin001
繼續添加新用戶,去掉-c,不然會覆蓋本文件
sudo htpasswd /etc/subversion/dav_svn.passwd admin002
(2)建立受權文件
vim /etc/subversion/dav_svn.authz
裏面加入project1的權限配置,如
[groups]
administrator=admin001,admin002
[project1:/]
@administrator=rw
五、重啓SVN服務器
killall svnserve
svnserve -d -r /home/svn/
至此SVN服務器搭建完成,能夠在終端執行
svn checkout http://hostname/svn/project1   project1 --username 用戶名 --password 密碼 來checkout項目了
 
svn co svn:// hostname/project1  /var/www/html/project1
sudo chmod -R 777 /var/www/html/XXX/ 
配置post-commit,實現自動同步svn版本庫文件到web目錄 
爲了能夠在修改完代碼提交到SVN服務器後,WEB服務器直接同步.須要配置SVN的鉤子,進入hooks目錄,
cd /opt/svndata/repos/hooks
ls
能夠看到有一個post-commit.tmpl文件,這是一個模板文件,複製一份放在此目錄下,命名爲post-commit,並將其用戶組設爲www,並設置爲可執行:
cp post-commit.tmpl post-commit
chmod +x post-commit
這樣就有了訪問www目錄的權限。
裏面原有的代碼所有註釋掉.這裏能夠執行shell命令,每次commit完成後都會調用此文件.
文件內容參考如下:
vi post-commit
 
#!/bin/sh
LANG=en_US.UTF-8
REPOS="$1"
REV="$2"
SVN_PATH=/usr/bin/svn
WEB_PATH=/var/www/html/XXX
LOG_PATH=/tmp/svn_update.log
#此行已註釋
#/usr/bin/svn update --username user --password password $WEB_PATH --no-auth-cache
echo "\n\n\n##########開始提交 " `date "+%Y-%m-%d %H:%M:%S"` '##################' >>$LOG_PATH
echo `whoami`,$REPOS,$REV >> $LOG_PATH
#注意將此行user和password改成你具體的user和password
$SVN_PATH update --username user --password password $WEB_PATH --no-auth-cache >> $LOG_PATH
#chown -R www:www $WEB_PATH
關閉:killall svnserve svn
開啓: svnserve -d -r /home/svn/
裏面原有的代碼所有註釋掉.這裏能夠執行shell命令,每次commit完成後都會調用此文件。
 
問題解決: 

一、阿里雲服務器Ubuntu14系統搭建svn服務時候注意配置安全組中的規則html

入站和出站  3690/3690   0.0.0.0/0web

https://help.aliyun.com/document_detail/25475.html?spm=5176.2020520101.121.1.417f9c6cF8FDFwshell

二、阿帕奇配置apache2 配置文件記得添加ServerName  IPapache

https://askubuntu.com/questions/329323/problem-with-restarting-apache-2ubuntu

三、Sudo問題:修,/etc/hosts 添加/etc/hostname中的字符串vim

四、 解決svnserve: Can't bind server socket: Address already in use安全

/etc/init.d/svnserve start bash

netstat -antple | grep svn服務器

killall  svnservesocket

解決辦法:

# svnserve -d -r /mnt/westos --listen-port 3691

相關文章
相關標籤/搜索