|
|
|
@ -1,47 +1,61 @@
@@ -1,47 +1,61 @@
|
|
|
|
|
# SVNAdmin - 开源SVN管理系统 |
|
|
|
|
- 基于web的Subversion(SVN)服务器端管理工具,支持docker部署 |
|
|
|
|
- 该系统为使用PHP开发的基于web的Subversion(SVN)服务器端管理工具 |
|
|
|
|
|
|
|
|
|
- 支持功能:SVN仓库管理、SVN用户管理、SVN分组管理、目录授权、目录浏览、Hooks管理、在线dump备份、在线备份恢复、SVN用户禁用、服务器状态管理、日志管理、消息通知、更新检测... |
|
|
|
|
|
|
|
|
|
- 演示地址:http://svnadmin.witersen.com (默认的用户名与密码都为 admin) |
|
|
|
|
|
|
|
|
|
- 项目地址: |
|
|
|
|
- GitHub地址:https://github.com/witersen/SvnAdminV2.0 |
|
|
|
|
- Gitee地址:https://gitee.com/witersen/SvnAdminV2.0 |
|
|
|
|
- 发行包: |
|
|
|
|
- GitHub:https://github.com/witersen/SvnAdminV2.0/releases/download/v2.3.3/v2.3.3.zip |
|
|
|
|
- Gitee:https://gitee.com/witersen/SvnAdminV2.0/releases/download/v2.3.3/v2.3.3.zip |
|
|
|
|
- 兼容性 |
|
|
|
|
|
|
|
|
|
- 本程序提供 docker 镜像,基于 centos7.9.2009 构建 |
|
|
|
|
- 发行包: |
|
|
|
|
- GitHub:https://github.com/witersen/SvnAdminV2.0/releases/download/v2.3.1/v2.3.1.zip |
|
|
|
|
- Gitee:https://gitee.com/witersen/SvnAdminV2.0/attach_files/1099697/download/v2.3.1.zip |
|
|
|
|
|
|
|
|
|
- 操作系统(手动安装):CentOS7(推荐)、CentOS8、Rocky、Ubuntu(Windows及其它Linux发行版正在测试兼容中) |
|
|
|
|
- 兼容性 |
|
|
|
|
- 操作系统:CentOS7(推荐)、CentOS8、Rocky、Ubuntu(Windows及其它Linux发行版正在测试兼容中) |
|
|
|
|
- PHP版本:5.5 <= PHP < 8.0 |
|
|
|
|
- 数据库:SQLite、MySQL |
|
|
|
|
- Subversion:1.8+ |
|
|
|
|
- 问题协助或功能建议加Q群:633108141 |
|
|
|
|
|
|
|
|
|
## 一、手动安装 |
|
|
|
|
- 有问题可先看本文档底部的常见问题解答,可以加群提建议或分享问题: QQ群 633108141 |
|
|
|
|
|
|
|
|
|
## 一、安装示例 |
|
|
|
|
|
|
|
|
|
### 1、在CentOS7.6操作系统裸机安装示例 |
|
|
|
|
|
|
|
|
|
- 安装PHP和相关扩展 |
|
|
|
|
|
|
|
|
|
``` |
|
|
|
|
# 解压缩和网络获取工具 |
|
|
|
|
#解压缩和网络获取工具 |
|
|
|
|
yum install -y zip unzip wget vim |
|
|
|
|
|
|
|
|
|
# 由于CentOS7默认源中提供的PHP版本为5.4,而我们需要 5.5+,因此使用remi源 |
|
|
|
|
# 可将 remi-php55 切换为想安装的版本 |
|
|
|
|
yum install -y epel-release yum-utils |
|
|
|
|
rpm -Uvh https://mirrors.aliyun.com/remi/enterprise/remi-release-7.rpm |
|
|
|
|
yum-config-manager --enable remi-php55 |
|
|
|
|
|
|
|
|
|
# 安装php及相关扩展 |
|
|
|
|
yum install -y php php-common php-cli php-fpm php-json php-mysqlnd php-mysql php-pdo php-process php-json php-gd php-bcmath |
|
|
|
|
#由于CentOS7默认源中提供的PHP版本为5.4,因此我们使用remi源安装更高的php版本 |
|
|
|
|
yum install -y epel-release |
|
|
|
|
wget http://rpms.remirepo.net/enterprise/remi-release-7.rpm |
|
|
|
|
rpm -Uvh remi-release-7.rpm |
|
|
|
|
|
|
|
|
|
#编辑 /etc/yum.repos.d/remi.repo 文件,将想安装的PHP版本下方的enable由0改为1 |
|
|
|
|
vim /etc/yum.repos.d/remi.repo |
|
|
|
|
|
|
|
|
|
#开始安装php及相关扩展 |
|
|
|
|
yum install -y php |
|
|
|
|
yum install -y php-common |
|
|
|
|
yum install -y php-cli |
|
|
|
|
yum install -y php-fpm |
|
|
|
|
yum install -y php-json |
|
|
|
|
yum install -y php-mysqlnd |
|
|
|
|
yum install -y php-process |
|
|
|
|
yum install -y php-json |
|
|
|
|
yum install -y php-gd |
|
|
|
|
yum install -y php-bcmath |
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
- 安装web服务器 |
|
|
|
|
|
|
|
|
|
``` |
|
|
|
|
# 以apache为例 |
|
|
|
|
#以apache为例 |
|
|
|
|
yum install -y httpd |
|
|
|
|
systemctl start httpd |
|
|
|
|
systemctl enable httpd |
|
|
|
@ -50,25 +64,25 @@ systemctl enable httpd
@@ -50,25 +64,25 @@ systemctl enable httpd
|
|
|
|
|
- 安装本程序 |
|
|
|
|
|
|
|
|
|
``` |
|
|
|
|
# 将代码包下载到 /var/www/html/ 目录并解压 |
|
|
|
|
#将代码包下载到 /var/www/html/ 目录并解压 |
|
|
|
|
cd /var/www/html/ |
|
|
|
|
|
|
|
|
|
# 代码包从发行版获取 |
|
|
|
|
wget https://gitee.com/witersen/SvnAdminV2.0/releases/download/v2.3.3/v2.3.3.zip |
|
|
|
|
#代码包从发行版获取 |
|
|
|
|
wget https://gitee.com/witersen/SvnAdminV2.0/attach_files/1099697/download/v2.3.1.zip |
|
|
|
|
|
|
|
|
|
# 解压 |
|
|
|
|
unzip v2.3.3.zip |
|
|
|
|
#解压 |
|
|
|
|
unzip v2.3.1 |
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
- 安装Subversion(如果你安装过Subversion,本步骤可以略过) |
|
|
|
|
|
|
|
|
|
``` |
|
|
|
|
# 由于CentOS7.6默认源中的Subversion版本为1.7 因此我们需要通过安装脚本安装高版本(>=1.8) |
|
|
|
|
#由于CentOS7.6默认源中的Subversion版本为1.7 因此我们需要通过安装脚本安装高版本(>=1.8) |
|
|
|
|
|
|
|
|
|
# 切换目录 |
|
|
|
|
#切换目录 |
|
|
|
|
cd /var/www/html/server/ |
|
|
|
|
|
|
|
|
|
# install.php文件可以帮助我们安装Subversion |
|
|
|
|
#install.php文件可以帮助我们安装Subversion |
|
|
|
|
php install.php |
|
|
|
|
``` |
|
|
|
|
|
|
|
|
@ -82,324 +96,127 @@ cd /var/www/html/server
@@ -82,324 +96,127 @@ cd /var/www/html/server
|
|
|
|
|
php install.php |
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
- 将本程序加入系统管理和开机自启(系统管理)(推荐)(与下方启动方式二选一即可) |
|
|
|
|
|
|
|
|
|
- ``` |
|
|
|
|
#新建文件 svnserve.service |
|
|
|
|
vim /usr/lib/systemd/system/svnadmind.service |
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
- ``` |
|
|
|
|
#写入以下内容 |
|
|
|
|
#注意 /var/www/html/server/svnadmind.php 要改为自己实际的文件路径 |
|
|
|
|
#文件名称为 svnadmind 则表示我们新建的服务名称为 svnadmind |
|
|
|
|
[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 |
|
|
|
|
|
|
|
|
|
#取消开机自启动 |
|
|
|
|
systemctl diable svnadmind |
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
- 启动本程序的后台进程(手动管理)(与上方启动方式二选一即可) |
|
|
|
|
|
|
|
|
|
- ``` |
|
|
|
|
#正式启动(后台模式) |
|
|
|
|
nohup php svnadmind.php start >/dev/null 2>&1 & |
|
|
|
|
|
|
|
|
|
#停止 |
|
|
|
|
php svnandmin.php stop |
|
|
|
|
|
|
|
|
|
#调试模式 |
|
|
|
|
php svnadmin.php console |
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
### 2、在安装宝塔面板的操作系统安装示例 |
|
|
|
|
|
|
|
|
|
- 安装方式跟手动部署类似,只是宝塔系统了很多可视化操作很方便 |
|
|
|
|
|
|
|
|
|
- 参考视频:[SVNAdmin V2.2.1 系统部署与使用演示视频【针对宝塔面板】]( https://www.bilibili.com/video/BV1XR4y1H7p3?share_source=copy_web&vd_source=f4620db503611c42618f1afd9c8afecd) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### 3、在ubutntu18安装示例 |
|
|
|
|
|
|
|
|
|
- 注意以root用户执行 server/install.php 和 server/svnadmind.php 即可 |
|
|
|
|
|
|
|
|
|
### 4、在Rocky安装示例 |
|
|
|
|
|
|
|
|
|
- 无注意事项 |
|
|
|
|
|
|
|
|
|
## 二、docker安装 |
|
|
|
|
|
|
|
|
|
- 拉取镜像 |
|
|
|
|
|
|
|
|
|
- ``` |
|
|
|
|
#拉取镜像 |
|
|
|
|
docker pull witersencom/svnadmin:2.3.3 |
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
- 仅运行查看效果(不挂载数据) |
|
|
|
|
|
|
|
|
|
- ``` |
|
|
|
|
docker run -d \ |
|
|
|
|
--name svnadmintemp \ |
|
|
|
|
-p 80:80 \ |
|
|
|
|
-p 3690:3690 \ |
|
|
|
|
--privileged \ |
|
|
|
|
witersencom/svnadmin:2.3.3 |
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
- 用于生产环境(挂载数据到容器中,容器销毁数据不会丢失) |
|
|
|
|
|
|
|
|
|
- 新用户 |
|
|
|
|
|
|
|
|
|
- ``` |
|
|
|
|
#启动一个临时容器,并将配置文件复制出来 |
|
|
|
|
docker run -d \ |
|
|
|
|
--name svnadmintemp \ |
|
|
|
|
--privileged=true \ |
|
|
|
|
witersencom/svnadmin:2.3.3 \ |
|
|
|
|
/usr/sbin/init |
|
|
|
|
|
|
|
|
|
#复制的数据目录为 /home/svnadmin/ |
|
|
|
|
cd /home/ |
|
|
|
|
docker cp svnadmintemp:/home/svnadmin ./ |
|
|
|
|
|
|
|
|
|
#停止并删除临时容器 |
|
|
|
|
dockeer stop svnadmintemp && docker rm svnadmintemp |
|
|
|
|
|
|
|
|
|
#启动正式容器 |
|
|
|
|
docker run -d \ |
|
|
|
|
-p 80:80 \ |
|
|
|
|
-p 3690:3690 \ |
|
|
|
|
-v /home/svnadmin/:/home/svnadmin/ \ |
|
|
|
|
--privileged \ |
|
|
|
|
witersencom/svnadmin:2.3.3 |
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
- 老用户(2.3.1+) |
|
|
|
|
|
|
|
|
|
- ``` |
|
|
|
|
#假设数据存储主目录在宿主机的位置为 /home/svnadmin/ 则直接按照下面方式启动即可 会自动将宿主机数据挂载到容器中 |
|
|
|
|
docker run -d \ |
|
|
|
|
-p 80:80 \ |
|
|
|
|
-p 3690:3690 \ |
|
|
|
|
-v /home/svnadmin/:/home/svnadmin/ \ |
|
|
|
|
--privileged \ |
|
|
|
|
svnadmin:2.3.3 |
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
## 三、手动升级 |
|
|
|
|
|
|
|
|
|
### 3.1、docker用户 |
|
|
|
|
|
|
|
|
|
- docker版本只需要停止原来的镜像然后拉取新镜像即可 |
|
|
|
|
- 注意将数据存在宿主机 |
|
|
|
|
|
|
|
|
|
### 3.2、非docker用户 |
|
|
|
|
|
|
|
|
|
- 程序升级本质就是用新代码替换旧代码,然后用户的数据存储目录无需改变,流程如下: |
|
|
|
|
- 停止后台 php server/svnadmind.php stop |
|
|
|
|
- 下载新版本代码,替换旧版本代码 |
|
|
|
|
- 执行适配程序 php server/install.php |
|
|
|
|
- 执行脚本并选择使用第2个选项,选择不覆盖原来的 autzh 、passwd、svnadmin.db 等文件 |
|
|
|
|
- 重新启动后台 |
|
|
|
|
- 如果用户之前自己修改了配置文件,则需要升级后重新修改配置文件 |
|
|
|
|
|
|
|
|
|
## 四、FAQ |
|
|
|
|
|
|
|
|
|
### 1、如何将已有的SVN仓库使用此系统管理 ? |
|
|
|
|
|
|
|
|
|
- (1)安装本系统 |
|
|
|
|
- (2)执行 php server/install.php 使用内置的功能重新配置你的Subversion |
|
|
|
|
- (3)将已有的一个或多个SVN仓库移动到 /home/svnadmin/rep/ 目录下 |
|
|
|
|
- (4)刷新管理系统的仓库管理页面即可识别SVN仓库 |
|
|
|
|
- (5)注意此方式并不会识别SVN仓库原有的用户以及权限配置,因为我们使用了统一的配置文件来进行用户和权限管理,因此迁移仓库后还需要在管理系统重新添加用户、用户组、配置权限! |
|
|
|
|
|
|
|
|
|
### 2、如何将数据库切换为MySQL ? |
|
|
|
|
|
|
|
|
|
- 创建数据库 |
|
|
|
|
- 或者将本程序加入系统管理和开机自启(系统管理)(推荐)(与下方启动方式二选一即可) |
|
|
|
|
|
|
|
|
|
- 将系统提供的 mysql 数据库文件导入到你的MySQL数据库 |
|
|
|
|
|
|
|
|
|
- 修改 config/database.php 将sqlite部分注释并配置你的MySQL即可 |
|
|
|
|
- 注意:若php版本过低而MySQL版本>=8.0,则会提示:The server requested authentication method unknown to the client,只需要升级php版本或者修改MySQL数据库的配置信息即可 |
|
|
|
|
|
|
|
|
|
### 3、为什么只支持管理Subversion1.8+ ? |
|
|
|
|
|
|
|
|
|
- 预计在 2.5.x 版本向下适配,支持管理 Subversion 1.5+ |
|
|
|
|
``` |
|
|
|
|
#新建文件 svnserve.service |
|
|
|
|
vim /usr/lib/systemd/system/svnadmind.service |
|
|
|
|
|
|
|
|
|
### 4、为什么目前只支持Linux操作系统 ? |
|
|
|
|
#写入以下内容 |
|
|
|
|
#注意 /var/www/html/server/svnadmind.php 要改为自己实际的文件路径 |
|
|
|
|
#文件名称为 svnadmind 则表示我们新建的服务名称为 svnadmind |
|
|
|
|
[Unit] |
|
|
|
|
Description=SVNAdmin |
|
|
|
|
After=syslog.target network.target |
|
|
|
|
|
|
|
|
|
- 正在使用新方案对Windows操作系统进行支持测试 |
|
|
|
|
- 预计在 2.4.x 版本支持 Windows 部署 |
|
|
|
|
[Service] |
|
|
|
|
Type=simple |
|
|
|
|
ExecStart=/usr/bin/php /var/www/html/server/svnadmind.php start |
|
|
|
|
|
|
|
|
|
### 5、仓库初始化结构模板 ? |
|
|
|
|
[Install] |
|
|
|
|
WantedBy=multi-user.target |
|
|
|
|
|
|
|
|
|
- 我们可以在创建仓库的时候选择创建指定内容结构的仓库,如包含 "trunk" "branches" "tags" 文件夹的结构,这一结构是可选的并且可调整的,我们可以手动调整 /home/svnadmin/templete/initStruct/01/ 下的目录结构 |
|
|
|
|
#启动 |
|
|
|
|
systemctl daemon-reload |
|
|
|
|
systemctl start svnadmind |
|
|
|
|
|
|
|
|
|
### 6、常用钩子推荐 ? |
|
|
|
|
#查看状态 |
|
|
|
|
systemctl status svnadmind |
|
|
|
|
|
|
|
|
|
- 我们可以在目录 /home/svnadmin/hooks/ 下增加自己常用的钩子 |
|
|
|
|
- /home/svnadmin/hooks/ 下建立文件夹 xx,名称任意 |
|
|
|
|
- 在 xx 下新建文件 hookDescription 写入对此钩子的描述文本内容 |
|
|
|
|
- 在 xx 下新建文件 hookName 写入钩子类型,如post-commit等 |
|
|
|
|
- 在 xx 下新建文件 ,以钩子类型命名,如 post-commit ,然后写入具体钩子内容 |
|
|
|
|
- 感谢 【北方糙汉子-】提供的钩子脚本 |
|
|
|
|
#加入开机自启动 |
|
|
|
|
systemctl enable svnadmind |
|
|
|
|
|
|
|
|
|
### 7、关于Subversion 权限配置中的魔力符号 |
|
|
|
|
#取消开机自启动 |
|
|
|
|
systemctl diable svnadmind |
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
- Subversion从1.5开始支持用户使用一些魔力符号如 $authenticated 、$anonymous |
|
|
|
|
- 预计在 2.3.4 版本支持 Subversion 的全部权限配置特性 |
|
|
|
|
- 启动本程序的后台进程(手动管理)(与上方启动方式二选一即可) |
|
|
|
|
|
|
|
|
|
### 8、关于与LDAP对接 |
|
|
|
|
``` |
|
|
|
|
#正式启动(后台模式) |
|
|
|
|
nohup php svnadmind.php start >/dev/null 2>&1 & |
|
|
|
|
|
|
|
|
|
- 预计在 2.4 版本重新规划系统权限分配,并支持 LDAP 等认证方式 |
|
|
|
|
#停止 |
|
|
|
|
php svnandmin.php stop |
|
|
|
|
|
|
|
|
|
### 9、如何找回密码 |
|
|
|
|
#调试模式 |
|
|
|
|
php svnadmin.php console |
|
|
|
|
|
|
|
|
|
- 使用默认的SQLite数据库 |
|
|
|
|
``` |
|
|
|
|
#使用sqlite数据库 |
|
|
|
|
|
|
|
|
|
yum install -y sqlite-devel |
|
|
|
|
### 2、在安装宝塔面板的操作系统安装示例 |
|
|
|
|
|
|
|
|
|
cd /home/svnadmin |
|
|
|
|
- 创建站点 |
|
|
|
|
- 将PHP的命令行版本更换为要求的php版本 |
|
|
|
|
- 关闭站点的 open_basedir 防跨站攻击选项 |
|
|
|
|
- 将站点的PHP版本更换为要求的PHP版本 |
|
|
|
|
- 在软件商店对应版本的php中删除禁用的函数 |
|
|
|
|
- pcntl_signal |
|
|
|
|
- pcntl_fork |
|
|
|
|
- pcntl_wait |
|
|
|
|
- shell_exec |
|
|
|
|
- passthru |
|
|
|
|
- 安装和启动 |
|
|
|
|
- 进入server目录 |
|
|
|
|
- php install.php 进行安装和配置Subversion |
|
|
|
|
- php svnadmind.php start 启动后台程序 |
|
|
|
|
|
|
|
|
|
sqlite3 svnadmin.db |
|
|
|
|
### 3、在ubutntu18安装示例 |
|
|
|
|
|
|
|
|
|
.header on |
|
|
|
|
- 注意以root用户执行 server/install.php 和 server/svnadmind.php 即可 |
|
|
|
|
|
|
|
|
|
.mode column |
|
|
|
|
### 4、在Rocky安装示例 |
|
|
|
|
|
|
|
|
|
select * from admin_users; |
|
|
|
|
``` |
|
|
|
|
- 无注意事项 同1 |
|
|
|
|
|
|
|
|
|
- 使用MySQL数据库 |
|
|
|
|
- 使用可视化工具登录到数据库查看 admin_users 数据表信息即可 |
|
|
|
|
## 二、docker安装 |
|
|
|
|
|
|
|
|
|
### 10、关于大文件下载中断问题 |
|
|
|
|
- docker在下个版本v2.3.2支持 |
|
|
|
|
|
|
|
|
|
- 当下载1G以及以上的大文件会出现下载被中断的问题,是因为文件下载为了安全没有使用http文件直链,而是通过php校验后读取文件流下载,所以会存在一个php-fpm最大执行时间的问题,因此你可以通过 设置 php-fpm.conf 配置文件的 request_terminate_timeout 为0 来取消超时限制 |
|
|
|
|
## 三、手动升级 |
|
|
|
|
|
|
|
|
|
### 11、容器重启后无法正常访问web服务(svn不受影响) |
|
|
|
|
手动配置升级,具体操作步骤如下: |
|
|
|
|
|
|
|
|
|
``` |
|
|
|
|
【原因】 |
|
|
|
|
重启容器后,容器内的 httpd 由于一些原因没有成功重启 |
|
|
|
|
1、构建的 docker 镜像是以 CentOS7.9.2009 为基础进行的 |
|
|
|
|
由于 CentOS7.9.2009 基础镜像的权限问题:https://github.com/docker-library/docs/tree/master/centos#dockerfile-for-systemd-base-image |
|
|
|
|
导致如果启动容器时不增加 --privileged 参数 和不以 /usr/sbin/init 作为首先执行的指令,将会导致容器内一些程序无法正常启动 |
|
|
|
|
2、另外不排除重启后再次启动 httpd 时由于上次的 httpd.pid 文件依然造成的识别未 httpd 运行中的误判 |
|
|
|
|
【解决方案】 |
|
|
|
|
如果重启容器后 web 管理系统无法访问 |
|
|
|
|
只需要进入容器并执行下面的命令重新启动 httpd 服务即可 |
|
|
|
|
/usr/sbin/httpd |
|
|
|
|
或者 |
|
|
|
|
/usr/sbin/httpd -DFOREGROUND & |
|
|
|
|
后面会考虑更换更方便的解决方案 |
|
|
|
|
#假设你的代码部署在 /var/www/html/ 目录下 |
|
|
|
|
cd /var/www/html/ |
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
### 12、如果配置了多个仓库模板,如何在创建仓库时指定使用某个仓库模板? |
|
|
|
|
|
|
|
|
|
- 停止守护进程 |
|
|
|
|
``` |
|
|
|
|
例如: |
|
|
|
|
在 /home/svnadmin/templete/initStruct/01 下面配置第一个仓库结构模板 |
|
|
|
|
在 /home/svnadmin/templete/initStruct/02 下面配置第二个仓库结构模板 |
|
|
|
|
如果在web中创建时,如何选用默认的 /home/svnadmin/templete/initStruct/02 下面的仓库结构模板? |
|
|
|
|
【解决方案】 |
|
|
|
|
由于时间问题,开发时并没有对此功能做更多的详细开发,因此只预留了配置文件层面的修改途径,后续会将仓库模板功能加入到web配置,无需手动命令行管理 |
|
|
|
|
可以通过修改 config/svn.php 中的 templete_init_struct_01 值来修改 |
|
|
|
|
#停止旧版本的守护进程 |
|
|
|
|
php server/svnadmind.php stop |
|
|
|
|
``` |
|
|
|
|
- 备份 |
|
|
|
|
|
|
|
|
|
### 13、docker版本要修改容器内 svn 的 3690 默认端口 |
|
|
|
|
|
|
|
|
|
``` |
|
|
|
|
【解释】 |
|
|
|
|
既然使用 docker 版本,则无需考虑容器内应用的端口,因为可通过容器启动时候做端口映射 |
|
|
|
|
docker版本因为处于容器中权限问题禁用了一些按钮的操作权限,如修改svn服务的端口和绑定主机等信息 |
|
|
|
|
假如启动容器时,映射关系为 3691:3690 表示宿主机3691映射到容器的3690,因此在容器中修改3690为3692,会导致宿主机的3691无法提供服务 |
|
|
|
|
后面会改进 docker 版本,尽量令使用体验跟原生机器一致 |
|
|
|
|
【修改端口方案】 |
|
|
|
|
法1 |
|
|
|
|
直接在容器启动时即指定宿主机的映射端口,如 3692:3690 这样在容器中的管理系统查看还是3690,但是宿主机通过 3692 提供svn服务 |
|
|
|
|
法2(通过提供的dockefile自己重构docker镜像) |
|
|
|
|
修改所有文件中的3690端口为想要的端口如3692 |
|
|
|
|
之后通过 docker build . -t svnadmin:xxx-edit 即可得到标签为 svnadmin:xxx-edit 的自定义构建镜像 |
|
|
|
|
这样的做法好处为管理系统查看到的端口为3692,启动docker时候映射端口的写法也可为 3692:3692 |
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
### 14、如何创建其它的管理员账户 ? |
|
|
|
|
|
|
|
|
|
mkdir -p /var/www/html2 |
|
|
|
|
cp -r /var/www/html /var/www/html2 |
|
|
|
|
rm -rf /var/www/html/* |
|
|
|
|
``` |
|
|
|
|
由于目前的管理系统版本没有考虑到多用户权限管理的问题 ,此问题将在后续版本加入多用户权限管理解决 |
|
|
|
|
如果需要多个不同的管理员账号可以通过向管理员表 admin_users 手动插入数据 |
|
|
|
|
使用sqlite:数据库文件位置 /home/svnadmin/svnadmind.db,如果不熟悉sqlite的命令行插入,可以下载该文件到本地,使用 navicat 系列数据库管理软件打开修改,之后覆盖到服务器 |
|
|
|
|
使用mysql:进入命令行手动修改 |
|
|
|
|
- 部署新版本代码 |
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
### 15、配置了自定义仓库模板但是创建仓库时没有生效 |
|
|
|
|
|
|
|
|
|
cd /var/www/html/ |
|
|
|
|
wget https://gitee.com/witersen/SvnAdminV2.0/attach_files/1099697/download/v2.3.1.zip |
|
|
|
|
unzip v2.3.1.zip |
|
|
|
|
``` |
|
|
|
|
注意配置自定义仓库模板的位置 |
|
|
|
|
通常的位置在 /home/svnadmin/templete/initStruct/01 下面 |
|
|
|
|
而不是在项目代码相关的位置 |
|
|
|
|
- 升级Subversion版本(1.8+)(>=1.8则无需升级) |
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
### 16、数据长度超过8192 请向上调整参数:SOCKET_READ_LENGTH |
|
|
|
|
|
|
|
|
|
#执行脚本并选择使用第1个选项 |
|
|
|
|
php server/install.php |
|
|
|
|
``` |
|
|
|
|
【出现问题原因】 |
|
|
|
|
svn的用户量和权限配置数量增加,超过了默认值 |
|
|
|
|
【解决方案】 |
|
|
|
|
修改 config/daemon.php 文件中的 SOCKET_READ_LENGTH 和 SOCKET_WRITE_LENGTH |
|
|
|
|
设置到133693415 字节也就是大约小于128M貌似都是可以的,再大没有测试过 |
|
|
|
|
修改后别忘记要重启守护进程,重启守护进程的方式根据安装方式的不同而不同(不重启会出问题) |
|
|
|
|
【适用版本】 |
|
|
|
|
2.1.0+ |
|
|
|
|
- 执行适配程序 |
|
|
|
|
``` |
|
|
|
|
#执行脚本并选择使用第2个选项,选择不覆盖原来的 autzh 、passwd、svnadmin.db 等文件 |
|
|
|
|
php server/install.php |
|
|
|
|
|
|
|
|
|
### 17、登录时二维码总是提示输入错误 |
|
|
|
|
|
|
|
|
|
#如果之前在配置文件 config/database.php 切换了MySQL数据库,升级后需要重新配置下,这个问题会在下个版本修复 |
|
|
|
|
``` |
|
|
|
|
【出现问题原因】 |
|
|
|
|
首次登录数据信息默认使用sqlite数据库 |
|
|
|
|
由于部署问题或其它问题造成数据库文件 /home/svnadmin/svnadmin.db 没有权限 |
|
|
|
|
【解决方案】 |
|
|
|
|
为sqlite数据库文件和文件所在目录授权777 |
|
|
|
|
chmod 777 /home/svnadmin/svnadmin.db |
|
|
|
|
chmod 777 -R /home/svnadmin |
|
|
|
|
如果是容器部署,需要在容器中执行此操作而不是在宿主机执行 |
|
|
|
|
- 启动后台程序 |
|
|
|
|
``` |
|
|
|
|
启动方式见步骤一 |
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### 18、本程序的工作模式 |
|
|
|
|
|
|
|
|
|
- 通过使 svnadmind.php 成为守护进程并监听指定端口来工作 |
|
|
|
|
- php-fpm与php-cli程序的使用TCP套接字通信 |
|
|
|
|
|
|
|
|
|
![](./00.static/03.daemon/work.png) |
|
|
|
|
|
|
|
|
|
## 五、功能介绍 |
|
|
|
|
## 四、功能介绍 |
|
|
|
|
|
|
|
|
|
- 登录界面可分角色登录,配合后端实现的登录验证码更安全(验证码可后台手动关闭开启) |
|
|
|
|
|
|
|
|
@ -516,3 +333,114 @@ chmod 777 -R /home/svnadmin
@@ -516,3 +333,114 @@ chmod 777 -R /home/svnadmin
|
|
|
|
|
- SVN用户可自己修改密码 无需联系管理人员了 |
|
|
|
|
|
|
|
|
|
![](./00.static/01.demo/29.jpg) |
|
|
|
|
|
|
|
|
|
## 五、待办事项 |
|
|
|
|
|
|
|
|
|
### 1、计划增加功能 |
|
|
|
|
|
|
|
|
|
- [ ] 支持常见文件在线浏览 |
|
|
|
|
- [ ] 支持文件和文件夹在线下载 |
|
|
|
|
- [x] 支持重设仓库UUID |
|
|
|
|
- [ ] 删除仓库需要输入管理人员密码 |
|
|
|
|
- [x] 支持修改应用根目录 |
|
|
|
|
- [ ] 支持authz、passwd文件的在线识别导入和导出 |
|
|
|
|
- [ ] docker部署 |
|
|
|
|
- [ ] 邮件发送和仓库备份等使用异步任务 |
|
|
|
|
- [ ] 支持在线仓库版本过滤、仓库版本互传 |
|
|
|
|
- [ ] 在仓库列表以突出颜色标记不被支持管理的仓库,如低版本的仓库 |
|
|
|
|
- [ ] 支持webhook |
|
|
|
|
- [ ] 支持配置OSS进行备份 |
|
|
|
|
- [ ] 支持修改封面背景图片 |
|
|
|
|
- [ ] 仓库目录树视图中,文件或目录被授权过会有红点提示 |
|
|
|
|
- [ ] 增加多种备份方式的支持:如 svnadmin hotcopy |
|
|
|
|
- [ ] 安装svnadmin的机器之间可进行远程同步 |
|
|
|
|
- [ ] 支持使用svnauthz-validate检查authz配置信息的正确性作为高级功能 |
|
|
|
|
- [ ] 支持使用三种认证选项(Apache+mod_dav_svn、svnserve(用户文件和SASL)、svnserve+SSH) |
|
|
|
|
- [ ] 开发微信小程序端开发(针对提交提醒) |
|
|
|
|
|
|
|
|
|
### 2、计划改进部分 |
|
|
|
|
|
|
|
|
|
## 六、FAQ |
|
|
|
|
|
|
|
|
|
### 1、如何将已有的SVN仓库使用此系统管理 ? |
|
|
|
|
|
|
|
|
|
- (1)安装本系统 |
|
|
|
|
- (2)执行 php server/install.php 使用内置的功能重新配置你的Subversion |
|
|
|
|
- (3)将已有的一个或多个SVN仓库移动到 /home/svnadmin/rep/ 目录下 |
|
|
|
|
- (4)刷新管理系统的仓库管理页面即可识别SVN仓库 |
|
|
|
|
- (5)注意此方式并不会识别SVN仓库原有的用户以及权限配置,因为我们使用了统一的配置文件来进行用户和权限管理,因此迁移仓库后还需要在管理系统重新添加用户、用户组、配置权限! |
|
|
|
|
|
|
|
|
|
### 2、如何将数据库切换为MySQL ? |
|
|
|
|
|
|
|
|
|
- 创建数据库 |
|
|
|
|
|
|
|
|
|
- 将系统提供的 mysql 数据库文件导入到你的MySQL数据库 |
|
|
|
|
|
|
|
|
|
- 修改 config/database.php 将sqlite部分注释并配置你的MySQL即可 |
|
|
|
|
- 注意:若php版本过低而MySQL版本>=8.0,则会提示:The server requested authentication method unknown to the client,只需要升级php版本或者修改MySQL数据库的配置信息即可 |
|
|
|
|
|
|
|
|
|
### 3、为什么只支持管理Subversion1.8+ ? |
|
|
|
|
|
|
|
|
|
- 由于Subversion1.8 之前不支持将多个仓库配置为使用相同的权限配置文件 |
|
|
|
|
- 而我们一开始基于Subversion1.10进行开发,因此没有及时的对Subversion1.7等版本进行适配 |
|
|
|
|
|
|
|
|
|
### 4、为什么目前只支持Linux操作系统 ? |
|
|
|
|
|
|
|
|
|
- 正在使用新方案对Windows操作系统进行支持测试 |
|
|
|
|
- 预期目标为可安装Subversion和PHP的机器都可使用本软件 |
|
|
|
|
|
|
|
|
|
### 5、仓库初始化结构模板 ? |
|
|
|
|
|
|
|
|
|
- 我们可以在创建仓库的时候选择创建指定内容结构的仓库,如包含 "trunk" "branches" "tags" 文件夹的结构,这一结构是可选的并且可调整的,我们可以手动调整 /home/svnadmin/templete/initStruct/01/ 下的目录结构 |
|
|
|
|
|
|
|
|
|
### 6、常用钩子推荐 ? |
|
|
|
|
|
|
|
|
|
- 我们可以在目录 /home/svnadmin/hooks/ 下增加自己常用的钩子 |
|
|
|
|
- /home/svnadmin/hooks/ 下建立文件夹 xx,名称任意 |
|
|
|
|
- 在 xx 下新建文件 hookDescription 写入对此钩子的描述文本内容 |
|
|
|
|
- 在 xx 下新建文件 hookName 写入钩子类型,如post-commit等 |
|
|
|
|
- 在 xx 下新建文件 ,以钩子类型命名,如 post-commit ,然后写入具体钩子内容 |
|
|
|
|
- 感谢 【北方糙汉子-】提供的钩子脚本 |
|
|
|
|
|
|
|
|
|
### 7、关于Subversion 权限配置中的魔力符号 |
|
|
|
|
|
|
|
|
|
- Subversion从1.5开始支持用户使用一些魔力符号如 $authenticated 、$anonymous |
|
|
|
|
- 我们使用正则表达式对authz和passwd文件进行匹配和修改 |
|
|
|
|
- 由于时间原因,暂时不支持用户的authz文件中使用 Subversion 支持的魔力符号 |
|
|
|
|
|
|
|
|
|
### 8、关于与LDAP对接 |
|
|
|
|
|
|
|
|
|
- 与LDAP的对接将会等待一段时间,因为还需要时间使当前版本更稳定 |
|
|
|
|
|
|
|
|
|
### 9、如何找回密码 |
|
|
|
|
|
|
|
|
|
- 使用默认的SQLite数据库 |
|
|
|
|
``` |
|
|
|
|
#使用sqlite数据库 |
|
|
|
|
|
|
|
|
|
yum install -y sqlite-devel |
|
|
|
|
|
|
|
|
|
cd /home/svnadmin |
|
|
|
|
|
|
|
|
|
sqlite3 svnadmin.db |
|
|
|
|
|
|
|
|
|
.header on |
|
|
|
|
|
|
|
|
|
.mode column |
|
|
|
|
|
|
|
|
|
select * from admin_users; |
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
- 使用MySQL数据库 |
|
|
|
|
- 使用可视化工具登录到数据库查看 admin_users 数据表信息即可 |
|
|
|
|
|
|
|
|
|
### 10、关于大文件下载中断问题 |
|
|
|
|
|
|
|
|
|
- 当下载1G以及以上的大文件会出现下载被中断的问题,是因为文件下载为了安全没有使用http文件直链,而是通过php校验后读取文件流下载,所以会存在一个php-fpm最大执行时间的问题,因此你可以通过 设置 php-fpm.conf 配置文件的 request_terminate_timeout 为0 来取消超时限制 |
|
|
|
|
|
|
|
|
|
### 11、本软件的工作模式 |
|
|
|
|
|
|
|
|
|
- 通过使 svnadmind.php 成为守护进程并监听指定端口来工作 |
|
|
|
|
- php-fpm与php-cli程序的使用TCP套接字通信 |
|
|
|
|
|
|
|
|
|
![](./00.static/03.daemon/work.png) |