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。

再次在瀏覽器中打開,就會提示輸入賬戶密碼。(這裡的提示信息可能跟上面的不一樣,就不要糾結這些細節

图像 041

用沒有配置讀取權限的賬戶登錄,就會顯示一片空白

图像 040

用TortoiseSVN的版本庫瀏覽器打開的時候也會提示輸入(基礎篇的時候已經實現這個

图像 001

現在的配置是只針對同一個項目,示例中的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那邊不用管,他會自動顯示的。

图像 002

目前看上去一切運行正常,不錯不錯。

維護項目永遠比創立項目難N倍,守業比創業難……

按照上面dav_svn.conf的方式配置,如果項目多起來,整個文件看起來很亂,不好看且不好管理。

所以我們把不同項目的配置都放在對應項目目錄下,這樣,想修改哪個項目的配置就到哪個項目下修改對應的配置文件。

開始

apache2配置文件均支持引用其他外部文件,關鍵字:include

图像 003

.htaccess文件就是存放<location>的配置信息。

來個容易看懂的圖

图像 004

現在,你就有兩個完全獨立的項目了,各自都有自己一套密碼和權限。

改動過apache2的配置文件都需重啟apache2

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注