Aliyun服務器 + 寶塔 SVN服務部署筆記Programming Notes, DevNotes / By LoneliNerd / 2025 年 7 月 22 日 2025 年 7 月 22 日 0.參考資料宝塔安装 SVN 搭建svn版本库 https://blog.csdn.net/qq_36672681/article/details/107466057 1. 服務器安裝Svn服務打開寶塔終端,安裝svn //安裝命令 yum -y install subversion 2. 在指定目錄創建庫如在 /www/svn/myproj下 svnadmin create /www/svn/myproj 3. 進入庫,配置相關權限/用戶配置進入創建完的SVN庫目標下,會看到以下目錄 進入conf,需要配置的文件依次為passwd、authz、svnserve.conf passwd 用戶配置進入創建完的SVN庫目標下,會看到以下目錄 如圖,在[users]的兩個範例下直接新增行格式為:用戶名 = 密碼,如這裡的YJSP = 114514 authz 用戶權限配置 如圖,這裡可以配置用戶的讀寫權限,直接在文件最下方新增行 [/] # 用戶名 = 權限(r = read、w = write) YJSP = rw *= 為匿名帳號為限制無權限的意思 svnserve.conf 庫配置 這裡主要是來配置這個庫到底應用哪個用戶信息/用戶權限的配置文件,以及這個庫的所屬空間如圖需要把以上幾行取消注釋並修改:anon-access = read 匿名用戶可讀auth-access = write 授權用戶可寫password-db = passwd 庫的用戶配置authz-db = authz 庫的用戶權限配置realm = 庫的路徑,這裡是/www/svn/myproj 4. 配置端口svn默認的端口為3690,但是考慮到安全,一般會自定義一個新的端口除了在寶塔裡開放端口,還需要在阿里雲上配置對應的ip規則寶塔:安全->系統防火牆->添加端口規則協議:TCP端口:默認3690,可自定義來源:默認所有IP(任何電腦都可訪問,可指定白名單,下面再說)策略:放行方向:入站 阿里雲或者其他雲服務器控制台:相關的防火牆配置,這裡以阿里雲的輕量服務器為例,基本與上面寶塔的配置保持一致服務器->防火牆->添加防火牆規則應用類型:自定義協議:TCP端口範圍:默認3690,可自定義來源IP:0.0.0.0/0(代表默認所有IP都可訪問,同樣可指定白名單) 配置ip白名單在需要白名單的電腦上,查詢本機的ip地址,這裡以ip.cn為例https://ip.cn/ 分別在上面的寶塔配置和阿里雲配置中,給svn開放的端口規則->來源ip中配置:寶塔 阿里雲 ip地址/32 為指定單一ipip地址/24 為指定ip域一般用32即可 5. 進入SVN全局配置,配置SVN項目根路徑打開svn全局配置路徑:/etc/sysconfig/svnserve把OPTIONS修改為 #OPTIONS="--daemon --root <SVN所有庫的根目錄> --listen-port=<開放的端口>",如下: OPTIONS="--daemon --root /www/svn --listen-port=3690" 6. 啟動SVN服務基本工作已經準備好,下一步就是啟動SVN服務 //關停服務 systemctl stop svnserve svn服務器啟動後,就會一直運行,直到在終端使用終止服務命令關停 //在終端使用以下命令啟動SVN服務 systemctl start svnserve 啟動後可用以下命令查詢服務狀態正常啟動的話會明顯顯示 Active: active(running) systemctl status svnserve 7. 測試創建本地文件夾用於checkout repo 填寫checkout 倉庫的svn路徑,格式為: svn://服務器的公網ip:端口/repo名 然後可能會需要你輸入用戶名和密碼,就是之前在passwd配置裡面配置的,按照輸入即可最後就能正常檢出成功了! (坑)svnserve: E000098: Can’t bind server socket: Address already in use表示開放的端口已被其他進程占用,用以下命令查詢 #查詢問題端口,如3690 netstat -tulnp | grep :3690 執行後輸出以下相似信息: tcp 0 0 0.0.0.0:3690 0.0.0.0:* LISTEN 1234/svnserve 1234為占用的進程pid 終止進程 tcp 0 0 0.0.0.0:3690 0.0.0.0:* LISTEN 1234/svnserve 再重新檢查端口是否已被釋放 netstat -tulnp | grep :3690 沒有輸出結果則代表端口已被釋放,重新嘗試啟動服務即可