SVNAdmin2 – 基于web的SVN管理系统

1. 介绍

  • SVNAdmin2 是一款通过图形界面管理服务端SVN的web程序
  • 正常情况下配置SVN仓库的人员权限需要登录到服务器手动修改 authz 和 passwd 两个文件,当仓库结构和人员权限上了规模后,手动管理就变的非常容易出错,本系统能够识别人员和权限并提供管理和拓展功能。
  • SVNAdmin2 支持SVN协议检出、HTTP协议检出,并且支持两种协议之间互相切换,支持docker部署或源码部署。
  • SVNAdmin2 支持进行LDAP的接入,进而达到使用原有的人员架构和分组规则的目的。
  • GitHub地址 Gitee地址
  • 问题求助、功能建议、更新计划、SVN技术讨论,可加QQ群:633108141
  • 项目演示地址:http://svnadmin.witersen.com (管理人员/admin/admin)
  • 系统截图
SVNAdmin2 - 基于web的SVN管理系统

2. 兼容性

docker > CentOS7 > CentOS8 > Rocky > Ubuntu>………..

Windows下如有需求,可使用 docker 版本

PHP版本:[php5.5 , php8.2] (开发基于php7.4所以推荐使用php7.4)

数据库:SQLite、MySQL

Subversion:1.8+

3. docker安装

3.1 适用于:快速部署看效果

ps:镜像默认托管在docerhub,如果速度不佳,可以选择国内路线(docker pull registry.cn-hangzhou.aliyuncs.com/witersencom/svnadmin:[镜像版本号])

此方式可快速部署程序体验效果,数据不存储在宿主机,生产环境使用请看3.2

docker run -d --name svnadmintemp -p 80:80 -p 3690:3690 --privileged witersencom/svnadmin:2.5.4
3.2 适用于:新用户正式使用
  • 启动一个临时的容器用于复制配置文件出来
docker run -d --name svnadmintemp --privileged witersencom/svnadmin:2.5.4 /usr/sbin/init
  • 把配置文件复制到本机的 /home/svnadmin 目录
cd /home/
docker cp svnadmintemp:/home/svnadmin ./
docker cp svnadmintemp:/etc/httpd/conf.d ./svnadmin/
docker cp svnadmintemp:/etc/sasl2 ./svnadmin/
  • 删除掉临时容器
docker stop svnadmintemp && docker rm svnadmintemp
  • 启动正式的容器
docker run -d -p 80:80 -p 3690:3690 \
-v /home/svnadmin/:/home/svnadmin/ \
-v /home/svnadmin/conf.d/:/etc/httpd/conf.d/ \
-v /home/svnadmin/sasl2/:/etc/sasl2/ \
--privileged \
--name svnadmin \
witersencom/svnadmin:2.5.4
  • 进入容器内进行文件授权
docker exec -it svnadmin bash
chown -R apache:apache /home/svnadmin
3.3 适用于:旧用户升级

ps: 2.4.3 及之前的用户要注意目录挂载多了 conf.d sasl2 升级之前要提前复制出来

  • 2.3.x和2.4.x和2.5.x升级到2.5.4 (可以联网的用户)
    • 进入容器内
    • yum install -y unzip
    • cd /var/www/html/server && php install.php
    • 退出容器
    • 停止旧的容器,拉取新容器,挂载本地的数据目录到新版本的容器即可
  • 2.3.x和2.4.x和2.5.x升级到2.5.4 (不可联网的用户)
    • 在有网络的环境下下载升级包,注意下载 update.tar.gz 而不是 update.zip
    • 提前下载好升级包并复制到容器中 /var/www/html/server/ 目录下
    • cd /var/www/html/server/
    • tar -zxvf update.tar.gz
    • php update/index.php
    • 退出容器
    • 停止旧的容器,拉取新容器,挂载本地的数据目录到新版本的容器即可

4. 源码安装

svnadmin = web系统 + 后台进程,因此安装注意噢

4.1 适用于:CentOS7、Rocky等
  • 安装解压缩等工具
yum install -y zip unzip wget vim which
  • 安装sasl相关依赖(svn协议检出配置sasl认证如ldap要用到)
yum install -y cyrus-sasl cyrus-sasl-lib cyrus-sasl-plain
  • 安装PHP和相关扩展(CentOS7默认源中提供的PHP版本为5.4,而我们需要 5.5+,因此使用remi源)
yum install -y epel-release yum-utils
rpm -Uvh https://mirrors.aliyun.com/remi/enterprise/remi-release-7.rpm
yum-config-manager --enable remi-php74

yum install -y php php-common php-cli php-fpm php-mysqlnd php-mysql php-pdo php-process php-json php-gd php-bcmath php-ldap php-mbstring
  • 安装web服务器(推荐 apache 可使用http协议检出)
