プロジェクト

全般

プロフィール

Redmineのインストール

Redmine 3.x系のインストール

構築環境の準備

Redmineの構築に必要となる下記の環境を構築する
  • Ruby
  • Passenger
  • redmine本体

Rubyのインストール

  • 作業用のパッケージを追加
    # yum install wget 
    
  • 開発ツールをインストール
    # yum install gcc gcc-c++
    
  • コンパイル用のパッケージを追加
    # yum install openssl-devel readline-devel zlib-devel curl-devel libyaml-devel libffi-devel
    
  • 作業用ディレクトリを準備し、Rubyのソースコードを入手・展開する
    # mkdir /usr/local/work
    # cd /usr/local/work/
    # wget https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.1.tar.gz
    # tar xzf ruby-2.5.1.tar.gz
    
  • ソースコードをコンパイルしインストールする
    # cd ruby-2.5.1
    # ./configure --disable-install-doc
    # make
    # make install
    
  • Rubyとrubygemsのバージョンを確認する
    # ruby -v
    ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux]
    # gem -v
    2.7.6
    

Redmineのインストール

  • ImageMagickのインストール
    # yum install ImageMagick ImageMagick-devel ipa-pgothic-fonts
    
  • MariaDBのインストール
    # yum install mariadb mariadb-server mariadb-devel
    # systemctl enable mariadb
    # systemctl start mariadb
    
  • bundlerのインストール
    gem install bundler --no-rdoc --no-ri
    # bundle -v
    Bundler version 1.16.1
    
  • Redmineのダウンロード
    # yum install subversion
    # svn checkout http://svn.redmine.org/redmine/branches/3.4-stable /usr/local/redmine
    # cd //usr/local/redmine
    
  • データベースのパスワード設定
    # mysql -u root
    MariaDB [(none)]> set password for root@localhost=password('任意のパスワード');
    Query OK, 0 rows affected (0.00 sec)
    
    MariaDB [(none)]> quit
    Bye
    
  • データベースの作成
  • DB認証の確認およびデータベース作成
    # mysql -u root -p
    Enter password: 設定したパスワード
    
    MariaDB [(none)]> create database redmine default character set=utf8;
    MariaDB [(none)]> grant all privileges on redmine.* to "redmine"@"localhost" identified by "設定するパスワード";
    MariaDB [(none)]> quit
    Bye
    
  • データベース接続設定ファイルの編集
    # cp -p /usr/local/redmine/config/database.yml.example /usr/local/redmine/config/database.yml
    # vi /usr/local/redmine/config/database.yml
    -----------------------------
    production:
      adapter: mysql2
      database: redmine
      host: localhost
      username: redmine
      password: "任意のパスワード" 
      encoding: utf8
    
  • 設定ファイルの編集(ファイルの一番下のほう)
    # cp -p /usr/local/redmine/config/configuration.yml.example /usr/local/redmine/config/configuration.yml
    # vi /usr/local/redmine/config/configuration.yml
    -----------------------------
    production:
      email_delivery:
        delivery_method: :smtp
        smtp_settings:
          address: "localhost" 
          port: 25
          domain: "サーバのFQDN" 
    
      rmagick_font_path: /usr/share/fonts/ipa-pgothic/ipagp.ttf
    
  • gemパッケージのインストール
    # cd /usr/local/redmine/
    # bundle install --without development test --path vendor/bundle
    
  • セッション鍵の作成
    # bundle exec rake generate_secret_token
    
  • データベーステーブルの作成
    # RAILS_ENV=production bundle exec rake db:migrate
    
    • manifest.jsがなくて失敗する場合、下記ディレクトリとファイルが無ければ作る
      # ls app/assets/config/manifest.js
      
      # mkdir -p app/assets/config
      # touch app/assets/config/manifest.js
      
  • データベースの投入
    # RAILS_ENV=production REDMINE_LANG=ja bundle exec rake redmine:load_default_data
    
  • WEBrickによる単体起動確認
    # bundle exec rails server webrick -e production --bind=0.0.0.0
    
    • railsが6以降の場合、上記コマンドに失敗するので次のような対処が必要
      webrickが最初から含まれなくなったので追加する
      # bundle add webrick
      
      webrick起動の書式が変わっているので、上記の代わりにこちらを使用する
      # bundle exec rails server -u webrick -e production
      
  • 上記の状態でエラーがないことを確認し、下記のURLをブラウザで表示する
    http://redmineサーバのIPアドレス:3000/
    
  • redmineのホーム画面が表示されればOK
  • 「Ctrl+C」でWEBrickを終了する

