Centos 6.* 部署subversion 整合 svnadmin WEB管理介面

weixin_33936401發表於2017-06-29

前言:

SVN是Subversion的簡稱,是一個開放原始碼的版本控制系統,相較於RCS、CVS,它採用了分支管理系統,它的設計目標就是取代CVS。網際網路上很多版本控制服務已從CVS遷移到Subversion。說得簡單一點SVN就是用於多個人共同開發同一個專案,共用資源的目的。當然也可用於檔案文件型別的共享。
SvnAdmin是一個 Java 開發的管理 Svn 伺服器的專案使用者的 web 應用。安裝好 Svn 伺服器端好,把 Svn Admin 部署到 Tomcat ,就可以通過 web 瀏覽器管理 Svn 的專案,管理專案的使用者,管理專案的許可權。使得管理配置 Svn 簡便,再也不需要每次都到伺服器手工修改配置檔案。

一:環境介紹

1.作業系統:Centos 6.* ( 雙核4G、硬碟至少20G)
2.應用軟體:

apr、apr-util、apache subversion、sqlite-amalgamation、jdk、apache-tomcat、svnadmin、mysql

二:軟體下載

(下載最新版本即可)
apr、apr-util 下載:http://apr.apache.org/download.cgi

apr-1.5.2.tar.gz
apr-util-1.5.4.tar.gz

apache subversion 下載:http://subversion.apache.org/download.cgi

subversion-1.9.5.tar.gz

sqlite-amalgamation-*下載:http://www.sqlite.org/download.html

sqlite-amalgamation-3190300.zip

jdk下載:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

jdk-8u131-linux-x64.tar.gz

apache tomcat 下載:http://tomcat.apache.org/download-70.cgi

apache-tomcat-7.0.78.tar.gz

svnadmin專案下載(需要VPN連線):https://code.google.com/archive/p/jsvnadmin/downloads

svnadmin-3.0.5.zip

二:安裝subversion

1.yum 安裝依賴庫
yum install unzip openssh-clients zlib zlib-devel gcc-c++ -y
2.編譯安裝 apr 和 apr-util
tar -zxf apr-1.5.2.tar.gz 
cd /root/apr-1.5.2
./configure --prefix=/usr/local/apr && make && make install

tar -zxf apr-util-1.5.4.tar.gz 
cd /root/apr-util-1.5.4
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr && make && make install
3.編譯安裝subversion
tar -zxf subversion-1.9.5.tar.gz

unzip sqlite-amalgamation-3071501.zip

mv sqlite-amalgamation-3071501 subversion-1.9.5/sqlite-amalgamation

cd  subversion-1.9.5

./configure --prefix=/usr/local/subversion --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-zlib --enable-maintainer-mode
make
make install
4.將subversion 加入系統環境變數
echo "export SVN_HOME=\"/usr/local/subversion\"
export PATH=\"\$PATH:\$SVN_HOME/bin\"" >> /etc/profile
source /etc/profile
5.建立subversion庫
mkdir /opt/subversion/svn/test -p
svnadmin create /opt/subversion/svn/test
6.指定庫 指定埠 啟動subversion
svnserve -d -r /opt/subversion/svn --listen-port=3690

檢視svn埠3690是否存在

netstat -ntpl

防火牆開啟3690埠
vim /etc/sysconfig/iptables

# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3690 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

重啟防火牆

/etc/init.d/iptables restart

檢視防火牆
iptables -L -n

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED 
ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22 
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:3690 
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:3306 
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:8080 
REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 
REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

二:部署svnadmin

1.安裝jdk,將jdk的tar包解壓,然後加入系統環境變數即可
tar -zxf jdk-8u131-linux-x64.tar.gz -C /usr/local

編輯/etc/profile檔案在末尾加入下列語句
vim /etc/profile

JAVA_HOME=/usr/local/jdk1.8.0_131
JRE_HOME=/usr/local/jdk1.8.0_131/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$HOME/bin:/sbin:/usr/bin:/usr/sbinexport:/usr/local/sbin:/usr/local/bin:/bin:/usr/sbin:/root/bin
CLASSPATH=.:$JAVA_HOME/lib/jt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export JAVA_HOME JRE_HOME PATH CLASSPATH

source /etc/profile
[root@localhost ~]#java -version

java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)

至此jdk安裝完畢

2.mysql的安裝請轉到http://www.jianshu.com/p/d9f33d1189d8檢視

配置mysql使用者並建立svnadmin庫即可

