SubversionにRedmineの認証を連携する » History » Version 6
Hidehisa Matsutani, 11/28/2015 12:22 AM
| 1 | 1 | Hidehisa Matsutani | h1. SubversionにRedmineの認証を連携する |
|---|---|---|---|
| 2 | |||
| 3 | SubversionとRedmineの認証連携ができると、Redmineのユーザ/パスワードでSubversionにコミットできます。 |
||
| 4 | いろいろと試行錯誤した結果、無事連携できたので、ノウハウをまとめておきます。 |
||
| 5 | |||
| 6 | h2. 前提条件 |
||
| 7 | |||
| 8 | * Bitnami Redmine を利用 |
||
| 9 | * サーバはCentOS |
||
| 10 | * Bitnamiのインストールフォルダは/opt/redmine-3.0.3-0 |
||
| 11 | |||
| 12 | |||
| 13 | h2. mod_auth_mysqlのインストール |
||
| 14 | |||
| 15 | <pre> |
||
| 16 | # yum install mod_auth_mysql |
||
| 17 | </pre> |
||
| 18 | |||
| 19 | h2. Redmine に同梱されている Redmine.pm を Perl の実行パスへシンボリックリンク |
||
| 20 | |||
| 21 | <pre> |
||
| 22 | # mkdir -p /opt/redmine-3.0.3-0/perl/lib/site_perl/5.16.3/x86_64-linux-thread-multi/Apache/Authn |
||
| 23 | # ln -s /opt/redmine-3.0.3-0/apps/redmine/htdocs/extra/svn/Redmine.pm /opt/redmine-3.0.3-0/perl/lib/site_perl/5.16.3/x86_64-linux-thread-multi/Apache/Authn |
||
| 24 | </pre> |
||
| 25 | |||
| 26 | h2. デフォルトの権限設定を記述 |
||
| 27 | |||
| 28 | <pre> |
||
| 29 | # vi /opt/redmine-3.0.3-0/repos/svnauthz |
||
| 30 | </pre> |
||
| 31 | |||
| 32 | <pre> |
||
| 33 | # common settings |
||
| 34 | [/] |
||
| 35 | admin = rw |
||
| 36 | * = rw |
||
| 37 | guest = r |
||
| 38 | </pre> |
||
| 39 | |||
| 40 | h2. httpd.confに以下を追加 |
||
| 41 | |||
| 42 | <pre> |
||
| 43 | # vi /opt/redmine-3.0.3-0/apache2/conf/httpd.conf |
||
| 44 | </pre> |
||
| 45 | |||
| 46 | <pre> |
||
| 47 | Include conf/extra/httpd-svn.conf |
||
| 48 | </pre> |
||
| 49 | |||
| 50 | |||
| 51 | h2. mod_auth_mysql.so の作り直し |
||
| 52 | |||
| 53 | 3 | Hidehisa Matsutani | h3. BitNami Redmine Stack に同梱されている Apache 2.4 では API がいくつか変更されたらしいので、パッチをあてます |
| 54 | 1 | Hidehisa Matsutani | |
| 55 | https://osdn.jp/projects/sfnet_modauthmysql/ |
||
| 56 | から、mod_auth_mysql-3.0.0.tar.gzをダウンロードします。 |
||
| 57 | |||
| 58 | http://sourceforge.net/p/modauthmysql/patches/13/ |
||
| 59 | のパッチを当てて、mod_auth_mysql.so を作り直します。 |
||
| 60 | この作業では gcc がインストールされている必要があります。 |
||
| 61 | |||
| 62 | <pre> |
||
| 63 | # tar xzvf mod_auth_mysql-3.0.0.tar.gz |
||
| 64 | # patch -p0 < mod_auth_mysql_3.0.0_patch_apache2.4.diff |
||
| 65 | # cd mod_auth_mysql-3.0.0/ |
||
| 66 | # /opt/redmine-3.0.3-0/use_redmine |
||
| 67 | # apxs -c -L/opt/redmine-3.0.3-0/mysql/lib -I/opt/redmine-3.0.3-0/mysql/include -lmysqlclient -lm -lz mod_auth_mysql.c |
||
| 68 | # apxs -i mod_auth_mysql.la |
||
| 69 | </pre> |
||
| 70 | |||
| 71 | h3. ユーザテーブルにsaltが追加されたが、mod_auth_mysqlがRedmineのsaltの掛け方に対応していないので、パッチをあてます |
||
| 72 | |||
| 73 | (参考) http://d.hatena.ne.jp/vmi/20111102/p1 |
||
| 74 | パッチは http://www.redmine.org/boards/2/topics/24386?r=25722#message-25722 からダウンロードします。 |
||
| 75 | |||
| 76 | <pre> |
||
| 77 | # patch -p0 < mod_auth_mysql-3.0.0-redmine.patch |
||
| 78 | # cd mod_auth_mysql-3.0.0/ |
||
| 79 | # /opt/redmine-3.0.3-0/use_redmine |
||
| 80 | # apxs -c -L/opt/redmine-3.0.3-0/mysql/lib -I/opt/redmine-3.0.3-0/mysql/include -lmysqlclient -lm -lz mod_auth_mysql.c |
||
| 81 | # apxs -i mod_auth_mysql.la |
||
| 82 | </pre> |
||
| 83 | |||
| 84 | 2 | Hidehisa Matsutani | h2. httpd-svn.confを作成 |
| 85 | 1 | Hidehisa Matsutani | |
| 86 | * Subversion に WebDAV 経由でアクセスできるようにします |
||
| 87 | |||
| 88 | * access_handler にバグがあるらしいのでコメントアウトしています。 |
||
| 89 | (参考) http://sc1h5r.cswiki.jp/index.php?Subversion%E3%81%AEApache%E7%B5%8C%E7%94%B1%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%81%AE%E8%A8%AD%E5%AE%9A |
||
| 90 | |||
| 91 | * http://d.hatena.ne.jp/vmi/20111102/p1 |
||
| 92 | によりユーザテーブルにsaltが追加されたことの設定を追加しています。 |
||
| 93 | 6 | Hidehisa Matsutani | (これをしないと、あるユーザではコミットできるのに、別のユーザではコミットできないというような事象が発生しました。) |
| 94 | 1 | Hidehisa Matsutani | |
| 95 | * {DB_password}{port}は適宜インストール環境に合わせて読み替えてください。 |
||
| 96 | |||
| 97 | <pre> |
||
| 98 | # vi /opt/redmine-3.0.3-0/apache2/conf/extra/httpd-svn.conf |
||
| 99 | </pre> |
||
| 100 | |||
| 101 | <pre> |
||
| 102 | LoadModule perl_module modules/mod_perl.so |
||
| 103 | PerlLoadModule Apache::Authn::Redmine |
||
| 104 | |||
| 105 | <Location /svn> |
||
| 106 | DAV svn |
||
| 107 | SVNParentPath "/var/svn" |
||
| 108 | AuthType Basic |
||
| 109 | AuthName Subversion |
||
| 110 | Require valid-user |
||
| 111 | AuthUserFile /dev/null |
||
| 112 | AuthBasicAuthoritative Off |
||
| 113 | AuthMySQLAuthoritative On |
||
| 114 | # my.cnfの設定に合わせて変更 |
||
| 115 | AuthMySQLSocket /opt/redmine-3.0.3-0/mysql/tmp/mysql.sock |
||
| 116 | # Redmineのdatabase.ymlの設定に合わせて変更 |
||
| 117 | AuthMySQLHost localhost |
||
| 118 | AuthMySQLUser bitnami |
||
| 119 | AuthMySQLPassword {DB_password} |
||
| 120 | AuthMySQLDB bitnami_redmine |
||
| 121 | ### Redmineのテーブルとの紐付け |
||
| 122 | # Redmineのユーザテーブル |
||
| 123 | AuthMySQLNoPasswd Off |
||
| 124 | AuthMySQLUserTable users |
||
| 125 | AuthMySQLNameField login |
||
| 126 | AuthMySQLPasswordField hashed_password |
||
| 127 | AuthMySQLSaltField salt |
||
| 128 | AuthMySQLPwEncryption sha1-rm |
||
| 129 | # グループの設定。プロジェクト識別子をグループとして扱う |
||
| 130 | AuthMySQLGroupTable "users, members, projects" |
||
| 131 | AuthMySQLGroupCondition "users.id = members.user_id and projects.id = members.project_id" |
||
| 132 | AuthMySQLGroupField "projects.identifier" |
||
| 133 | |||
| 134 | AuthzSVNAccessFile /opt/redmine-3.0.3-0/repos/svnauthz |
||
| 135 | #PerlAccessHandler Apache::Authn::Redmine::access_handler |
||
| 136 | PerlAuthenHandler Apache::Authn::Redmine::authen_handler |
||
| 137 | |||
| 138 | RedmineDSN "DBI:mysql:database=bitnami_redmine;host=localhost:{port};mysql_socket=/opt/redmine-3.0.3-0/mysql/tmp/mysql.sock" |
||
| 139 | RedmineDbUser "bitnami" |
||
| 140 | RedmineDbPass "{DB_password}" |
||
| 141 | </Location> |
||
| 142 | |||
| 143 | </pre> |
||
| 144 | |||
| 145 | 5 | Hidehisa Matsutani | h2. Redmineを再起動 |
| 146 | 1 | Hidehisa Matsutani | |
| 147 | <pre> |
||
| 148 | # /opt/redmine-3.0.3-0/ctlscript.sh restart |
||
| 149 | </pre> |
||
| 150 | |||
| 151 | 4 | Hidehisa Matsutani | h2. Redmineのユーザ/パスワードでSubversionのコミットができれば成功 |