SubversionにRedmineの認証を連携する » 履歴 » バージョン 1
Hidehisa Matsutani, 2015/11/27 23:41
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 | |||
54 | h3. BitNami Redmine Stack に同梱されている Apache 2.4 では API がいくつか変更されたらしいので、パッチをあてます。 |
||
55 | |||
56 | https://osdn.jp/projects/sfnet_modauthmysql/ |
||
57 | から、mod_auth_mysql-3.0.0.tar.gzをダウンロードします。 |
||
58 | |||
59 | http://sourceforge.net/p/modauthmysql/patches/13/ |
||
60 | のパッチを当てて、mod_auth_mysql.so を作り直します。 |
||
61 | この作業では gcc がインストールされている必要があります。 |
||
62 | |||
63 | <pre> |
||
64 | # tar xzvf mod_auth_mysql-3.0.0.tar.gz |
||
65 | # patch -p0 < mod_auth_mysql_3.0.0_patch_apache2.4.diff |
||
66 | # cd mod_auth_mysql-3.0.0/ |
||
67 | # /opt/redmine-3.0.3-0/use_redmine |
||
68 | # 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 |
||
69 | # apxs -i mod_auth_mysql.la |
||
70 | </pre> |
||
71 | |||
72 | h3. ユーザテーブルにsaltが追加されたが、mod_auth_mysqlがRedmineのsaltの掛け方に対応していないので、パッチをあてます |
||
73 | |||
74 | (参考) http://d.hatena.ne.jp/vmi/20111102/p1 |
||
75 | パッチは http://www.redmine.org/boards/2/topics/24386?r=25722#message-25722 からダウンロードします。 |
||
76 | |||
77 | <pre> |
||
78 | # patch -p0 < mod_auth_mysql-3.0.0-redmine.patch |
||
79 | # cd mod_auth_mysql-3.0.0/ |
||
80 | # /opt/redmine-3.0.3-0/use_redmine |
||
81 | # 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 |
||
82 | # apxs -i mod_auth_mysql.la |
||
83 | </pre> |
||
84 | |||
85 | h2. httpd-svn.confを作成します。 |
||
86 | |||
87 | * Subversion に WebDAV 経由でアクセスできるようにします |
||
88 | |||
89 | * access_handler にバグがあるらしいのでコメントアウトしています。 |
||
90 | (参考) 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 |
||
91 | |||
92 | * http://d.hatena.ne.jp/vmi/20111102/p1 |
||
93 | によりユーザテーブルにsaltが追加されたことの設定を追加しています。 |
||
94 | |||
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 | h2. Redmineを再起動します。 |
||
146 | |||
147 | <pre> |
||
148 | # /opt/redmine-3.0.3-0/ctlscript.sh restart |
||
149 | </pre> |
||
150 | |||
151 | h2. Redmineのユーザ/パスワードでSubversionのコミットができれば成功です。 |