Redmineの導入

 Redmineについては、下記3種の導入方法を検討した。

  1. 公式サイトの本体コード一式 + RHELのRPM + gemコマンドによるライブラリ導入
    • 各々のライブラリ依存性管理が非常に大変。特にnokogiriとopensslが鬼門。
  2. bitnami-redmineを用いた一括導入
    • Git, Redmine, PhpMyAdminなども導入されるが、今回は使わない
    • Redmine公式ではない
  3. 公式dockerイメージを用いた導入

 今回は「公式dockerイメージを用いた導入」を採用する。

導入サーバの前提条件

  1. OSはRHEL7(or CentOS7)かそれ以降の版とする。
  2. 事前導入するソフトウェアパッケージは最小構成。
  3. インターネットに接続可能 ※必要ならproxy設定
     /etc/dnf/dnf.conf
    proxy=http://proxy.jomura.net:8080/     #as your own
     ~/.bashrc
    export HTTP_PROXY=http://proxy.jomura.net:8080/     #as your own
    export HTTPS_PROXY=${HTTP_PROXY}
  4. パッケージの更新が事前に実行されている
    dnf clean all && dnf -y update && reboot
  5. Redmine Webサイト用のFully Qualified Domain Name(FQDN)が用意されている。

Redmine用 configuration.ymlの作成

Redmine初期設定用SQLの作成

docker-compose.ymlファイルの作成

docker用環境変数ファイルの作成

playbookの作成

playbookの実行

補足事項

  1. mysqlコンテナを削除すると、DBデータはどうなる?
     ホストの /var/lib/docker/volumes/mysql/_data/ にMySQLのDBデータは永続化されている。mysqlコンテナを削除しても、これらは削除されず、コンテナを再導入すると再利用される。
  2. mysql_native_passwordの指定は必要?
     defaultのsha2_passwordにrailsが対応していない場合を考慮している。
  3. MySQLやmemcashedは、コンテナではなく、ホスト側にrpm導入したらどうか。
     dockerコンテナからホストのプロセスに通信するには、便利な宛先指定方法が無く、ホストのIPアドレスを指定することになり、ポータビリティに欠ける。
     同一のcompose.ymlファイルに記述されたコンテナは、同一ネットワークに属しコンテナ名で指定できる。また、RedmineのWebサイトでも、公式dockerイメージはコンテナ化DBを利用するようガイドされている。
  4. RedmineのURLに、コンテキストパス(/redmine)を設定できる?
     RedmineのWebサイトに紹介されている。dockerコンテナ内のpassengerを再設定することで、技術的には可能だが、難易度が高い。また、コンテナの更新を考慮し、できるだけコンテナの編集は避けたい。
     今回は、「基本的に全てのURL要求をredmineコンテナにproxyしつつ、/gitだけ除外する」という方式としている。
  5. MySQLへの設定追加
     ホストの/srv/mysql/conf.d/redmine.cnf に永続化されているMySQLの設定ファイルに追記し、mysqlコンテナを再起動すると反映される。
     ファイルに記述する前に、"set global …"コマンドを用いて稼働中に動的設定し、要否の判断をするとよい。
     また、slow queryの常時出力設定は不要と考えている。必要な時に、動的に設定(set global slow_query=1)すればよい。
    set global slow_query_log_file = 'slow.log';
    set global long_query_time = 5;
    set global slow_query_log = ON;
  6. Redmine導入用のplaybookに、git用のタスクがあるんだけど
     gitリポジトリ用のSELinux設定は、Redmine用のdocker-compose upを実行する前に実施する必要があるため、仕方なく。
  7. ログの循環
     Apache HTTP Serverのaccess_log, error_logは、logrotatedで循環される(defaultのまま)。
     Redmineのproduction.logは、additional_environment.rbで循環設定している(playbookに記載)。

Pluginの導入

playbookの作成

playbookの実行

Gitの導入

 GitLabは「Redmineとの連携は結構面倒」なのと「リソース(主にメモリ)を大量に消費し、しばしば動作不安定を招くほど」との評判があることから、導入を断念。CGI"git-http-backend"とRedmine.pmを用いた、従来どおりのGitリポジトリサービスを選択。ついでに、GitWebも導入。

Apache用設定ファイルの作成

playbookの作成

playbookの実行

Subversionの導入

 Git嫌な人のために、Subversionも入れちゃう。

Apache用設定ファイルの作成

playbookの作成

playbookの実行

管理作業

Gitリポジトリの新規作成


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS