2008/11/24

[Linux] SVN 跑 http 加上 MySQL auth

這個方案只差一個 https 就可以變成我心中最麻煩的 svn 方式了。
不過麻煩的還不在這裡,最麻煩的地方,在這台機器架在 FC5 上面。
(O.S 如果是 FC 晚近的版本,至少軟體差異不會那麼大咩~)
在 auth mysql 裡面的 param 改了好幾次的樣子,每個版本都不大一樣,使用前後﹑更新的時候都要特別小心。

步驟:

1. a2enmode 把 auth_mysql ﹑ subversion 都 enable 起來。
2. mysql 跑起來。 # default db 我設到 http_auth
3. 加入 mysql auth table # 我把 UserTable 跟 GroupTable 都設在一起
drop database http_auth;
CREATE DATABASE http_auth;
USE http_auth;

CREATE TABLE `clients` (
`username` varchar(25) NOT NULL default '',
`passwd` varchar(25) NOT NULL default '',
`groups` varchar(25) NOT NULL default '',
PRIMARY KEY (`username`),
KEY `groups` (`groups`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
use http_auth;
INSERT INTO `clients` VALUES ('anton', encrypt('1234'), 'admin');

3. /etc/init.d/mysql start # 啟動 MySQL
4. vi /etc/httpd/conf.d/subversion.conf 加入:
<Location /svn>
DAV svn
SVNParentPath /home/svn
SVNListParentPath on
AuthzSVNAccessFile /home/svn/svn.authz
AuthName "SVN Repository"
AuthType Basic
AuthMySQLEnable On
AuthMySQLHost "localhost"
AuthMySQLPort 3306
AuthMySQLUser "id"
AuthMySQLPassword "password"
AuthMySQLDB "http_auth"
AuthMySQLUserTable "clients"
AuthMySQLGroupTable "clients"
AuthMySQLNameField "username"
AuthMySQLPasswordField "passwd"
AuthMySQLPwEncryption crypt
AuthMySQLAuthoritative On
require valid-user
</Location>

5. /etc/init.d/httpd restart # apache 再啟動
6. 寫個 chpasswd 的 php script。

這樣 svn 就可以順利使用 http 連線了。 (而且改密碼就直接在 mysql 裡面改了)
* 對了,要小心 mysql encrypt function 是 "encrypt" 不是 "crypt" 喔。

--
附上我的 Ubuntu 8.10/apache2.2.8-1ubuntu0 的 config:
# 這個版本的 mysql auth 是寫在 auth_mysql.conf 裡面,用 Auth_MySQL_info hostname mysql_id mysql_pass 來連的。
# 感覺比較簡潔有力。
# 至於 AuthUserFile 為什麼兩邊設不一樣... 這是我實際運作後的結果,還不知道為什麼上面不能設到 null 去。
<Location /svn>
DAV svn
SVNParentPath /home/svn
SVNListParentPath on
AuthType Basic
AuthName "Subversion repository"
AuthBasicAuthoritative Off
AuthMySQL_DB "http_auth"
AuthMySQL_Password_Table "clients"
AuthMySQL_Group_Table "clients"
#setting authfile to /dev/null stop apache error log
AuthUserFile /dev/null
AuthzSVNAccessFile /home/svn/svn.authz
Require valid-user
</Location>


--
參考網頁:
* mod_auth_mysql
* http 認證使用 mysql

沒有留言:

[Windows] git-bash 底下的工具

因為工作轉到 Windows 平台上的關係,所以很多工具改到 Windows 上面運作,跟著在 TortoiseGit 底下使用 git-bash 來維護自己的專案原始碼。結果就是裝了前面提過的 auto-hotkey 使用熱鍵來提昇自己的平台操作速度; 但除了 hotkey...