mysql> create database svnadmin;
3.解壓tomcat,刪除webapps下的檔案
tar -zxf apache-tomcat-7.0.78.tar.gz -C /opt
rm -rf /opt/apache-tomcat-7.0.78/webapps/*

4.配置svnadmin

解壓svnadmin-3.0.5.zip將svnadmin.war 移動到/opt/apache-tomcat-7.0.78/webapps/

unzip svnadmin-3.0.5.zip
mv svnadmin.war /opt/apache-tomcat-7.0.78/webapps/

啟動tomcat,讓tomcat自行解壓war包,然後編輯資料庫配置檔案的#mysql段,使其可以正常連線資料庫

/opt/apache-tomcat-7.0.78/bin/startup.sh

vim /opt/apache-tomcat-7.0.78/webapps/svnadmin/WEB-INF/jdbc.properties
#MySQL
MySQL.jdbc.driver=com.mysql.jdbc.Driver
MySQL.jdbc.url=jdbc:mysql://127.0.0.1:3306/svnadmin?characterEncoding=utf-8
MySQL.jdbc.username=root
MySQL.jdbc.password=root

匯入svnadmin專案mysql資料庫和語言包

mysql -uroot -p svnadmin < db/mysql5.sql
mysql -uroot -p svnadmin < db/lang/en.sql

再重啟tomcat

/opt/apache-tomcat-7.0.78/bin/shutdown.sh
/opt/apache-tomcat-7.0.78/bin/startup.sh

此時svnadmin已經配置啟動完畢

防火牆開通8080埠

[root@localhost opt]# iptables -L -n
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED 
ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22 
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:3690 
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:3306 
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:8080 
REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 
REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
5.進入svnadmin的web介面進行配置
瀏覽器輸入地址訪問tomcat,提示第一次使用請設定管理員帳號和密碼,這裡設定一個admin
http://IP:8080/svnadmin/
6546854-690f3d41ee0af854.png
配置svnadmin和subversion的整合,在web管理介面輸入下列資訊,並提交
6546854-a8579e780477fd8c.png
提交完畢後專案已經整合
6546854-1428e17d315c967a.png
現在可以對svn增加使用者,以及配置使用者許可權
首先設定使用者組,將之前第一次設定的svnadmin管理員賬號加入manage使用者組內
6546854-d1d62da04f23144d.png
設定使用者 ↑
6546854-9eab87d8e8b48241.png
增加使用者 ↑
現在對此專案有第一個管理員使用者了,現在需要建立其他使用者
6546854-01fbc9b4e2f000bb.png
建立使用者
6546854-9f31bc059ebed175.png
給a使用者配置許可權
6546854-71fe09d6b33adc9e.png
給a使用者配置可讀許可權
6546854-c737016337c9c612.png
6.配置完使用者許可權過後,通過tortoisesvn的windows客戶訪問svn服務
tortoisesvn 客戶端下載地址:https://tortoisesvn.net/downloads.html

windows下直接雙擊執行msi檔案進行tortoisesvn的安裝
安裝完成後在桌面上空白處右鍵進入版本庫瀏覽"Repo-browser"

6546854-e307f5baa999b39b.png
輸入SVN地址
6546854-e82e6c7ccb517ecf.png
輸入管理員使用者名稱和密碼
6546854-397f1be89126a9c8.png
進入後建立資料夾
6546854-80886dce5488847b.png
7.subversion的備份
第一種:指定版本備份,以及恢復方式(subversion庫版本號可以通過windows客戶端tortoisesvn的"版本庫瀏覽"進行檢視)
6546854-8589a61e2bdd7109.png
svnadmin dump /opt/subversion/svn/test/ --revision 1010 > 20171111.svn
svnadmin load /opt/subversion/svn/test/ < 20171111.svn
第二種:全備份,以及恢復方式
svnadmin dump /opt/subversion/svn/test/ > 20172222.svn
svnadmin load /opt/subversion/svn/test/ < 20172222.svn
第三種:備份並壓縮,以及恢復方式
svnadmin dump /opt/subversion/svn/test/ | gzip /opt/backup/subversion/20171212.svn.zip
zcat 20171212.svn.zip | svnadmin load /opt/subversion/svn/test/
可以將備份命令寫成shell指令碼

vim /opt/backup/subversion/svndump.sh

#!/bin/bash

DBNAME=`date  "+%Y.%m.%d_%H%M%S_test_subversion"`.svn
/usr/local/subversion/bin/svnadmin dump /opt/subversion/svn/test/ > /opt/backup/subversion/$DBNAME
給指令碼新增執行權
chmod +x /opt/backup/subversion/svndump.sh
寫crontab計劃任務讓其自動備份

crontab -e

#每週六的3:30執行指令碼svndump.sh
30 3 * * 6 /opt/backup/subversion/svndump.sh

更多用法請參照svn官方文件

相關文章