調査したものの実案件で使うことがなくなったので、ここにまとめておきます。
[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にする
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のレポジトリを公開する設定を追加します。
とりあえず動作確認するために、認証なしでアクセスできるようにしておきます。
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
にアクセスがきた場合は基本認証を行うように、設定を変更します。
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点を修正します。
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
を使用するように変更します。
参考
- Redmine 3.2をCentOS 7.1にインストールする手順 | Redmine.JP Blog
- Redmineでメール通知が飛ばない時にやること | のぶろぐ
- Install & Configure Apache Subversion (SVN) on CentOS 7
- 初めてRedmine環境を構築したらSCM連携で躓いた話
- RedmineのアカウントでSubversionリポジトリにアクセスする
- Repositories access control with apache, mod_dav_svn and mod_perl
- PerlでPostgreSQLを使用するためにDBI,DBDをインストールする・CentOS
- Webサーバー間通信内容暗号化(Apache+mod_SSL)
- CentOS 7.0 - ファイアウォール設定!