CentOS搭建svn服務器支持https訪問


CentOS 6.3 64位機器上配置SVN服務器,並設置只允許HTTPS連接,可以配置多個repos源,每個源都擁有自己的組和成員,用於權限控制。
  1. 安裝相關軟件

    Apache

    yum install httpd httpd-devel

    Subversion

    yum install mod_dav_svn subversion

    SSL

    yum  install mod_ssl  openssl

    創建版本庫

    #mkdir /var/svn  
    #cd /var/svn  
    #svnadmin create myapp  
    #chown -R apache.apache myapp  
    #chcon -R -t httpd_sys_content_t myapp          //selinux相關 

    相似的,我添加了另一個版本庫myapp2

    修改配置文件/etc/httpd/conf.d/subversion.conf,添加如下內容

    <Location /repos>  
      DAV svn  
      SVNParentPath /var/svn  
      AuthType Basic  
      AuthName "Authorization Realm"  
      AuthUserFile /var/svn/passwd                  //用戶文件  
      AuthzSVNAccessFile /var/svn/authz              //用戶權限控制文件  
      Require valid-user  
    </Location> 

    此處需要注意添加/var/svn/passwd文件的相關權限,否則可能出想權限錯誤。相關日志文件為/var/log/httpd/error_log 遇到問題要查看錯誤日志。

    用戶文件passwd的內容只能通過htpasswd命令添加

    如添加用戶leon

    #htpasswd -c /var/svn/passwd leon                //-c 表示新建一個文件,以后就不需要加了 

    相似的我添加了其他用戶hailong,gao,wang

    用戶權限控制文件authz

    [groups]  
    myapp = leon,hailong                              //myapp項目有兩個成員leon和hailong  
    myapp2 = wang, gao  
      
    [myapp:/]  
    @myapp = rw                                      //myapp組擁有myapp項目的讀寫權限,其他人無權限  
      
    [myapp2:/]  
    @myapp2 = rw 

    這樣就做到權限控制。

    可能遇到的問題
    1.權限問題
    通過查看錯誤日志,添加相關權限。重點注意SeLinux引起的權限問題,可以暫時關閉SeLinux,方法:setenforce 0,SeLinux的管理方法參考CSDN網站http://blog.csdn.net/haiong0707/article/details/813763
  2. 防火牆問題
    關閉防火牆或者打開相關端口
  3. 通過上面的配置,SVN服務器通過HTTP訪問基本就沒有問題了,接着配置HTTPS訪問

    1. #cd /etc/pki/tls/private

    2. #openssl genrsa -out my.key 1024

    3. #openssl req -new -key my.key -out my.csr

    4. #cd /etc/pki/tls/certs

    5. #openssl x509 -req -days 365 -in /etc/pki/tls/private/my.csr -signkey /etc/pki/tls/private/my.key -out my.crt


    以上步驟必須在相關文件夾下產生所需的文件,保證輸入命令正確,保證產生文件所在文件夾正確,否則后面將可能發生錯誤

     

    修改/etc/httpd/conf.d/ssl.conf文件

    1. SSLCertificateFile /etc/pki/tls/certs/my.crt

    2. SSLCertificateKeyFile /etc/pki/tls/private/my.key


    修改/etc/httpd/conf/httpd.conf文件

    1. <Directory />

    2. Options FollowSymLinks

    3. AllowOverride None

    4. SSLRequireSSL //添加此行

    5. </Directory>



    重啟httpd

    1. #service httpd restart


    如此SVN就只可以通過HTTPS訪問了,並且能夠對多個項目分配人員和權限。

     

    可能遇到的問題

    1.SVN開啟HTTPS加密后,所有的WEB訪問都變成HTTPS,例如,localhost將無法訪問,需要訪問https://localhost,這個應該是可以在https.conf文件中配置區分的,暫時不做處理,故建議此服務器不再當作WEB服務器。

     

    ----------------------------------------------------------------------------------------------------------------

    localhost需要https的解決方法

    不在httpd.conf添加 SSLRequireSSL ,添加到subversion.conf

    1. <Location /repos>

    2. DAV svn

    3. SVNParentPath /var/svn

    4. AuthType Basic

    5. AuthName "Authorization Realm"

    6. AuthUserFile /var/svn/passwd //用戶文件

    7. AuthzSVNAccessFile /var/svn/authz //用戶權限控制文件

    8. Require valid-user

    9. SSLRequireSSL //需要https加密訪問

    10. </Location>

    這樣,只有/repos目錄需要https加密訪問,不影響httpd做web服務器

    轉載自:http://blog.csdn.net/haiong0707/article/details/8259235


    Linux 下svn恢復到某一版本經常由於坑爹的需求,功能要切回到之前的某一個版本。有兩種方法可以實現:方法1: 用svn merge1) 先 svn up,保證更新到最新的版本,如20;2) 然后用 svn log ,查看歷史修改,找出要恢復的版本,如10 。如果想要更詳細的了解情況,可以使用svndiff -r 10:20 [文件或目錄];3) 回滾到版本號10:svnmerge -r 20:10 [文件或目錄],注意版本號之間的順序,這個叫反向合並;4) 查看當前工作版本中的文件,如test.cpp和版本號10中文件的差別:svn diff -r 10 test.cpp, 有差別則手動改之;5) 若無差別,則提交:svn ci -m“back to r 10,xxxxx” [文件或目錄]。這時svn庫中會生成新的版本,如21。方法2: 用svn up前2步如方法1,然后直接 svn up -r 10。當前的工作版本就是版本10了。但是注意,這時svn庫中會並不會生成新的版本,下次在本地svn up之后,還是會回到之前的版本。






免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM