Web高效管理多個項目的SVN倉庫


轉至:https://www.jianshu.com/p/a0af00642585
采用方案

Linux+Apache+Subversion+MySQL+JDK+Tomcat+Svnadmin

目錄
0.安裝准備

0.1 升級系統軟件包
0.2 關閉SELinux
0.3 安裝wget

1.部署Apache

1.1 安裝apache
1.2 修改配置文件
1.3 啟動apache服務
1.4 調整防火牆,允許80端口訪問
1.5 瀏覽器訪問測試

2.部署Subversion

2.1 安裝SVN
2.2 重啟apache服務
2.3 檢查svn模塊是否安裝上了apache
2.4 查看svn版本
2.5 配置SVN倉庫

2.5.1 創建SVN庫主目錄
2.5.2 編輯配置文件subversion.conf
2.5.3 創建/data/svn/passwd.http和/svn/authz文件
2.5.4 重啟apache服務

3.部署MySQL

3.1 安裝MySQL
3.2 mysql開機自動啟動
3.3 啟動mysql服務
3.4 調整防火牆,允許3306端口訪問
3.5 設置mysql數據庫的root用戶密碼

4.部署Tomcat

4.1 安裝JDK
4.1.1 下載安裝包
4.1.2 解壓軟件包
4.1.3 修改環境變量
4.1.4 使配置立即生效
4.1.5 檢驗是否生效
4.2 安裝Tomcat
4.2.1 下載安裝包
4.2.2 解壓縮apache-tomcat軟件包
4.2.3 修改tomcat的配置文件
4.2.4 調整防火牆,允許8080端口被訪問
4.2.5 重啟防火牆,使端口配置生效

5.部署jsvnadmin

5.1 刪除tomcat/webapps目錄中的默認文件
5.2 下載svnadmin軟件包
5.3 解壓縮svnadmin軟件包
5.4 將svnadmin.war解壓到tomcat/webapps的svnadmin目錄中
5.5 修改svnadmin的jdbc屬性文件中連接mysql的默認賬戶密碼

6.初始化svnadmin的數據庫

6.1 創建svnadmin數據庫
6.2 導入sql文件(mysql5.sql 和en.sql )
6.3 啟動tomcat服務

7.瀏覽器訪問,初始化配置
8.補充部分

8.1 查看新增目錄、文件,及authz配置參數
8.2 配置倉庫的目錄權限
8.3 配置rc.local讓tomcat開機自動啟動服務
8.4 權限公里中“認證失敗”的問題

場景

互聯網小型公司剛開始啟動項目的時候,一般只有一個項目,這個時候,只需要在服務器上部署單庫的SVN提供服務即可滿足需求,運維人員剛開始只需要在命令行手動配置倉庫,新人入職改改passwd和authz配置文件添加賬號和權限就能搞定,但隨着公司的日益發展壯大,研發隊伍越來越壯大,人數越來越多,項目模塊化,分布式,SOA服務化,多項目同時研發、測試、發布上線等等,運維人員忙的不可開交,舊法子已經完全不能滿足需求了,怎么辦呢?本着高效率工作,多玩耍的思想,運維人員要尋求更快更便捷的方法來解決問題,那么一定是服務化的方法了,通過WEB UI的方式管理,點點鼠標可以輕松搞定。

Jsvnadmin的出現,就改變了以往純命令行或腳本的原始化方法,它是一個 Java 開發的管理 Svn 服務器的項目用戶的 web 應用。安裝好 Svn 服務器端好,把 Svn Admin 部署好,就可以通過 web 瀏覽器管理 Svn 的項目,管理項目的用戶,管理項目的權限。使得管理配置 Svn 簡便,再也不需要每次都到服務器手工修改配置文件。

svnadmin優點

多數據庫: Svn 項目配置數據保存在數據庫,支持所有數據庫(默認MySQL/Oracle/SQL Server)

多操作系統:支持 Window,Linux 等操作系統。
權限控制:管理員可以隨意分配權限、項目管理員可以管理項目成員、成員只能查看和修改自己的密碼。
支持多項目、多用戶、多用戶組 Group(默認帶有“項目管理組”、 “項目開發組”、 “項目測試組”)。
安全:密碼加密保存。
多協議:支持 svn 協議和 http 協議(從 2.0 開始支持 Apache 服務器- - 單庫方式,從 3.0開始支持 Apache 多庫方式)
倉庫瀏覽(從 3.0.2 開始)
多語言(從 3.0.2 開始)