yum install -y httpd mod_dav_svn mod_ldap
systemctl start httpd
systemctl enable httpd
  • 安装任务计划组件(任务计划功能用到)
yum install -y cronie at

#启动atd(如果 ps aux | grep -v 'grep' | grep atd 的结果为空需要执行)
atd

#启动crond(如果 ps aux | grep -v 'grep' | grep crond 的结果为空需要执行)
crond
  • 下载解压代码包
cd /var/www/html/ && wget https://gitee.com/witersen/SvnAdminV2.0/releases/download/v2.5.4/2.5.4.zip

unzip v2.5.4.zip
  • 安装Subversion(如果你安装过Subversion,本步骤可以略过)(注意需要Subversion >= 1.8)
cd /var/www/html/server/
#选项1
php install.php
  • 修改Subversion的配置使其支持被本系统管理
cd /var/www/html/server
#选项1或选项2
php install.php
  • 为数据目录授权属主和属组。php脚本web调用是以apache身份执行,因此apache用户需要对数据目录有权
  • 如果你使用其它web服务器如nginx tomcat 可以通过浏览器访问 你的机器IP/server/own.php 来获取属主和属组
chown -R apache:apache /home/svnadmin
  • 手动启动后台进程(启动方式一)
#pwd
/var/www/html

#后台运行
nohup php svnadmind.php start >/dev/null 2>&1 &

#停止后台
php svnandmin.php stop

#调试模式
php svnadmin.php console
  • 通过系统管理启动后台进程(启动方式二)
  • 新建系统服务文件 svnserve.service(centos一般为 /usr/lib/systemd/system/svnserve.service、ubuntu 一般为 /lib/systemd/system/svnserve.service)
  • 写入以下内容(注意根据自己的代码部署路径调整)
[Unit]
Description=SVNAdmin
After=syslog.target network.target

[Service]
Type=simple
ExecStart=/usr/bin/php /var/www/html/server/svnadmind.php start

[Install]
WantedBy=multi-user.target
  • 操作服务
#启动
systemctl daemon-reload
systemctl start svnadmind

#查看状态
systemctl status svnadmind

#加入开机自启动
systemctl enable svnadmind

4.2 适用于:宝塔面板

4.3 适用于:ubutntu18

  • 步骤同1(注意需要以root用户执行 server/install.php 和 server/svnadmind.php )
  • 在ubuntu中软件包名称多与CentOS系列不同,需要用户自行处理
sudo apt-get update

sudo apt-get install -y apache2
sudo apt-get install -y php
sudo apt-get install -y php-cli
sudo apt-get install -y php-fpm

sudo a2enmod proxy_fcgi setenvif
sudo systemctl restart apache2
sudo a2enconf php7.2-fpm
sudo systemctl reload apache2

sudo apt-get install -y php-json

sudo apt-get install -y php7.2-mysql
sudo apt-get install -y php-mysql

sudo apt-get install -y sqlite3

sudo apt-get install -y php7.2-sqlite

sudo apt-get install -y php-gd

sudo systemctl restart apache2

sudo apt-get install -y subversion subversion-tools

cd /var/www/html

wget xxx.zip

unzip xxx.zip

#选项2
sudo server/install.php

chown -R apache:apache /home/svnadmin/

su root

nohup php server/svnadmind.php start &

4.4 适用于:旧用户升级

  • 2.3.x和2.4.x和2.5.x升级到2.5.4
    • yum install -y unzip
    • cd /var/www/html/server && php install.php

原创文章,作者:witersen,如若转载,请注明出处:https://www.witersen.com

(6)
witersen的头像witersen
上一篇 2021年3月20日 上午12:06
下一篇 2021年3月24日 下午10:46

相关推荐

发表回复

登录后才能评论

评论列表(7条)

  • 给我根烟的头像
    给我根烟 2022年7月6日 下午4:58

    期待出docker安装

  • 沐雨辰风的头像
    沐雨辰风 2022年8月8日 下午6:40

    请问有java版本的吗

  • witersen的头像
    witersen 2022年8月17日 上午8:44

    只有PHP版本喔

  • w282的头像
    w282 2023年12月16日 下午3:51

    AH00558: httpd: Could not reliably determine the server’s fully qualified domain name, using 192.168.0.1. Set the ‘ServerName’ directive globally to suppress this message.请问是什么原因。

    • witersen的头像
      witersen 2023年12月16日 下午9:34

      @w282这个是非常经典的警告,不影响正常使用。可以自行翻译下然后对照httpd的配置文件就明白了。有问题可以加SVNAdmin2的交流群,里面回复比较及时。