การผสมการโค่นล้ม“ SVNParentPath” และการกำหนดค่าต่อที่เก็บ?


9

รับการกำหนดค่า Subversion / Apache ทั่วไปโดยใช้ SVNParentPath โดยมีที่เก็บซึ่งโฮสต์ภายใต้/svn/ดังนี้:

<Location /svn>
    DAV svn

    SVNParentPath /srv/source/svn/repos
    SVNReposName "Subversion Repository"

    AuthzSVNAccessFile /srv/source/svn/authz
    Satisfy Any

    AuthType                Basic
    AuthBasicProvider       file
    AuthName "Subversion Repository"
    AuthUserFile /srv/source/svn/htpasswd

    Require valid-user
</Location>

มีวิธีการแทนที่การกำหนดค่านี้สำหรับที่เก็บข้อมูลเฉพาะโดยไม่ต้องโฮสต์ที่เส้นทางอื่นหรือไม่? นั่นคือมีวิธีใดบ้างที่ฉันสามารถเพิ่มLocationบล็อกเช่นนี้ ...

<Location /svn/my_special_repo>
    SVNPath /srv/source/svn/repos/my_special_repo
    AuthzSVNAccessFile /srv/source/svn/repos/my_special_repo/conf/authz
</Location>

... และให้แทนที่การตั้งค่าที่ให้ไว้ใน Locationบล็อก/svnใช่หรือไม่ ความพยายามของฉันในการดำเนินการดังกล่าวด้วยการกำหนดค่าด้านบนได้พบกับข้อผิดพลาดแปลก ๆ และไม่ช่วยเหลือในบันทึกข้อผิดพลาด Apache เช่น:

[Wed Feb 02 11:28:35 2011] [error] [client 10.10.209.120]
(20014)Internal error: Can't open file '/srv/source/svn/repos/svn/format':
No such file or directory

ทั้งหมดนี้ดูเหมือนจะเป็นวิธีที่ mod_dav_svn บอกฉันว่าฉันไม่สามารถทำสิ่งที่ฉันพยายามจะทำ ฉันเปิดรับโซลูชั่นหรือทางเลือก!

แก้ไข : ฉันเห็นได้ว่าคำถามนี้สร้างความตื่นเต้นอย่างมากในหมู่ผู้อ่าน สำหรับบันทึกสิ่งที่ฉันอาจจะทำคือการสร้างการกำหนดค่าต่อพื้นที่เก็บข้อมูลสำหรับที่เก็บข้อมูลที่มีอยู่ทั้งหมดของเราแล้วทิ้งการSVNParentPathตั้งค่าพื้นฐาน การกำหนดค่า Apache ต่อรายการมีน้อยมากโดยเฉพาะอย่างยิ่งการใช้บางอย่างเช่นmod_macro ; ส่วนที่ยากจะแยกไฟล์ authz ทั่วโลก หากคุณเคยทำสิ่งนี้มาก่อน


ฉันมีปัญหาเดียวกันและแก้ไขได้โดยใช้ mod_macro ขอบคุณ !!! (ดูเหมือนว่าจะเป็นข้อผิดพลาดเก่าทั้งใน Apache หรือการโค่นล้ม)
Achimnol

คำตอบ:


4

ฉันเกลียดที่จะเห็นคำถามของฉันอยู่ในรายการคำถามที่ยังไม่ได้ตอบดังนั้นนี่คือสิ่งที่เราทำ:

  • ในการกำหนดค่าเซิร์ฟเวอร์หลักของเราเรามี:

      <Location /svn/>
            SVNParentPath /srv/source/svn/repos
      </Location>
    
  • เรานำสิ่งต่อไปนี้มาใช้mod_macroเพื่อทำซ้ำลักษณะการทำงานนี้สำหรับที่เก็บใหม่:

    <Macro LegacySubversionRepo $name>
        # Override SVNParentPath block in main vhost config.
        RewriteRule ^/svn/$name /repo/$name [PT]
    
        <Location /repo/$name>
                Order                   deny,allow
                Allow                   from all
    
                Use LdapAuth \
                        "$name svn repository" \
                        /srv/source/svn/htpasswd
    
                DAV svn
                SVNPath /srv/source/svn/repos/$name
                AuthzSVNAccessFile /srv/source/svn/authz
                SVNAutoversioning On
                Satisfy Any
        </Location>
    </Macro>
    

    RewriteRuleช่วยให้การกำหนดค่าที่เก็บแทนที่การ<Location /svn/>ในการตั้งค่าหลักที่อาจจะตรงกับคำขอ

เมื่อใช้สิ่งนี้จะทำให้การรับรองความถูกต้องและการกำหนดค่าการอนุญาตต่อพื้นที่เก็บข้อมูลง่ายขึ้นแทนที่จะhtpasswdใช้ไฟล์โกลบอลที่ใช้ที่นี่


mod_macro rocks
vinnyjames
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.