LoginSignup
12
19

More than 5 years have passed since last update.

RedmineのアカウントでSubversionの認証を行う

Last updated at Posted at 2016-05-13

調査したものの実案件で使うことがなくなったので、ここにまとめておきます。

[2016-05-24 追記] mod_dav_svn の設定に不備がありました。元の内容ではsvnで接続した際に svn: E195019: Redirect cycle detected for URL 'http://...' というエラーとなってしまいます。

やりたいこと

  • CentOS7 に Redmine と Subversion をインストールする
  • Subversionの認証はRedmineのユーザーアカウントで行う

環境

  • CentOS Linux release 7.1.1503 (Core)
  • Redmine 3.2
  • Subversion
  • PostgreSQL

Redmineのインストール

Redmine 3.2をCentOS 7.1にインストールする手順 | Redmine.JP Blog を参考にインストールを完了しているものとします。

Redmineの使用するSMTPサーバーをGmailにする

/var/lib/redmine/config/configuration.yml
production:
  email_delivery:
    delivery_method: :smtp
    smtp_settings:
      enable_starttls_auto: true
      address: "smtp.gmail.com"
      port: 587
      domain: "smtp.gmail.com"
      authentication: :plain
      user_name: "hogehoge@gmail.com"
      password: "********"

  rmagick_font_path: /usr/share/fonts/ipa-pgothic/ipagp.ttf

Googleアカウントの ログインとセキュリティ > 接続済みのアプリとサイト安全性の低いアプリの許可 を有効にしないとメール送信できないかもしれません。

Subversionの設定

mod_dav_svn を使用すると、Apache を通して Subversion レポジトリにアクセスすることができます。

Subversion がインストール済みか確認する

おそらく、Redmineをインストールする過程で開発ツールをインストールしているので
Subversionもインストール済みだと思われます。

念のため確認しておきます。

# yum list installed | grep subversion
subversion.x86_64                  1.7.14-10.el7                       @base    
subversion-libs.x86_64             1.7.14-10.el7                       @base 

mod_dav_svn のインストールと設定

# yum install -y mod_dav_svn

設定ファイルを修正し、subversionのレポジトリを公開する設定を追加します。
とりあえず動作確認するために、認証なしでアクセスできるようにしておきます。

/etc/httpd/conf.modules.d/10-subversion.conf
LoadModule dav_svn_module     modules/mod_dav_svn.so
LoadModule authz_svn_module   modules/mod_authz_svn.so
LoadModule dontdothat_module  modules/mod_dontdothat.so

#Alias /svn /var/www/svn
<Location /svn>
DAV svn
SVNParentPath /var/www/svn/
</Location>

[2016-05-24 追記] Aliasをコメントアウト

レポジトリの作成

/var/www/svn にレポジトリを作成します。

# mkdir /var/www/svn
# cd /var/www/svn
# svnadmin create repo
# chown apache:apache repo

httpdを再起動

設定を有効にするために、httpdを再起動します。

# systemctl restart httpd

ブラウザから http://localhost/svn/repo にアクセスします。
repo - Revision 0: / という表示がされれば、httpでsubversionのレポジトリにアクセスできています。

Redmineのアカウントでsubversionの認証を行うように設定する

Apache の /svn にアクセスする際に基本認証をかけ、
その認証に使用するアカウントは Redmine のデータベースから参照するように設定します。

Apacheが Redmine.pm という Perlモジュールを使用するので、 mod_perl と Perlからデータベースを参照するための Perlモジュールが必要です。

mod_perlとPerlモジュールのインストール

# yum install -y epel-release
# yum install -y mod_perl
# yum install -y perl-DBI perl-DBD-Pg perl-Digest-SHA

Redmine.pmの配置

mod_perl から見える場所に Redmine.pm のリンクを貼ります。

# mkdir -p /usr/lib64/perl5/vendor_perl/Apache/Authn
# ln -s /var/lib/redmine/extra/svn/Redmine.pm /usr/lib64/perl5/vendor_perl/Apache/Authn/Redmine.pm

subversion.confの変更

/svn にアクセスがきた場合は基本認証を行うように、設定を変更します。

/etc/httpd/conf.modules.d/10-subversion.conf
LoadModule dav_svn_module     modules/mod_dav_svn.so
LoadModule authz_svn_module   modules/mod_authz_svn.so
LoadModule dontdothat_module  modules/mod_dontdothat.so

PerlLoadModule Apache::Authn::Redmine

#Alias /svn /var/www/svn
<Location /svn>
DAV svn
SVNParentPath /var/www/svn/
AuthType Basic
AuthName "SVN Repository"
AuthUserFile /dev/null
Require valid-user

PerlAuthenHandler Apache::Authn::Redmine::authen_handler

RedmineDSN "DBI:Pg:dbname=redmine;host=localhost"
RedmineDbUser "redmine"
RedmineDbPass "********"
</Location>

[2016-05-24 追記] Aliasをコメントアウト

設定を有効にするために、httpdを再起動します。

# systemctl restart httpd

Redmineにアカウント管理用のプロジェクトを作成する

認証時に使用されるアカウントは、Subversion のパッケージ名と一致する識別子を持つプロジェクトのメンバーです。

Redmineで識別子を repo とするプロジェクトを作成し、Subversionにアクセスするユーザーをメンバーに登録します。

ブラウザから http://localhost/svn/repo にアクセスします。
基本認証のダイアログが表示され、Redmineのアカウントで認証できることを確認します。

ssh化

mod_ssl のインストール

# yum install -y mod_ssl

サーバー証明書の作成

# cd /etc/pki/tls/certs
# sed -i 's/365/3650/g' Makefile
# make server.crt
# openssl rsa -in server.key -out server.key

make 時にパスフレーズの入力を求められるので、適切に設定します。
そのままサーバー証明書をSSLに使用すると、httpdを起動するたびにパスフレーズが求められますので、パスフレーズを解除しています。

ssl.confの修正

下記の3点を修正します。

/etc/httpd/conf.d/ssl.conf
SSLCertificateFile /etc/pki/tls/certs/server.crt     #サーバー用証明書を指定
SSLCertificateKeyFile /etc/pki/tls/certs/server.key  #サーバー用秘密鍵を指定
DocumentRoot "/var/www/html"                         #コメント解除

httpdを再起動しておきます。

# systemctl restart httpd

Firewalldの設定変更

https のみ許可するように設定を変更します。

# firewall-cmd --zone=public --add-service=https --permanent
success
# firewall-cmd --zone=public --remove-service=http --permanent
success
# firewall-cmd --reload
success
# firewall-cmd --zone=public --list-services
dhcpv6-client https ssh

Redmineの設定変更

設定画面にて、https を使用するように変更します。

スクリーンショット 2016-05-23 18.24.04.png


参考

12
19
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
19