Ubuntu 搭建Subversion+Apache+WebSvn系列 – 中階
基礎篇裡也說到,源碼服務器放在公網上不加認證是非常不安全的,放在自己的局域網中就不用配置這個,免得使用起來麻煩。
這一系列都是一環扣一環,不要掉隊。
按順序說,先說關於/etc/apache2/mods-enabled/dav_svn.conf配置
<Location /svn/NFS> DAV svn SVNPath /var/lib/svn/NFS AuthType Basic AuthName "Subversion" AuthUserFile /etc/apache2/dav_svn.passwd <LimitExcept GET PROPFIND OPTIONS REPORT> Require valid-user </LimitExcept> </Location>
按照基礎篇配置,使用瀏覽器打開時,並沒有提示輸入用戶名和密碼。
儘管都是些練習源碼或者是示例,但是不經過驗證就能看到我的東西,實在讓人不爽。
經過無數次嘗試,我找到了解決方法。
就是把下面這兩行註釋掉,然後就可以了。
<LimitExcept GET PROPFIND OPTIONS REPORT>
</LimitExcept>
既然可以有用戶這種觀念,那會不會有想SVN自帶的用戶權限控制,也就是說某些用戶只能看某些目錄,某些用戶擁有完全權限?
恩,谷歌搜多了下,找到大概幾篇貌似參考價值的文章,但全照着來做卻不符合我的需求,開始自定義……同樣,這篇文章也是給出參考意見。
多看看別人是怎麼做的,自己才從中那有用的東西加以利用。
這裡我用SVN項目目錄下的conf/authz作為保存用戶權限保存位置,即使不用apche2連接,用svn連接一樣受這個文件配置控制。
在/etc/apache2/mods-enabled/dav_svn.conf裡增加一句AuthzSVNAccessFile /var/lib/svn/NFS/conf/authz
結果如下
<Location /svn/NFS> DAV svn SVNPath /var/lib/svn/NFS AuthType Basic AuthName "Subversion" AuthUserFile /etc/apache2/dav_svn.passwd AuthzSVNAccessFile /var/lib/svn/NFS/conf/authz Require valid-user </Location>
打開/var/lib/svn/NFS/conf/authz文件,編輯下
把之前添加的用戶名添加到這裡。
[groups] my=admin,boss pro=guest [/] @my = rw @pro = r * =
“groups” – 方便後面配置讀寫權限不用打那麼多用戶名
my=admin,boss
組名=用戶名1,用戶名2
[/] – 對項目的根目錄進行配置權限,如果配置二級目錄就改成[/projectname]@my=rw
@my – 組名
rw – 分配讀寫權限,r-讀,w-寫
* =
*除了上面已經配置權限的人外的所有人,後面不分配讀寫權限就等於不讓訪問了。
搞定後,需要重啟apache2
service apache2 restart
重啟apache2是由於編輯過/etc/apache2/mods-enabled/dav_svn.conf
如果僅僅是改動了用戶權限,那就不用重啟apache2。
再次在瀏覽器中打開,就會提示輸入賬戶密碼。(這裡的提示信息可能跟上面的不一樣,就不要糾結這些細節)
用沒有配置讀取權限的賬戶登錄,就會顯示一片空白
用TortoiseSVN的版本庫瀏覽器打開的時候也會提示輸入(基礎篇的時候已經實現這個)
現在的配置是只針對同一個項目,示例中的NFS,但是想新建一個完全獨立的項目,權限什麼的跟現有項目完全沒有關係。
照劃葫蘆。
#創建項目文件夾 mkdir /var/lib/svn/files #創建版本庫 svnadmin create /var/lib/svn/files #修改所屬用戶組 chown -R www-data:www-data /var/lib/svn/files
把本文第二段配置內容放入/etc/apache2/mods-enabled/dav_svn.conf中
不要放到另外一個Location中,不然不起作用。
<Location /svn/NFS> DAV svn SVNPath /var/lib/svn/NFS AuthType Basic AuthName "Subversion" AuthUserFile /etc/apache2/dav_svn.passwd AuthzSVNAccessFile /var/lib/svn/NFS/conf/authz Require valid-user </Location> <Location /svn/files> DAV svn SVNPath /var/lib/svn/files AuthType Basic AuthName "Subversion" AuthUserFile /etc/apache2/dav_svn.passwd AuthzSVNAccessFile /var/lib/svn/files/conf/authz Require valid-user </Location>
這裡偷懶,還是用之前配置的賬戶和密碼。創建賬號密碼,請看基礎篇。
最後去配置files/conf/authz,方法都是一樣的,如果到這裡還問怎麼配,那就是你沒有認真看博文的結果。
弄好賬號密碼和權限,就搞定啦。websvn那邊不用管,他會自動顯示的。
目前看上去一切運行正常,不錯不錯。
維護項目永遠比創立項目難N倍,守業比創業難……
按照上面dav_svn.conf的方式配置,如果項目多起來,整個文件看起來很亂,不好看且不好管理。
所以我們把不同項目的配置都放在對應項目目錄下,這樣,想修改哪個項目的配置就到哪個項目下修改對應的配置文件。
開始
apache2配置文件均支持引用其他外部文件,關鍵字:include
.htaccess文件就是存放<location>的配置信息。
來個容易看懂的圖
現在,你就有兩個完全獨立的項目了,各自都有自己一套密碼和權限。
改動過apache2的配置文件都需重啟apache2