天天看點

svn+apache部署和伺服器資料遷移1.安裝subversion2.安裝httpd3.安裝mod_dav_svn4.建立svn倉庫5.修改httpd的配置檔案6.使用者資訊配置7.服務啟停8.伺服器資料遷移9.搭建過程中遇到的一些問題

1.安裝subversion

  1. 線上安裝

    yum -y install subversion

  2. 離線安裝

    将提供的subversion目錄下的rpm包都上傳到伺服器中,若是沒有rpm包,則可以直接在有外網的機器上搭一台和部署機器一緻的centos系統,使用

    yum install --downloadonly --downloaddir=/root/subversion/ subversion

将軟體所需的依賴包下載下傳下來然後再上傳到伺服器中。

cd subversion

進入到該目錄下

rpm -ivh *.rpm --nodeps
           
  1. 安裝完成後執行

    svn --version

    指令,若是出現版本資訊則安裝成功

2.安裝httpd

  1. 線上安裝
yum -y install httpd
           
  1. 離線安裝

    與離線安裝subversion相同

若是出現以上提示,則執行以下兩個指令即可

  1. 安裝完成後使用httpd -version指令,若是出現httpd的版本資訊則安裝成功

3.安裝mod_dav_svn

  1. 線上安裝
yum -y install mod_dav_svn
           
  1. 離線安裝
  2. 安裝完成後使用

    ls /usr/lib64/httpd/modules

    指令檢視是否該目錄下有

    mod_authz_svn.so

    mod_dav_svn.so

    即可,若是有這兩個依賴包則表示安裝成功了,若是沒有則安裝失敗。

4.建立svn倉庫

找一個磁盤空間比較大的目錄,建立一個空檔案夾

然後使用

svnadmin create /opt/svnrepo/test

建立一個名為test的空倉庫,若是有需要遷移過來的備份檔案,則使用以下指令進行遷移

svnadmin load /opt/svnrepo/test/ < test.dump
           

5.修改httpd的配置檔案

httpd的配置檔案一般都放在/etc/httpd目錄下,目錄結構如下

conf:

存放apache自身服務的配置檔案

conf.d:

存放其他服務的配置檔案

conf.modules.d:

存放子產品加載的配置檔案

logs:

日志檔案

modules:

存放httpd所依賴的一些庫檔案,和上文中提到的/usr/lib64/httpd/modules中的檔案完全一緻

注意:conf.d和conf.modules.d中的所有.conf檔案都會被加載到conf/httpd.conf這個配置檔案中去,之是以分成幾個目錄主要是為了友善管理。

若是mod_dav_svn安裝成功了,則conf.modules.d目錄下一般會自動産生一個10-subversion.conf檔案,若是沒有自動生成,則自己建立一個10-suversion.conf檔案即可。

添加檔案内容如下:

LoadModule dav_svn_module     modules/mod_dav_svn.so
LoadModule authz_svn_module   modules/mod_authz_svn.so
LoadModule dontdothat_module  modules/mod_dontdothat.so
           

再在conf.d目錄下建立一個subversion.conf檔案,若是有則直接編輯即可。

加入以下内容:

<Location /svn>
     DAV svn
     SVNParentPath /opt/svnrepo
     AuthType Basic
     AuthName "Test Httpd-SVN"
     AuthUserFile /etc/svnpasswd
     AuthzSVNAccessFile /etc/svnaccess
     Require valid-user
</Location>
           

其中我标紅的文字是根據自己實際需求需要更改的

<Location /svn>中的/svn是我們通過浏覽器通路svn倉庫是需要輸的字首,可以自行更改

SVNParentPath /opt/svnrepo表示倉庫所在的父目錄是/opt/svnrepo,若是隻需要配置單個倉庫,也可以使用

SVNPath 倉庫所在目錄 
進行配置
AuthType一般不更改
AuthName可改可不改
AuthUserFile表示使用者和密碼資訊所在的檔案,後面會介紹如何生成這個檔案,可自行更改
AuthzSVNAccessFile表示使用者通路權限所在的檔案,後面會介紹如何生成這個檔案,可自行更改
Require valid-user表示通路倉庫時需要輸入使用者和密碼,若是這一項不配則前面兩項都無效,若是不設定那麼大家都可以通路你的代碼倉庫,建議設定。
           

6.使用者資訊配置

執行該指令會讓提示輸入兩次密碼,兩次密碼必須一緻。

-c表示會建立一個/etc/svnpasswd的檔案,然後會建立一個叫test的使用者,并将使用者和密碼資訊存入/etc/svnpasswd這個檔案中,注意這裡的/etc/svnpasswd必須和前一節中AuthUserFile配置項的值一緻。

若是不想輸兩次密碼也可使用

-b

參數直接将密碼在指令行中給出

當我們想修改密碼時,則不要加

-c

參數即可

注意使用者的密碼都是以密文形式存放在svnpasswd檔案中的。