Passengerのインストール

ApacheとPassengerを連携し、80/443番ポートでWebサーバ上で起動するようにする

  • httpdのインストール
    # yum install httpd httpd-devel mod_ssl
    # systemctl enable httpd
    # systemctl start httpd
    
  • systemdがtmp領域を別プロセスが使えないようにしているため、ApacheとPassengerが
    連携できるように制限を解除する。
    # cp -p /usr/lib/systemd/system/httpd.service  /etc/systemd/system/
    # vi /etc/systemd/system/httpd.service
    -----------------------------
    PrivateTmp=false
    
  • systemdサービスを再起動する
    # systemctl daemon-reload
    
  • Passengerのインストール
    # gem install passenger --no-rdoc --no-ri
    
    • Ruby 3以降の場合は「--no-rdoc」がエラーになるので下記のコマンドで実行する
      # gem install passenger -N
      
  • 下記コマンドを実行し、出力されるパスをコピーする(導入バージョンで異なる)
    # passenger-install-apache2-module
    -----------------------------
    LoadModule passenger_module /usr/local/lib/ruby/gems/2.5.0/gems/passenger-5.2.3/buildout/apache2/mod_passenger.so
    <IfModule mod_passenger.c>
      PassengerRoot /usr/local/lib/ruby/gems/2.5.0/gems/passenger-5.2.3
      PassengerDefaultRuby /usr/local/bin/ruby
    </IfModule>
    
  • httpdの設定ファイルを新規作成する。
    上記の結果をコピーし、「ここから ~ ここまで」の範囲を上書きする
    # vi /etc/httpd/conf.d/redmine.conf
    -----------------------------
    RackBaseURI /redmine
    # Redmineの画像ファイル・CSSファイル等へのアクセスを許可する設定。
    # Apache 2.4のデフォルトではサーバ上の全ファイルへのアクセスが禁止されている。
    <Directory "/usr/local/redmine/public">
      Require all granted
    </Directory>
    
    # Passengerの基本設定。
    # passenger-install-apache2-module --snippet で表示された設定を記述。
    # 環境によって設定値が異なるため以下の5行はそのまま転記せず、必ず
    # passenger-install-apache2-module --snippet で表示されたものを使用すること。
    #
    LoadModule passenger_module /usr/local/lib/ruby/gems/2.5.0/gems/passenger-5.2.3/buildout/apache2/mod_passenger.so
    <IfModule mod_passenger.c>
      PassengerRoot /usr/local/lib/ruby/gems/2.5.0/gems/passenger-5.2.3
      PassengerDefaultRuby /usr/local/bin/ruby
    </IfModule>
    
    # 必要に応じてPassengerのチューニングのための設定を追加(任意)。
    # 詳しくはPhusion Passenger users guide(https://www.phusionpassenger.com/library/config/apache/reference/)参照。
    PassengerMaxPoolSize 20
    PassengerMaxInstancesPerApp 4
    PassengerPoolIdleTime 864000
    PassengerStatThrottleRate 10
    
    Header always unset "X-Powered-By" 
    Header always unset "X-Runtime" 
    
  • ドキュメントルートにシンボリックリンクを張り、httpdが読み取れるようにオーナー権限を変更する
    # ln -s /usr/local/redmine/public /var/www/html/redmine
    # chown -R apache.apache /usr/local/redmine
    
  • httpdをリスタートする
    # systemctl restart httpd
    
  • Passengerが状態を返すことを確認する
    # passenger-status
    
  • 下記のアドレスをブラウザで表示する
    http://サーバのIPアドレス/redmine/
    
  • Redmineのホーム画面が表示されることを確認する
  • 初期アカウント(ユーザ名「admin」、パスワード「admin」)でログインし、パスワードを初期化する。
  • これ以降は通常の操作が可能。

以上