解決方案

Svnadmin 在 Java 1.6、 Tomcat 6、 Subversion 1.6、 MySQL 5.1、 Apache 2.2、Windows 7 上開發測試通過,同時支持其他操作系統和數據庫。

常采用的方案:
Linux+Apache+Subversion+MySQL+Tomcat+Svnadmin
Windows+Apache+Subversion+MySQL+Tomcat+Svnadmin
支持 svn 協議
Svn 的配置信息都在倉庫目錄的 conf 下的 authz,passwd,svnserve.conf 三個文件中,配置用戶和權限都是通過修改 passwd 和 authz,立刻就生效。 Svn Admin 的本質是對這 3個文件進行管理,所有成員、權限的數據都保存在數據庫中, 一旦在Svn Admin 的頁面上修改,就會把配置信息輸出到 conf 下的那 3 個配置文件中。
支持 http 協議
Apache+SVN 配置成功后可以有兩種方式:

多庫方式: SVNParentPath 指定一個父目錄,所有倉庫在這個父目錄下,使用一個密碼文件和一個權限配置文件。優點是增加刪除倉庫不需要改 apache的 httpd.conf,不需要重啟 Apache。缺點是項目多會很混亂。
單庫方式: SVNPath 每個倉庫單獨配置各自的密碼和權限文件。優點是各自分開,互相不影響,維護方便。缺點是增加或刪除倉庫需要修改 apache 的httpd.conf 后重啟。

0.安裝准備
OS:CentOS6.8 x64
0.1 升級系統軟件包
[root@example00 ~]# yum -y update

0.2 關閉SELinux
[root@example00 ~]# vim /etc/sysconfig/selinux
SELINUX=disabled

0.3 安裝wget
[root@example00 ~]# yum -y install wget

准備工作做完以后,reboot命令重啟服務器
1.部署Apache
1.1 安裝apache
[root@example00 ~]# yum -y install httpd httpd-devel

1.2 修改配置文件
[root@example00 ~]# vim /etc/httpd/conf/httpd.conf
276 ServerName localhost:80

1.3 啟動apache服務
開機自動啟動
[root@example00 ~]# chkconfig httpd on

啟動apache服務
[root@example00 ~]# service httpd start

1.4 調整防火牆,允許80端口訪問
[root@example00 ~]# vim /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
[root@example00 ~]# service iptables restart

1.5 瀏覽器訪問:http://192.168.1.190
出現apache的歡迎頁面

apache歡迎頁面

2.部署Subversion
2.1 安裝SVN
[root@example00 ~]# yum -y install subversion mod_dav_svn

2.2 重啟apache服務
[root@example00 ~]# service httpd restart

2.3 檢查svn模塊是否安裝上了apache
[root@example00 ~]# ls /etc/httpd/modules/ | grep svn
mod_authz_svn.so
mod_dav_svn.so

2.4 查看svn版本
[root@example00 ~]# svn --version
svn, version 1.6.11 (r934486)
compiled Aug 17 2015, 08:37:43

2.5 配置SVN倉庫
2.5.1 創建SVN庫主目錄
多庫模式,一份配置文件管理多個庫
[root@example00 ~]# mkdir -p /data/svn #

2.5.2 編輯配置文件subversion.conf
[root@example00 ~]# cd /etc/httpd/conf.d/
[root@example00 conf.d]# ls
README subversion.conf welcome.conf
[root@example00 conf.d]# vim subversion.conf

Include /data/svn/httpd.conf

<Location /svn/>
DAV svn
SVNListParentPath on
SVNParentPath /data/svn
AuthType Basic
AuthName "Subversion repositories"
AuthUserFile /data/svn/passwd.http
AuthzSVNAccessFile /data/svn/authz
Require valid-user

RedirectMatch ^(/svn)$ $1/

2.5.3 創建/data/svn/passwd.http和/svn/authz文件
[root@example00 conf.d]# touch /data/svn/passwd.http
[root@example00 conf.d]# touch /data/svn/authz

2.5.4 重啟apache服務
[root@example00 conf.d]# service httpd restart

3.部署MySQL
3.1 安裝MySQL
[root@example00 ~]# yum -y install mysql-server mysql mysql-devel

