Redmineのインストール

スポンサーリンク

概要

下記の環境での Redmine のインストール例です。

  • CentOS-7.6.1810
  • Apache は既にインストールし、基本設定済み

なお、手順は基本的には下記を参考にして必要なものだけを実施した形ですので、詳細は下記を参考にしてください。
 http://blog.redmine.jp/articles/3_4/install/centos/

インストール手順

1. selinux を無効にする

% getenforce
Disabled

2. パッケージのインストール

PostgreSQL

# sudo yum -y install postgresql-server postgresql-devel

開発ライブラリ関連

# sudo yum -y install gcc-c++ httpd-devel apr-util-devel apr-devel openssl-devel readline-devel zlib-devel curl-devel libyaml-devel libffi-devel

ImageMagick と日本語フォント

# sudo yum -y install ImageMagick ImageMagick-devel ipa-pgothic-fonts

Subversion のインストール Redmine は Subversion でソースコードが管理されているので、ダウンロードするために Subversion をインストールします。 ※ tarball からでもインストールできるので、その場合には不要

# sudo yum -y install subversion

3. Ruby のインストール

Ruby のサイトから最新版をダウンロードします。
https://www.ruby-lang.org/ja/downloads/

以降、Ruby-2.6.5 の例です。

% curl -O https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.5.tar.gz

ダウンロードしたアーカイブを展開します。

% tar xvfz ruby-2.6.5.tar.gz
% cd ruby-2.6.5

あとはお決まりの手順ですが、–disable-install-doc を指定すると Ruby のドキュメントのインストールが除外されます。

% ./configure --disable-install-doc
% make
% sudo make install

参考サイトではこの後に bundler をインストールする手順になっていますが、、、

# gem list |grep bundler

上記で、bundler (default: 1.17.2) のような結果が返ってきた場合にはインストールしなくて良いです。
というか、むしろインストールしてしまうと、新しすぎるものが入ってしまうらしく、逆にバージョンの問題で動作しません。
bundler が入っていない場合には下記のようにインストールを行います。

bundler をインストールします。
参考サイトでは --no-rdoc --no-ri を指定していますが、最近のバージョンでは -N となった模様。
ちなみに、ドキュメントをインストールしないだけなので、指定しなくても問題ないです。

# sudo gem install bundler -N

4. PostgreSQL 設定

まず、DB クラスタを作成します。

# postgresql-setup initdb

次に、生成された /var/lib/pgsql/data/pg_hba.conf に下記を追加します。

host    redmine         redmine         127.0.0.1/32            md5
host    redmine         redmine         ::1/128                 md5

PostgreSQL を起動します。

# systemctl start postgresql.service

ついでに自動起動も設定しておきます。

# systemctl enable postgresql.service

Redmine 用のユーザーを作成します。

% sudo -u postgres createuser -P redmine

Redmine 用の DB を作成します。

% cd /var/lib/pgsql
% sudo -u postgres createdb -E UTF-8 -l ja_JP.UTF-8 -O redmine -T template0 redmine

5. Redmine のインストール

Subversion を使って、3.4 の安定版をインストールします。
※ /project/redmine は任意のディレクトリです。

% svn co https://svn.redmine.org/redmine/branches/3.4-stable /project/redmine

config/database.yml を作成して、DB 接続設定をします。 xxxxxxxx は実際のパスワードです。

production:
  adapter: postgresql
  database: redmine
  host: localhost
  username: redmine
  password: xxxxxxxx
  encoding: utf8

config/configuration.yml を作成します。
xxx.com は実際に Redmine を使用するドメイン名になります。

production:
  email_delivery:
    delivery_method: :smtp
    smtp_settings:
      address: "localhost"
      port: 25
      domain: "xxx.com"

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

Redmine が使用する gem パッケージをインストールします。

% bundle install --without development test --path vendor/bundle

注) 下記のエラーが出て rmagick のインストールに失敗することがあります。 この場合は、 gem install rmagickが失敗する を参照。

Installing rmagick 2.16.0 with native extensions
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

セッション改ざん防止用秘密鍵の作成

% bundle exec rake generate_secret_token

テーブル作成、デフォルトデータ登録

% RAILS_ENV=production bundle exec rake db:migrate
% RAILS_ENV=production REDMINE_LANG=ja bundle exec rake redmine:load_default_data

6. Passenger のインストール

gem を使ってインストールします。
自分の場合は、なぜか最新版をインストールしたら動作しなかったので下記のようにバージョン指定してインストールしました。

# gem install passenger -v 5.1.12 -N

PassengerのApache用モジュールのインストール 下記コマンドを実行してApache用のモジュールをインストールします。

# passenger-install-apache2-module --auto --languages ruby

Apache に設定すべき内容を確認します。

# passenger-install-apache2-module --snippet
LoadModule passenger_module /usr/local/lib/ruby/gems/2.6.0/gems/passenger-5.1.12/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
  PassengerRoot /usr/local/lib/ruby/gems/2.6.0/gems/passenger-5.1.12
  PassengerDefaultRuby /usr/local/bin/ruby
</IfModule>

7. Apache の設定

以下のような内容で /etc/httpd/conf.d/redmine.conf を作成します。VirtualHost の内容等々は適宜環境次第で変更してください。
/project/redmine/public は環境にあわせて設定してください。
また、サブディレクトリで動かす方法は、大元のサイトに情報があります。

<VirtualHost *:80>
    ServerName redmine.xxx.xxx
    DocumentRoot /project/redmine/public

    <Directory "/project/redmine/public">
        Require all granted
    </Directory>
</VirtualHost>

# この部分に passenger-install-apache2-module --snippet の実行結果を貼り付ける
LoadModule passenger_module /usr/local/lib/ruby/gems/2.6.0/gems/passenger-5.1.12/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
  PassengerRoot /usr/local/lib/ruby/gems/2.6.0/gems/passenger-5.1.12
  PassengerDefaultRuby /usr/local/bin/ruby
</IfModule>
#

PassengerLogFile /var/log/httpd/passenger_error_log

PassengerMaxPoolSize 20
PassengerMaxInstancesPerApp 4
PassengerPoolIdleTime 864000
PassengerStatThrottleRate 10

Header always unset "X-Powered-By"
Header always unset "X-Runtime"

※ PassengerLogFile の設定は参考サイトでは触れられていませんでしたが後述します。

Redmine のディレクトリ配下を apache ユーザーで変更可能にします。

# chown -R apache:apache /project/redmine 

最後に、Apache を再起動して設定を有効化します。 ここまでで、ブラウザで Redmine にアクセスできるようになっているはずなので確認します。

うまくいかない場合

上記が参考サイトで解説されている手順になりますが、自分の場合はこれでは Passenger が機能しませんでした。 
passenger-status を実行してみても下記のようにエラーが出ました。

# passenger-status
ERROR: Phusion Passenger doesn't seem to be running. If you are sure that it is running, then the causes of this problem could be:

1. You customized the instance registry directory using Apache's PassengerInstanceRegistryDir option, Nginx's passenger_instance_registry_dir option, or Phusion Passenger Standalone's --instance-registry-dir command line argument. If so, please set the environment variable PASSENGER_INSTANCE_REGISTRY_DIR to that directory and run passenger-status again.
2. The instance directory has been removed by an operating system background service. Please set a different instance registry directory using Apache's PassengerInstanceRegistryDir option, Nginx's passenger_instance_registry_dir option, or Phusion Passenger Standalone's --instance-registry-dir command line argument.

結論としては、以下の対応が必要でした。

まず、下記のようなエラーが出ていました。

*** Passenger could not be initialized because of this error: Apache is configured to log to a pipe, so Passenger cannot be initialized because it doesn't support logging to a pipe. Please configure Passenger with an explicit log file using the `PassengerLogFile` directive.

Passenger のログはパイプ出力をサポートしていないので、エラーに記載されている通り、前述した PassengerLogFile を設定しました。
これで Apache 上のエラー自体は消えましたが、passenger-status は依然としてエラーになります。

次に、PrivateTmp を無効とする設定をしました。 下記のようにして、設定ファイルを変更します。

# systemctl edit httpd.service

内容は下記です。

[Service]
PrivateTmp=false

これで、自分の場合は有効になりました。

コメント

タイトルとURLをコピーしました