前面的系列中介绍了如何使用Subversion和Apache安装包搭建Subversion服务器,整个安装过程的配置文件修改完全是手动修改。无论是SVN项目的添加,还是用户的添加,以及用户访问权限的设置,以及用户登录验证方式的修改,都必须登录到SVN服务器上修改对应的配置文件,效率非常低。而CollabNet提供的Subversion Edge大大简化了SVN服务器的安装,以及安装后的配置,本文主要介绍如何在CentOS 7上安装Subversion Edge以及使用Subversion Edge的GUI界面配置SVN服务器。
需要说明的是,Subversion Edge安装的SVN服务器和使用SVN + Apache rpm安装包安装的SVN服务器的Repository以及权限信息等不能共享,如果想迁移旧的Subversion服务器,需要安装Subversion Edge后重新设置。
本文安装使用与前面文章中不一样的新CentOS 7服务器,安装Subversion Edge前请确认已安装和配置JDK环境,本次安装使用的JDK
Subversion Edge服务器的启动需要使用非root用户,如同之前安装SVN服务器一样,我们创建svn用户,用以启动Subversion Edge服务器。
groupadd svn
useradd -g svn svn
将svn用户加入/etc/sudoers文件中
svn ALL=(ALL) NOPASSWD: ALL
切换到svn用户,执行下列指令
sudo mkdir /opt/subversion
sudo chown -R svn:svn /opt/subversion
sudo chmod o+wx /opt/subversion
从CollabNet官网下载SubversionEdge最新的Linux 64位安装包
需要注意的是,CollabNet官网对Chrome和Firefox等非IE系浏览器支持不佳,直接通过这两个浏览器下载的tar.gz文件大小错误,为180M,接下来会解压失败,建议使用IE浏览器登录官网下载。
将下载后的tar.gz文件放到/opt/subversion目录下,进行解压
tar -zvxf CollabNetSubversionEdge-5.2.2_linux-x86_64.tar.gz
解压后会在/opt/subversion目录下生成csvn子目录
创建csvn.conf文件
cd csvn/data/conf
cp csvn.conf.dist csvn.conf
安装Subversion Edge服务
cd /opt/subversion/csvn
sudo –E bin/csvn install
执行结果如下图所示
启动csvn服务
cd /opt/subversion/csvn
bin/csvn start
启动界面如下图所示(第一次启动初始化会比较费时,需要耐心等待)
启动完成后,需要在防火墙上开放3343端口,供远端访问,我们安装Subversion Edge的服务器ip是192.168.56.101,在打开防火墙端口后我们使用浏览器访问http://192.168.56.101:3343/csvn,这是Subversion Edge的UI管理页面,初始登陆用户名和密码是admin/admin
登录后的管理页面如下图
接下来我们对Subversion服务器进行设置,点击左侧的[Server Settings],打开服务器设置页面
在这个页面中我们设置服务器的HostName为ip地址192.168.56.101,在下面的Apache Encryption行可以勾选[Subversion Server should serve via https],使用https方式访问Subversion,端口号使用前面系列中的8888(需要打开防火墙端口)
Repository Directory这一行是Subversion所有项目Repository的父目录,默认是
/opt/subversion/csvn/data/repositories
点击[Save]按钮保存设置。
保存完成后执行以下指令重启Subversion Edge服务器
cd /opt/subversion/csvn
bin/csvn stop
bin/csvn start
接下来验证使用LDAP验证登录和Repository访问权限
首先在LDAP服务器上新建companies节点,在companies节点下新建company1和company2两个子节点
在company1和company2两个子节点下分别建立svnuser1和svnuser2两个用户,设置登录密码,建好后如下图所示
点击[Configuration]-[Authentication]打开用户验证设置页面,由于我们已经搭建了LDAP服务器,我们在[Authentication Methods]行勾选[LDAP authentication against an LDAP server],并进行如下配置
在[Repositories List]中新建两个Repository Company1Project和Company2Project。
点击左边菜单栏的[Access Rules]菜单,设置SVN目录的访问权限,
这里创建了3个组,管理员组adminGroup,company1组,company2组
adminGroup组包含admin用户,对SVN根木以及其子目录有读写权限。
company1组包含LDAP的svnuser1用户,对Company1Project项目有读写权限。
company2组包含LDAP的svnuser2用户,对Company2Project项目有读写权限。
设置完成后重启Subversion Edge服务器。
重启完成后我们使用TortoiseSVN访问https://192.168.56.101:8888/svn/Company1Project,使用svnuser2用户进行登录,显示没有权限访问
同样我们访问https://192.168.56.101:8888/svn/Company2Project,使用svnuser1用户登录,也
弹出无权访问的错误信息窗口。
如果我们使用svnuser1访问https://192.168.56.101:8888/svn/Company1Project,就会显示Company1Project的目录结构
使用svnuser2访问https://192.168.56.101:8888/svn/Company2Project,同样会显示CompanyProject2的目录结构
接下来我们把Subversion Edge服务做成开机自启动服务,根据CollabNet的官网指南,只需要执行下面两条指令
sudo -E bin/csvn install
sudo -E bin/csvn-httpd install
就可以把CSVN Console和CSVN Apache Http Server的Daemon装上,在系统的/etc/init.d目录下生成csvn和csvn-httpd两个自启动命令,但在具体实践时我发现如果是使用root用户执行Subversion Edge安装时,这两条指令可以成功,重启系统后Csvn页面和Repository都可以访问,不需要手动启动。
如果是非root用户使用sudo命令安装时,执行了上面两条指令后开机后csvn和csvn-httpd都没有手动启动,还需要手动执行bin/csvn start bin/csvn-httpd start启动。这种情况下需要自行添加csvn和csvn-httpd服务。
我们在/etc/systemd/system目录下手动创建两个服务csvn.service和csvn-httpd.service,分别添加以下内容
csvn.service
[Unit]
Description=csvn service
After=network.target
[Service]
Type=forking
ExecStart=/opt/subversion/csvn/bin/csvn start
ExecStop=/opt/subversion/csvn/bin/csvn stop
User=svn
Restart=on-abort
[Install]
WantedBy=multi-user.target
csvn-httpd.service
[Unit]
Description=csvn-httpd service
After=network.target
[Service]
Type=forking
ExecStart=/opt/subversion/csvn/bin/csvn-httpd start
ExecStop=/opt/subversion/csvn/bin/csvn-httpd stop
User=svn
Restart=on-abort
[Install]
WantedBy=multi-user.target
最后执行以下指令激活csvn服务和csvn-httpd服务,并启动这两个服务。
sudo systemctl daemon-reload
sudo systemctl enable csvn.service
sudo systemctl enable csvn-httpd.service
sudo systemctl start csvn.service
sudo systemctl start csvn-httpd.service
重启Subversion Edge所在CentOS服务器,可以确认csvn服务器和csvn-httpd服务确实开机自启动。