配置完使用者之後還需配置使用者的通路權限,即AuthzSVNAccessFile的值表示的那個檔案,這個檔案需要使用者手動生成。

添加内容如下:

[😕]域下的使用者擁有對/opt/svnrepo/(上文你所建立的倉庫所在的目錄)目錄下的所有倉庫的讀寫權限。

[:/test]域下的使用者擁有對/opt/svnrepo/目錄下的test倉庫(上文所建立的倉庫)的讀寫權限。

可以根據需要進行配置設定,這裡的使用者必須是svnpasswd中已有的使用者。

7.服務啟停

啟動httpd:systemctl start httpd
停止httpd:systemctl stop httpd
           

啟動完httpd服務後已經可以直接用浏覽器通路了

輸入正确的使用者名和密碼(svnpasswd中的使用者和密碼)

注意:若是不輸倉庫名字,隻輸/svn則會顯示403Forbidden,這屬于正常現象。

為了友善使用者可以使用svn用戶端通路,在将svnserve服務啟動起來。

啟動svn:

svnserve -d -r /opt/svnrepo

停止svn:先使用

ps -aux | grep svnserve

找到svnserve對應的程序号

kill -9 程序号
           

将svn的服務程序殺掉即可

8.伺服器資料遷移

先在新伺服器上按照上上述7步所示步驟裝好svn和httpd

在舊伺服器上

svnadmin dump 倉庫所在位置 > 備份檔案位置/備份檔案名.dump
           

比如

svnadmin dump /opt/svnrepos/myrepo > /opt/myrepo.dump
           

通過scp或者其他方式将test.dump上傳到新的伺服器

scp

方式(在新的伺服器上執行)

scp root@舊伺服器ip位址:/opt/myrepo.dump /opt/myrepo.dump
           

在新的伺服器上執行以下指令

1.建立倉庫

svnadmin create /opt/svnrepos/myrepo
           

2.恢複檔案

svnadmin load /opt/svnrepos/myrepo < /opt/myrepo.dump
           

注意:這裡的

/opt/svnrepos

必須是你搭建

svn

時配置的

subversion.conf

中的

SVNParentPath

項一緻,否則浏覽器會通路不到

9.搭建過程中遇到的一些問題

1.權限不足

背景日志如下:

我的解決辦法:

提示權限不足,則表示httpd沒有通路這個目錄的權限

使用ps -aux | grep httpd檢視httpd服務的啟動者,可以發現httpd服務基本上都是apache這個使用者啟動的,這個使用者是在安裝httpd時自動建立的,是以需要将配置檔案和倉庫目錄的權限給apache。

chown -R apache:apache svnaccess所在目錄/svnaccess
chown -R apache:apache svnpasswd所在目錄/svnpasswd
chown -R apache:apache 倉庫所在目錄
chown -R 777 倉庫所在目錄 
           

使用者送出代碼時提示權限不足問題:

svn伺服器操作倉庫中的檔案時預設用的是svn組中的svn使用者,這個使用者是在裝svn時自動建立的,這個問題說明svn使用者權限不夠,無法操作倉庫所在目錄,使用chown -R svn:svn 倉庫所在目錄,将該目錄的操作權限給使用者svn即可。

2.路徑輸錯

剛開始裝時一直以為這裡要輸入的是倉庫名字或者倉庫父目錄+倉庫名字,後面發現這裡輸的路徑是subversion.conf中<Location /svn>配置的那個路徑。

3.Could not open the requested SVN filesystem

前台報錯:

背景httpd的日志檔案(/etc/httpd/logs/error_log)報錯:

這個錯誤是困擾我最久的,經過到網上查閱大量資料後發現應該是我的svn版本和httpd服務的版本不比對導緻的,svn的版本過高,是以會導緻

Expected FS format between ‘1’ and ‘4’;found format ‘6’這個錯誤。

因為我一開始安裝svn時不是用的rpm包安裝,而是用的從官網下載下傳的svn源碼按照教程進行的編譯安裝,我下載下傳的是1.8.9版本,而我的httpd是2.4.6版本,并且是通過rpm包安裝的,導緻版本不比對,最後我将svn卸掉用rpm包重新裝了一個svn,這個svn是centos7.9使用yum安裝時安裝的那個版本,版本号為1.7.14,我将這個版本裝上後按照上面所述的步驟又重新走了一遍并将倉庫重新用.dump檔案恢複了一遍,最後終于解決。

是以我們在linux上安裝系統時,能連外網用yum安裝盡量用yum安裝,不能連就用我前面所說過的方法在能連外網的機器上将軟體的rpm包及其依賴包下載下傳下來,盡量不要自己編譯安裝,很容易會出現各種問題。

這幾個問題是我第一次裝時所碰到的,在教程中已經将這些問題基本規避掉了,按照教程走應該是不會再出現這些問題,若是出現其他問題請自行百度查詢。

由于不友善上傳圖檔,是以該教程是沒有圖檔的,若是需要帶圖檔的版本可到我的資源中下載下傳word文檔。