日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

SVNAdmin - 好用的开源SVN管理系统

發布時間:2023/12/31 windows 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SVNAdmin - 好用的开源SVN管理系统 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
  • 基于web的Subversion(SVN)服務器端管理工具,支持docker部署

  • 支持功能: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 構建

    • 操作系統(手動安裝):CentOS7(推薦)、CentOS8、Rocky、Ubuntu(Windows及其它Linux發行版正在測試兼容中)

    • PHP版本:5.5 <= PHP < 8.0

    • 數據庫:SQLite、MySQL

    • Subversion:1.8+

  • 問題協助或功能建議加Q群: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
  • 安裝web服務器
# 以apache為例 yum install -y httpd systemctl start httpd systemctl enable httpd
  • 安裝本程序
# 將代碼包下載到 /var/www/html/ 目錄并解壓 cd /var/www/html/# 代碼包從發行版獲取 wget https://gitee.com/witersen/SvnAdminV2.0/releases/download/v2.3.3/v2.3.3.zip# 解壓 unzip v2.3.3.zip
  • 安裝Subversion(如果你安裝過Subversion,本步驟可以略過)
# 由于CentOS7.6默認源中的Subversion版本為1.7 因此我們需要通過安裝腳本安裝高版本(>=1.8)# 切換目錄 cd /var/www/html/server/# install.php文件可以幫助我們安裝Subversion php install.php
  • 修改Subversion的配置使其支持被本系統管理
#切換到目錄 cd /var/www/html/server#install.php文件可以幫助我們配置Subversion 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 系統部署與使用演示視頻【針對寶塔面板】

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+

4、為什么目前只支持Linux操作系統 ?

  • 正在使用新方案對Windows操作系統進行支持測試
  • 預計在 2.4.x 版本支持 Windows 部署

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、authenticated 、authenticated、anonymous
  • 預計在 2.3.4 版本支持 Subversion 的全部權限配置特性

8、關于與LDAP對接

  • 預計在 2.4 版本重新規劃系統權限分配,并支持 LDAP 等認證方式

9、如何找回密碼

  • 使用默認的SQLite數據庫
#使用sqlite數據庫yum install -y sqlite-develcd /home/svnadminsqlite3 svnadmin.db.header on.mode columnselect * from admin_users;
  • 使用MySQL數據庫
    • 使用可視化工具登錄到數據庫查看 admin_users 數據表信息即可

10、關于大文件下載中斷問題

  • 當下載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 & 后面會考慮更換更方便的解決方案

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 值來修改

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、如何創建其它的管理員賬戶 ?

由于目前的管理系統版本沒有考慮到多用戶權限管理的問題 ,此問題將在后續版本加入多用戶權限管理解決 如果需要多個不同的管理員賬號可以通過向管理員表 admin_users 手動插入數據 使用sqlite:數據庫文件位置 /home/svnadmin/svnadmind.db,如果不熟悉sqlite的命令行插入,可以下載該文件到本地,使用 navicat 系列數據庫管理軟件打開修改,之后覆蓋到服務器 使用mysql:進入命令行手動修改

15、配置了自定義倉庫模板但是創建倉庫時沒有生效

注意配置自定義倉庫模板的位置 通常的位置在 /home/svnadmin/templete/initStruct/01 下面 而不是在項目代碼相關的位置

16、數據長度超過8192 請向上調整參數:SOCKET_READ_LENGTH

【出現問題原因】 svn的用戶量和權限配置數量增加,超過了默認值 【解決方案】 修改 config/daemon.php 文件中的 SOCKET_READ_LENGTH 和 SOCKET_WRITE_LENGTH 設置到133693415 字節也就是大約小于128M貌似都是可以的,再大沒有測試過 修改后別忘記要重啟守護進程,重啟守護進程的方式根據安裝方式的不同而不同(不重啟會出問題) 【適用版本】 2.1.0+

17、登錄時二維碼總是提示輸入錯誤

【出現問題原因】 首次登錄數據信息默認使用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套接字通信

五、功能介紹

  • 登錄界面可分角色登錄,配合后端實現的登錄驗證碼更安全(驗證碼可后臺手動關閉開啟)

  • 服務器狀態監控和信息統計,對當前服務器狀態和SVN倉庫信息更加了解

  • SVN倉庫概覽,提供了多種高級功能,還可根據倉庫名、版本數、體積等一鍵排序

  • 新建SVN倉庫提供兩種模式 隨意選擇

  • 在線目錄瀏覽更加方便 逐層加載,服務資源占用更低

  • 通過目錄面包屑可以隨時回到某級目錄 可以看到目錄的作者、版本、提交日期、提交日志等,還可一鍵復制檢出地址

  • 倉庫授權精確到文件級別,可對用戶和用戶組快速授權和更改權限

  • 支持在線dump方式備份,備份文件可隨時下載或刪除

  • 支持對SVN倉庫鉤子的管理

  • 提供了常用鉤子,也可以將自己的常用鉤子放在這里

  • 可以查看每個倉庫的詳細信息,一鍵復制詳細信息更加方便

  • 可以將通過dump方式備份的文件再導入倉庫 實現SVN倉庫的遷移

  • 倉庫導入過程中如果拋出了錯誤信息會被收集被顯示 方便管理人員更好的定位問題

  • 可以很方便的修改倉庫名稱,這會自動同步配置文件,所以無需擔心

  • 刪除倉庫也會有風險提示

  • SVN用戶管理支持啟用、禁用、添加備注信息,管理用戶更加方便

  • SVN分組支持顯示其包含的用戶和分組數量 同時支持修改備注信息

  • 可以對分組進行用戶成員編輯,系統會貼心的提示用戶是否處于禁用狀態

  • 用戶管理支持組嵌套,同時如果你不小心搞了一個循環嵌套,系統會提示你

  • 分組名支持修改,系統會幫你修改配置文件的一切,無需擔心

  • 系統提供了日志功能,可以對系統的運轉情況做個記錄啦

  • 管理人員可以修改自己的賬號和密碼,更加安全

  • 系統提供了svnserve主機和端口綁定功能 而且開啟了svnserve的運行日志 為你多一層運維保障

  • 看看你的數據都在哪里存儲呢

  • 配置郵件通知服務吧

  • 風險操作可以來個提示

  • 看看有沒有新版本吧

  • SVN用戶個人的界面 只可看到被授權的倉庫路徑

  • SVN用戶可自己修改密碼 無需聯系管理人員了

總結

以上是生活随笔為你收集整理的SVNAdmin - 好用的开源SVN管理系统的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。