3.2 mysql開機自動啟動
[root@example00 ~]# chkconfig mysqld on

3.3 啟動mysql服務
[root@example00 ~]# service mysqld start

3.4 調整防火牆,允許3306端口訪問
[root@example00 ~]# vim /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT

[root@example00 ~]# service iptables restart

3.5 設置mysql數據庫的root用戶密碼
[root@example00 ~]# mysqladmin -u root password 'mypassword'

3.5 授權root賬戶遠程訪問mysql
[root@example00 conf.d]# mysql -u root -p
mysql> GRANT ALL PRIVILEGES ON . TO 'root'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql> exit
Bye

4.部署Tomcat
4.1 安裝JDK

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

4.1.1 下載安裝包
[root@example00 ~]# cd /usr/local/src/
[root@example00 src]# wget http://download.oracle.com/otn-pub/java/jdk/8u121-b13/e9e7ea248e2c4826b92b3f075a80e441/jdk-8u121-linux-x64.tar.gz

4.1.2 解壓軟件包
[root@example00 src]# tar -zxvf jdk-8u121-linux-x64.tar.gz -C /usr/local/
[root@example00 src]# cd /usr/local/jdk1.8.0_121/
[root@example00 jdk1.8.0_121]# pwd
/usr/local/jdk1.8.0_121

4.1.3 修改環境變量
[root@example00 ~]# vim /etc/profile

Java_Home

JAVA_HOME=/usr/local/jdk1.8.0_121
JRE_HOME=/usr/local/jdk1.8.0_121/jre
PATH=\(PATH:\)JAVA_HOME/bin:\(JRE_HOME/bin CLASSPATH=:\)JAVA_HOME/lib/dt.jar:\(JAVA_HOME/lib/tools.jar:\)JRE_HOME/lib
export JAVA_HOME JRE_HOME PATH CLASSPATH

4.1.4 使配置立即生效
[root@example00 ~]# source /etc/profile

4.1.5 檢驗是否生效
方法1:
[root@example00 ~]# java -version
java version "1.7.0_131"
OpenJDK Runtime Environment (rhel-2.6.9.0.el6_8-x86_64 u131-b00)
OpenJDK 64-Bit Server VM (build 24.131-b00, mixed mode)

方法2:
[root@example00 ~]# echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/jdk1.8.0_121/bin:/usr/local/jdk1.8.0_121/jre/bin:/root/bin
[root@example00 ~]# echo $JRE_HOME
/usr/local/jdk1.8.0_121/jre
[root@example00 ~]# echo $JAVA_HOME
/usr/local/jdk1.8.0_121

4.2 安裝Tomcat

下載地址:http://tomcat.apache.org/download-70.cgi
找到Core中tar.gz,右鍵復制鏈接

4.2.1 下載安裝包
[root@example00 ~]# cd /usr/local/src/
[root@example00 src]# wget http://mirror.bit.edu.cn/apache/tomcat/tomcat-7/v7.0.76/bin/apache-tomcat-7.0.76.tar.gz

4.2.2 解壓縮apache-tomcat軟件包
[root@example00 src]# tar -zxvf apache-tomcat-7.0.76.tar.gz -C /usr/local/
[root@example00 src]# cd /usr/local/
[root@example00 local]# mv apache-tomcat-7.0.76/ tomcat

4.2.3 修改tomcat的配置文件
末尾增加URIEncoding參數為UTF-8
[root@example00 src]# vim /usr/local/src/svnadmin-tomcat/conf/server.xml
22
71 <Connector port="8080" protocol="HTTP/1.1"
72 connectionTimeout="20000"
73 redirectPort="8443" URIEncoding="UTF-8"/>

4.2.4 調整防火牆,允許8080端口被訪問
[root@example00 src]# vim /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT

4.2.5 重啟防火牆,使端口配置生效
[root@example00 src]# service iptables restart

5.安裝jsvnadmin

下載鏈接
https://code.google.com/archive/p/jsvnadmin/
https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/jsvnadmin/svnadmin-3.0.5.zip

5.1 刪除tomcat/webapps目錄中的默認文件
[root@example00 ~]# rm -rf /usr/local/tomcat/webapps/*

