SVNAdmin - 好用的开源SVN管理系统
-
基于web的Subversion(SVN)服務(wù)器端管理工具,支持docker部署
-
支持功能:SVN倉庫管理、SVN用戶管理、SVN分組管理、目錄授權(quán)、目錄瀏覽、Hooks管理、在線dump備份、在線備份恢復(fù)、SVN用戶禁用、服務(wù)器狀態(tài)管理、日志管理、消息通知、更新檢測…
-
演示地址:http://svnadmin.witersen.com (默認的用戶名與密碼都為 admin)
-
項目地址:
- GitHub地址:https://github.com/witersen/SvnAdminV2.0
- Gitee地址:https://gitee.com/witersen/SvnAdminV2.0
-
發(fā)行包:
- 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 構(gòu)建
-
操作系統(tǒng)(手動安裝):CentOS7(推薦)、CentOS8、Rocky、Ubuntu(Windows及其它Linux發(fā)行版正在測試兼容中)
-
PHP版本:5.5 <= PHP < 8.0
-
數(shù)據(jù)庫:SQLite、MySQL
-
Subversion:1.8+
-
-
問題協(xié)助或功能建議加Q群:633108141
一、手動安裝
1、在CentOS7.6操作系統(tǒng)裸機安裝示例
- 安裝PHP和相關(guān)擴展
- 安裝web服務(wù)器
- 安裝本程序
- 安裝Subversion(如果你安裝過Subversion,本步驟可以略過)
- 修改Subversion的配置使其支持被本系統(tǒng)管理
-
將本程序加入系統(tǒng)管理和開機自啟(系統(tǒng)管理)(推薦)(與下方啟動方式二選一即可)
- #新建文件 svnserve.service vim /usr/lib/systemd/system/svnadmind.service
- #寫入以下內(nèi)容 #注意 /var/www/html/server/svnadmind.php 要改為自己實際的文件路徑 #文件名稱為 svnadmind 則表示我們新建的服務(wù)名稱為 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#查看狀態(tài) systemctl status svnadmind#加入開機自啟動 systemctl enable svnadmind#取消開機自啟動 systemctl diable svnadmind
-
啟動本程序的后臺進程(手動管理)(與上方啟動方式二選一即可)
- #正式啟動(后臺模式) nohup php svnadmind.php start >/dev/null 2>&1 &#停止 php svnandmin.php stop#調(diào)試模式 php svnadmin.php console
2、在安裝寶塔面板的操作系統(tǒng)安裝示例
-
安裝方式跟手動部署類似,只是寶塔系統(tǒng)了很多可視化操作很方便
-
參考視頻:SVNAdmin V2.2.1 系統(tǒng)部署與使用演示視頻【針對寶塔面板】
3、在ubutntu18安裝示例
- 注意以root用戶執(zhí)行 server/install.php 和 server/svnadmind.php 即可
4、在Rocky安裝示例
- 無注意事項
二、docker安裝
-
拉取鏡像
- #拉取鏡像 docker pull witersencom/svnadmin:2.3.3
-
僅運行查看效果(不掛載數(shù)據(jù))
- docker run -d \ --name svnadmintemp \ -p 80:80 \ -p 3690:3690 \ --privileged \ witersencom/svnadmin:2.3.3
-
用于生產(chǎn)環(huán)境(掛載數(shù)據(jù)到容器中,容器銷毀數(shù)據(jù)不會丟失)
-
新用戶
- #啟動一個臨時容器,并將配置文件復(fù)制出來 docker run -d \ --name svnadmintemp \ --privileged=true \ witersencom/svnadmin:2.3.3 \ /usr/sbin/init#復(fù)制的數(shù)據(jù)目錄為 /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+)
- #假設(shè)數(shù)據(jù)存儲主目錄在宿主機的位置為 /home/svnadmin/ 則直接按照下面方式啟動即可 會自動將宿主機數(shù)據(jù)掛載到容器中 docker run -d \ -p 80:80 \ -p 3690:3690 \ -v /home/svnadmin/:/home/svnadmin/ \ --privileged \ svnadmin:2.3.3
-
三、手動升級
3.1、docker用戶
- docker版本只需要停止原來的鏡像然后拉取新鏡像即可
- 注意將數(shù)據(jù)存在宿主機
3.2、非docker用戶
- 程序升級本質(zhì)就是用新代碼替換舊代碼,然后用戶的數(shù)據(jù)存儲目錄無需改變,流程如下:
- 停止后臺 php server/svnadmind.php stop
- 下載新版本代碼,替換舊版本代碼
- 執(zhí)行適配程序 php server/install.php
- 執(zhí)行腳本并選擇使用第2個選項,選擇不覆蓋原來的 autzh 、passwd、svnadmin.db 等文件
- 重新啟動后臺
- 如果用戶之前自己修改了配置文件,則需要升級后重新修改配置文件
四、FAQ
1、如何將已有的SVN倉庫使用此系統(tǒng)管理 ?
- (1)安裝本系統(tǒng)
- (2)執(zhí)行 php server/install.php 使用內(nèi)置的功能重新配置你的Subversion
- (3)將已有的一個或多個SVN倉庫移動到 /home/svnadmin/rep/ 目錄下
- (4)刷新管理系統(tǒng)的倉庫管理頁面即可識別SVN倉庫
- (5)注意此方式并不會識別SVN倉庫原有的用戶以及權(quán)限配置,因為我們使用了統(tǒng)一的配置文件來進行用戶和權(quán)限管理,因此遷移倉庫后還需要在管理系統(tǒng)重新添加用戶、用戶組、配置權(quán)限!
2、如何將數(shù)據(jù)庫切換為MySQL ?
-
創(chuàng)建數(shù)據(jù)庫
-
將系統(tǒng)提供的 mysql 數(shù)據(jù)庫文件導(dǎo)入到你的MySQL數(shù)據(jù)庫
-
修改 config/database.php 將sqlite部分注釋并配置你的MySQL即可
-
注意:若php版本過低而MySQL版本>=8.0,則會提示:The server requested authentication method unknown to the client,只需要升級php版本或者修改MySQL數(shù)據(jù)庫的配置信息即可
3、為什么只支持管理Subversion1.8+ ?
- 預(yù)計在 2.5.x 版本向下適配,支持管理 Subversion 1.5+
4、為什么目前只支持Linux操作系統(tǒng) ?
- 正在使用新方案對Windows操作系統(tǒng)進行支持測試
- 預(yù)計在 2.4.x 版本支持 Windows 部署
5、倉庫初始化結(jié)構(gòu)模板 ?
- 我們可以在創(chuàng)建倉庫的時候選擇創(chuàng)建指定內(nèi)容結(jié)構(gòu)的倉庫,如包含 “trunk” “branches” “tags” 文件夾的結(jié)構(gòu),這一結(jié)構(gòu)是可選的并且可調(diào)整的,我們可以手動調(diào)整 /home/svnadmin/templete/initStruct/01/ 下的目錄結(jié)構(gòu)
6、常用鉤子推薦 ?
- 我們可以在目錄 /home/svnadmin/hooks/ 下增加自己常用的鉤子
- /home/svnadmin/hooks/ 下建立文件夾 xx,名稱任意
- 在 xx 下新建文件 hookDescription 寫入對此鉤子的描述文本內(nèi)容
- 在 xx 下新建文件 hookName 寫入鉤子類型,如post-commit等
- 在 xx 下新建文件 ,以鉤子類型命名,如 post-commit ,然后寫入具體鉤子內(nèi)容
- 感謝 【北方糙漢子-】提供的鉤子腳本
7、關(guān)于Subversion 權(quán)限配置中的魔力符號
- Subversion從1.5開始支持用戶使用一些魔力符號如 authenticated、authenticated 、authenticated、anonymous
- 預(yù)計在 2.3.4 版本支持 Subversion 的全部權(quán)限配置特性
8、關(guān)于與LDAP對接
- 預(yù)計在 2.4 版本重新規(guī)劃系統(tǒng)權(quán)限分配,并支持 LDAP 等認證方式
9、如何找回密碼
- 使用默認的SQLite數(shù)據(jù)庫
- 使用MySQL數(shù)據(jù)庫
- 使用可視化工具登錄到數(shù)據(jù)庫查看 admin_users 數(shù)據(jù)表信息即可
10、關(guān)于大文件下載中斷問題
- 當下載1G以及以上的大文件會出現(xiàn)下載被中斷的問題,是因為文件下載為了安全沒有使用http文件直鏈,而是通過php校驗后讀取文件流下載,所以會存在一個php-fpm最大執(zhí)行時間的問題,因此你可以通過 設(shè)置 php-fpm.conf 配置文件的 request_terminate_timeout 為0 來取消超時限制
11、容器重啟后無法正常訪問web服務(wù)(svn不受影響)
【原因】 重啟容器后,容器內(nèi)的 httpd 由于一些原因沒有成功重啟 1、構(gòu)建的 docker 鏡像是以 CentOS7.9.2009 為基礎(chǔ)進行的 由于 CentOS7.9.2009 基礎(chǔ)鏡像的權(quán)限問題:https://github.com/docker-library/docs/tree/master/centos#dockerfile-for-systemd-base-image 導(dǎo)致如果啟動容器時不增加 --privileged 參數(shù) 和不以 /usr/sbin/init 作為首先執(zhí)行的指令,將會導(dǎo)致容器內(nèi)一些程序無法正常啟動 2、另外不排除重啟后再次啟動 httpd 時由于上次的 httpd.pid 文件依然造成的識別未 httpd 運行中的誤判 【解決方案】 如果重啟容器后 web 管理系統(tǒng)無法訪問 只需要進入容器并執(zhí)行下面的命令重新啟動 httpd 服務(wù)即可 /usr/sbin/httpd 或者 /usr/sbin/httpd -DFOREGROUND & 后面會考慮更換更方便的解決方案12、如果配置了多個倉庫模板,如何在創(chuàng)建倉庫時指定使用某個倉庫模板?
例如: 在 /home/svnadmin/templete/initStruct/01 下面配置第一個倉庫結(jié)構(gòu)模板 在 /home/svnadmin/templete/initStruct/02 下面配置第二個倉庫結(jié)構(gòu)模板 如果在web中創(chuàng)建時,如何選用默認的 /home/svnadmin/templete/initStruct/02 下面的倉庫結(jié)構(gòu)模板? 【解決方案】 由于時間問題,開發(fā)時并沒有對此功能做更多的詳細開發(fā),因此只預(yù)留了配置文件層面的修改途徑,后續(xù)會將倉庫模板功能加入到web配置,無需手動命令行管理 可以通過修改 config/svn.php 中的 templete_init_struct_01 值來修改13、docker版本要修改容器內(nèi) svn 的 3690 默認端口
【解釋】 既然使用 docker 版本,則無需考慮容器內(nèi)應(yīng)用的端口,因為可通過容器啟動時候做端口映射 docker版本因為處于容器中權(quán)限問題禁用了一些按鈕的操作權(quán)限,如修改svn服務(wù)的端口和綁定主機等信息 假如啟動容器時,映射關(guān)系為 3691:3690 表示宿主機3691映射到容器的3690,因此在容器中修改3690為3692,會導(dǎo)致宿主機的3691無法提供服務(wù) 后面會改進 docker 版本,盡量令使用體驗跟原生機器一致 【修改端口方案】 法1 直接在容器啟動時即指定宿主機的映射端口,如 3692:3690 這樣在容器中的管理系統(tǒng)查看還是3690,但是宿主機通過 3692 提供svn服務(wù) 法2(通過提供的dockefile自己重構(gòu)docker鏡像) 修改所有文件中的3690端口為想要的端口如3692 之后通過 docker build . -t svnadmin:xxx-edit 即可得到標簽為 svnadmin:xxx-edit 的自定義構(gòu)建鏡像 這樣的做法好處為管理系統(tǒng)查看到的端口為3692,啟動docker時候映射端口的寫法也可為 3692:369214、如何創(chuàng)建其它的管理員賬戶 ?
由于目前的管理系統(tǒng)版本沒有考慮到多用戶權(quán)限管理的問題 ,此問題將在后續(xù)版本加入多用戶權(quán)限管理解決 如果需要多個不同的管理員賬號可以通過向管理員表 admin_users 手動插入數(shù)據(jù) 使用sqlite:數(shù)據(jù)庫文件位置 /home/svnadmin/svnadmind.db,如果不熟悉sqlite的命令行插入,可以下載該文件到本地,使用 navicat 系列數(shù)據(jù)庫管理軟件打開修改,之后覆蓋到服務(wù)器 使用mysql:進入命令行手動修改15、配置了自定義倉庫模板但是創(chuàng)建倉庫時沒有生效
注意配置自定義倉庫模板的位置 通常的位置在 /home/svnadmin/templete/initStruct/01 下面 而不是在項目代碼相關(guān)的位置16、數(shù)據(jù)長度超過8192 請向上調(diào)整參數(shù):SOCKET_READ_LENGTH
【出現(xiàn)問題原因】 svn的用戶量和權(quán)限配置數(shù)量增加,超過了默認值 【解決方案】 修改 config/daemon.php 文件中的 SOCKET_READ_LENGTH 和 SOCKET_WRITE_LENGTH 設(shè)置到133693415 字節(jié)也就是大約小于128M貌似都是可以的,再大沒有測試過 修改后別忘記要重啟守護進程,重啟守護進程的方式根據(jù)安裝方式的不同而不同(不重啟會出問題) 【適用版本】 2.1.0+17、登錄時二維碼總是提示輸入錯誤
【出現(xiàn)問題原因】 首次登錄數(shù)據(jù)信息默認使用sqlite數(shù)據(jù)庫 由于部署問題或其它問題造成數(shù)據(jù)庫文件 /home/svnadmin/svnadmin.db 沒有權(quán)限 【解決方案】 為sqlite數(shù)據(jù)庫文件和文件所在目錄授權(quán)777 chmod 777 /home/svnadmin/svnadmin.db chmod 777 -R /home/svnadmin 如果是容器部署,需要在容器中執(zhí)行此操作而不是在宿主機執(zhí)行18、本程序的工作模式
-
通過使 svnadmind.php 成為守護進程并監(jiān)聽指定端口來工作
-
php-fpm與php-cli程序的使用TCP套接字通信
五、功能介紹
-
登錄界面可分角色登錄,配合后端實現(xiàn)的登錄驗證碼更安全(驗證碼可后臺手動關(guān)閉開啟)
-
服務(wù)器狀態(tài)監(jiān)控和信息統(tǒng)計,對當前服務(wù)器狀態(tài)和SVN倉庫信息更加了解
-
SVN倉庫概覽,提供了多種高級功能,還可根據(jù)倉庫名、版本數(shù)、體積等一鍵排序
-
新建SVN倉庫提供兩種模式 隨意選擇
-
在線目錄瀏覽更加方便 逐層加載,服務(wù)資源占用更低
-
通過目錄面包屑可以隨時回到某級目錄 可以看到目錄的作者、版本、提交日期、提交日志等,還可一鍵復(fù)制檢出地址
-
倉庫授權(quán)精確到文件級別,可對用戶和用戶組快速授權(quán)和更改權(quán)限
-
支持在線dump方式備份,備份文件可隨時下載或刪除
-
支持對SVN倉庫鉤子的管理
-
提供了常用鉤子,也可以將自己的常用鉤子放在這里
-
可以查看每個倉庫的詳細信息,一鍵復(fù)制詳細信息更加方便
-
可以將通過dump方式備份的文件再導(dǎo)入倉庫 實現(xiàn)SVN倉庫的遷移
-
倉庫導(dǎo)入過程中如果拋出了錯誤信息會被收集被顯示 方便管理人員更好的定位問題
-
可以很方便的修改倉庫名稱,這會自動同步配置文件,所以無需擔心
-
刪除倉庫也會有風險提示
-
SVN用戶管理支持啟用、禁用、添加備注信息,管理用戶更加方便
-
SVN分組支持顯示其包含的用戶和分組數(shù)量 同時支持修改備注信息
-
可以對分組進行用戶成員編輯,系統(tǒng)會貼心的提示用戶是否處于禁用狀態(tài)
-
用戶管理支持組嵌套,同時如果你不小心搞了一個循環(huán)嵌套,系統(tǒng)會提示你
-
分組名支持修改,系統(tǒng)會幫你修改配置文件的一切,無需擔心
-
系統(tǒng)提供了日志功能,可以對系統(tǒng)的運轉(zhuǎn)情況做個記錄啦
-
管理人員可以修改自己的賬號和密碼,更加安全
-
系統(tǒng)提供了svnserve主機和端口綁定功能 而且開啟了svnserve的運行日志 為你多一層運維保障
-
看看你的數(shù)據(jù)都在哪里存儲呢
-
配置郵件通知服務(wù)吧
-
風險操作可以來個提示
-
看看有沒有新版本吧
-
SVN用戶個人的界面 只可看到被授權(quán)的倉庫路徑
-
SVN用戶可自己修改密碼 無需聯(lián)系管理人員了
總結(jié)
以上是生活随笔為你收集整理的SVNAdmin - 好用的开源SVN管理系统的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php rsa2 pkcs8,关于pkc
- 下一篇: eeglab和matlab,Matlab