centos7基于SVN+Apache+IF.svnadmin实现SVN的web管理
一、介绍
本文介绍的是CentOS7上搭建基于Apache、SVN Server、iF.svnadmin实现web后台可视化管理SVN。
iF.SVNAdmin应用程序是Subversion授权文件基于Web的GUI。该应用程序不需要数据库后端,它完全基于Subversion授权和用户认证文件。本文可以采用http协议,不采用https协议,另外最好先安装subversion1.9.7 再安装http/if.svnadmin.
二、 软件准备
安装相关软件包
1.安装apache
1 |
# yum install httpd -y |
2.安装svn服务器(其中,mod_dav_svn是apache服务器访问svn的一个模块)
1 |
# yum install mod_dav_svn subversion -y |
3.安装完成后可以通过如下命令查看是否安装成功
1
2
3
|
# httpd -version # svnserve --version # ls /etc/httpd/modules/ | grep svn |
4.在apache下配置svn
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
# vi /etc/httpd/conf.d/subversion.conf LoadModule dav_svn_module modules /mod_dav_svn .so
LoadModule authz_svn_module modules /mod_authz_svn .so
<Location /svn >
DAV svn SVNParentPath /var/www/svn #svn的根目录
SSLRequireSSL #SSL访问权限
AuthType Basic #Basic认证方式
AuthName "Authorization SVN" #认证时显示的信息
AuthUserFile /var/www/svn/passwd #用户文件&密码
AuthzSVNAccessFile /var/www/svn/authz #访问权限控制文件
Require valid-user #要求真实用户,不能匿名
< /Location >
|
5.Apache使用ssl模块配置HTTPS
a、安装OpenSSL
1 |
# yum install mod_ssl openssl |
安装完毕后,会自动生成 /etc/httpd/conf.d/ssl.conf 文件。
b、生成一个自签名证书
下面的命令可以被用来产生一个自签名的证书。
首先,生成2048位的加密私钥
1 |
# openssl genrsa -out server.key 2048 |
然后,生成证书签名请求(CSR),这里需要填写许多信息,如国家,省市,公司等
1 |
# openssl req -new -key server.key -out server.csr |
最后,生成类型为X509的自签名证书。有效期设置3650天,即有效期为10年
1 |
# openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt |
创建证书后,将文件复制到对应的目录。
1
2
3
|
# cp server.crt /etc/pki/tls/certs/ # cp server.key /etc/pki/tls/private/ # cp server.csr /etc/pki/tls/private/ |
c、配置Apache Web服务器
首先,修改下面的配置文件。仅需配置SSLCertificateFile和SSLCertificateKeyFile
1
2
3
4
5
6
7
8
9
|
# vi /etc/httpd/conf.d/ssl.conf ### overwrite the following parameters ### SSLCertificateFile /etc/pki/tls/certs/server .crt
SSLCertificateKeyFile /etc/pki/tls/private/server .key
### The following parameter does not need to be modified in case of a self-signed certificate. ### ### If you are using a real certificate, you may receive a certificate bundle. The bundle is added using the following parameters ### SSLCertificateChainFile /etc/pki/tls/certs/example .com.ca-bundle
|
然后,重新启动httpd服务使更改生效。
三、建立SVN Server仓库
通过如下命令建立svn仓库,其中/var/www/svn是准备放仓库的目录,这个目录可以放置多个代码仓库。
1
2
3
4
5
|
# mkdir /var/www/svn # svnadmin create /var/www/svn/test-project # ls /var/www/svn/test-project # chown -R apache.apache /var/www/svn |
创建用户文件passwd和权限控制文件authz
1
2
3
4
|
# touch /var/www/svn/passwd # touch /var/www/svn/authz # chmod -R 777 /var/www/svn/passwd # chmod -R 777 /var/www/svn/authz |
四、配置安装PHP&IF.SVNadmin
由于iF.SVNAdmin使用php写的,因此我们需要安装php
1 |
# yum install php -y |
安装配置if.svnadmin(http://sourceforge.net/projects/ifsvnadmin/files/svnadmin-1.6.2.zip/download)
1
2
3
4
5
6
|
# unzip svnadmin-1.6.2.zip # mv iF.SVNAdmin-stable-1.6.2/ /var/www/html/svnadmin # cd /var/www/html # chown -R apache.apache svnadmin # cd /var/www/html/svnadmin # chmod -R 777 data |
五、启动服务
如果开启了防火墙, 需要开启httpd访问权限
1
2
|
# firewall-cmd --zone=public --add-port=80/tcp --permanent # firewall-cmd --reload |
通过查看文件/usr/lib/systemd/system/svnserve.service, 了解到svnserver的配置文件是/etc/sysconfig/svnserve,修改/etc/sysconfig/svnserve
1
2
3
|
# vi /etc/sysconfig/svnserve OPTIONS= "-r /var/svn"
|
通过如下命令来启用服务
1 |
# systemctl start httpd.service |
如下命令使其开机自启动
1 |
# systemctl enable httpd.service |
重启Apache
1 |
# systemctl restart httpd.service |
启动webserver服务后,浏览器地址输入http://ip/svnadmin出现配置界面,输入下图中配置信息,输入每个配置信息可以点击旁边的Test测试是否输入正确,最后保存配置。
配置完成会提示默认的账户为admin/admin。
六、iF.SVNAdmin使用
设置项目
设置用户
设置权限
查看项目用户