2012/10/31

[Linux] Git Repository 用 http 加上 mysql auth,再加上 gitweb

話說 svn 很好用,不過現在大家都用上 git 來處理自已的 code 了,所以我也想再更新一下之前寫的文章「SVN 跑 http 加上 MySQL auth」,這邊是用 svn 在 http 上面跑的,因為 auth 是在 mysql 上面做,所以可以很自由的 新增/刪除/修改 username,password 甚至是 group,接下來我們就是要沿用這段,讓 git 也可以在 http 上面跑,同時使用 mysql 的授權,再用 gitweb 這個套件就可以很方便的在 web 上面實現瀏覽、和 git 的 source code 管理。

ubuntu 底下,先來安裝套件:(LAMP 就不贅述了)
sudo apt-get install gitweb libapache2-mod-auth-mysql

這是我的 /etc/apache/conf.d/gitweb 設定:
Alias /git /home/git
Alias /gitweb /usr/share/gitweb


  Options FollowSymLinks +ExecCGI
  AddHandler cgi-script .cgi


    AuthBasicAuthoritative Off
    AuthMYSQL on
    AuthMySQL_Authoritative on
    AuthMySQL_DB auth
    Auth_MySQL_Host localhost
    Auth_MySQL_User admin
    Auth_MySQL_Password 12345678
    AuthMySQL_Password_Table clients
    AuthMySQL_Username_Field username
    AuthMySQL_Password_Field password
    AuthMySQL_Empty_Passwords off
    AuthUserFile /dev/null
    AuthMySQL_Encryption_Types Crypt_DES
    AuthType Basic
    AuthName "Restricted ZONE"
    Require valid-user


    AuthBasicAuthoritative Off
    AuthMYSQL on
    AuthMySQL_Authoritative on
    AuthMySQL_DB auth
    Auth_MySQL_Host localhost
    Auth_MySQL_User admin
    Auth_MySQL_Password 12345678
    AuthMySQL_Password_Table clients
    AuthMySQL_Username_Field username
    AuthMySQL_Password_Field password
    AuthMySQL_Empty_Passwords off
    AuthUserFile /dev/null
    AuthMySQL_Encryption_Types Crypt_DES
    # Standard auth stuff
    AuthType Basic
    AuthName "Restricted ZONE"
    Require valid-user


    DAV on
    AuthBasicAuthoritative Off
    AuthMYSQL on
    AuthMySQL_Authoritative on
    AuthMySQL_DB auth
    Auth_MySQL_Host localhost
    Auth_MySQL_User admin
    Auth_MySQL_Password 12345678
    AuthMySQL_Password_Table clients
    AuthMySQL_Username_Field username
    AuthMySQL_Password_Field password
    AuthMySQL_Empty_Passwords off
    AuthUserFile /dev/null
    AuthMySQL_Encryption_Types Crypt_DES
    AuthType Basic
    AuthName "Restricted ZONE"
    Require valid-user
上面都做完了,別人訪問你的 web 的時候,就會使用上 mysql auth 了。不過這邊 database 還沒建好,所以連進去應該會看到 Server Error 500 。 接著是 mysql 的 database auth 的內容:
DROP TABLE IF EXISTS `clients`;
CREATE TABLE `clients` (
  `username` varchar(25) NOT NULL DEFAULT '',
  `password` varchar(25) NOT NULL DEFAULT '',
  `groups` varchar(25) NOT NULL DEFAULT '',
  `email` varchar(256) NOT NULL DEFAULT '',
  PRIMARY KEY (`username`),
  KEY `groups` (`groups`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
INSERT INTO `clients` VALUES ('admin','djifjijigjgdi','admin','');
admin 預設我用上 test1234 ,所以你要修改的話就自已下 encrypt("abcd1234") 之類的來修改。 要換用 sha1 / mysql password 或其它加密方式,請記得跟上面 apache 的 conf 一起修改。 這邊下完我們已經可以使用 mysql 的帳密來訪問網頁了,不過還有一點點事情要做: 1. git repository 只能用 gitweb 訪問。要直接 git access 的話,需要再在 git 的 repository 那邊下:
 git update-server-info 
2. mysql 的帳密需要一個管理介面 (所以我留下了 /admin 的 location) 3. gitweb 預設的 theme 很醜 (修改 /etc/gitweb.conf 把 static 改成別的) 真的很懶,不想再打字了,所以我把整包放在這裡。 需要請自便,稍後我也會把 /admin 的部份再丟上來,那個部份現在還不完整。 --
參考資料
SVN 跑 http 加上 MySQL auth

沒有留言:

[Windows] git-bash 底下的工具

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