為什么需要submin管理SVN?
原來在Ubuntu下,都是直接通過命令行創建SVN倉庫並分配權限,但是這有一些問題:
- 每創建一個SVN倉庫,都需要修改httpd.conf
- 每創建一個帳戶,都需要手動輸入htpasswd並指定文件
- 每修改權限,都要求登陸到服務器編輯authz
- 授權管理員權限困難,且必須提供登陸Linux的帳號;
這些不便在創建submin后都可以解決。
submin的安裝與配置
1.下載submin源碼包,我使用的是submin-2.1.2-0.tar.gz。
2.解壓,進入源碼根目錄,執行以下命令將submin安裝到系統:
$sudo python setup.py install
3.創建submin的環境,執行以下命令
$sudo submin2-admin /var/lib/submin initenv yourname@email.address
4.執行以下命令
$sudo ln -s /var/lib/submin/conf/apache-webui-cgi.conf /etc/apache2/conf.d/
$sudo ln -s /var/lib/submin/conf/apache-svn.conf /etc/apache2/conf.d/
$sudo apache restart
5.在瀏覽器中輸入http://localhost/submin/
提示以下界面,表示安裝成功,用戶名為admin,密碼會發送到前面配置環境時設置的郵箱。

登陸成功后,應該出現如下界面,菜單欄USERS下面應有admin用戶 :

如果沒有正常顯示,說明submin可能哪里還沒配置成功。運行
$sudo submin2-admin /var/lib/submin diagnostics
檢查下,最后會輸出一段總結,確認下Subversion是ok的。
(...省略部分輸出)
Summary:
* Email settings: fail
* Git: ok
* Subversion: ok #這邊一定要為ok
* Trac: disabled
如果不為ok,請根據具體的出錯現象排查,下面一節是我在配置過程中遇到的問題。
配置中遇到的問題
沒有啟用CGI的錯誤
如果出現以下錯誤,說明沒有啟用CGI:

配置方法:
修改httpd.conf(基於Apache 2.4),確保以下CGI和rewrite,alias模塊有打開:
LoadModule cgid_module modules/mod_cgid.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule alias_module modules/mod_alias.so
找到以下標簽,確保有ScriptAlias指令,沒有則添加:
<IfModule alias_module>
ScriptAlias /cgi-bin/ "/usr/cgi-bin/"
</IfModule>
找到以下標簽,按以下配置修改
<Directory "/usr/cgi-bin">
AllowOverride None
Options +ExecCGI
</Directory>
AddHandler cgi-script .cgi .pl
然后重啟下apache,自己編寫下測試程序test.sh
#!/bin/bash
echo '<h1>hello</h1>'
修改權限為755,然后放到/usr/cgi-bin/。
在瀏覽器中輸入http://localhost/cgi-bin/test.sh, 測試下如果能正常輸出,說明CGI配置OK了。
不能正常發送郵箱的處理方法
先確保本地mail命令能正常使用,然后刪除/var/lib/submin,重新配置submin,郵箱地址配置成當前用戶。比如當前登陸的用戶名為root,則為
$sudo submin2-admin /var/lib/submin initenv root@localhost
權限問題
apache是以www-data用戶運行的,可能對/opt/svn沒有寫入權限,因此將/opt/svn的所有者改為www-data。
chown www-data:www-data /opt/svn
參考
Invalid command 'Rewrite Engine'解決方法
apache運行CGI程序的配置
SVN的WEB管理接口 Submin安裝搭建
ubuntu 14.04安裝submin