5.2 下載svnadmin軟件包
[root@example00 ~]# cd /usr/local/src/
[root@example00 webapps]# wget https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/jsvnadmin/svnadmin-3.0.5.zip

5.3 解壓縮svnadmin軟件包
[root@example00 src]# unzip svnadmin-3.0.5.zip -d svnadmin
[root@example00 src]# cd svnadmin

5.4 將svnadmin.war解壓到tomcat/webapps的svnadmin目錄中
[root@example00 svnadmin]# unzip svnadmin.war -d /usr/local/tomcat/webapps/svnadmin

5.5 修改svnadmin的jdbc屬性文件中連接mysql的默認賬戶密碼
[root@example00 svnadmin]# vim /usr/local/tomcat/webapps/svnadmin/WEB-INF/jdbc.properties
db=MySQL

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=mypassword

6.初始化svnadmin的數據庫
6.1 創建svnadmin數據庫
[root@example00 ~]# mysql -u root -p
mysql> CREATE DATABASE svnadmin CHARACTER SET utf8;
Query OK, 1 row affected (0.00 sec)

mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| svnadmin |
| test |
+--------------------+
4 rows in set (0.00 sec)

mysql> exit
Bye

6.2 導入sql文件(mysql5.sql 和en.sql )
[root@example00 svnadmin]# mysql -u root -p svnadmin < /usr/local/src/svnadmin/db/mysql5.sql
[root@example00 svnadmin]# mysql -u root -p svnadmin < /usr/local/src/svnadmin/db/lang/en.sql

6.3 啟動tomcat服務
[root@example00 ~]# /usr/local/tomcat/bin/startup.sh
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/local/jdk1.8.0_121/jre
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar

7.瀏覽器訪問,初始化配置
瀏覽器訪問:http://192.168.1.190:8080/svnadmin/
頁面提示:歡迎使用SVN ADMIN,第一次使用請設置管理員帳號和密碼.
輸入賬號/密碼,即為svnadmin的默認WEB登錄賬號密碼,需要保存起來,以免忘記。

SVN ADMIN初始化頁面

在SVN ADMIN的WEB頁面中,可以看到項目管理的相關配置,改變了以往Linux Server上通過命令行管理svn的繁瑣歷史,而使用WEB GUI的配置方式,可以大大提高SVN倉庫的管理效率;
在SVN ADMIN的WEB頁面上不僅可以新建項目的SVN倉庫,還可以針對不同的項目,進行賬戶、賬戶組的配置、權限的管理,非常適合中等型,或小型互聯網公司進行管理;

創建庫.png

提交成功

8.補充部分
8.1 查看新增目錄、文件,及authz配置參數
[root@example00 ~]# cd /data/svn/
[root@example00 svn]# ls
authz project1 httpd.conf passwd.http

/data/svn目錄中,已經產生了一個目錄ddstore,和一個文件httpd.conf,它與subversion.conf是一樣的,在/etc/httpd/conf.d/subversion.conf中已配置。
[root@example00 svn]# cat authz
[aliases]
[groups]
ddstore_developer=
ddstore_manager=
ddstore_tester=

[ddstore:/]
@ddstore_manager=rw

查看authz文件,可以發現,已經被添加了配置內容;這些改變,都是因為調用了svn做了相應的操作。
8.2 配置倉庫的目錄權限
[root@example00 ~]# chown -R apache.apache /data/svn/project1/
[root@example00 ~]# chmod -R 777 /data/svn/project1/

8.3 配置rc.local讓tomcat開機自動啟動服務
[root@example00 ~]# vim /etc/rc.local

tomcat auto start

/usr/local/tomcat/bin/startup.sh

8.4 權限公里中“認證失敗”的問題
原因:沒有把admin加入項目的manager組中,因此進入權限管理中后,會出現認證失敗的問題;
解決方法:設置用戶組--->設置用戶--->將admin添加到管理組

所有的部署過程已經完成,那么我們需要在SVN ADMIN管理頁面中,查看倉庫的狀態,點擊倉庫URL鏈接,查看倉庫的狀態;若無任何錯誤信息,即表示倉庫配置成功,若有報錯,例如405信息等等,那么說明倉庫的配置是有問題的,若您嘗試多次解決無果,可以聯系我,我有空的時候可以協助你troubleshouting。

點擊倉庫URL鏈接

查看倉庫狀態


免責聲明!

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



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