プロジェクト

全般

プロフィール

Redmineアップグレード

稼働中のRedmine3.xまたは4.xをアップグレードする。

公式資料は下記。これを参考にする。
http://guide.redmine.jp/RedmineUpgrade/

想定

  • かなり更新間隔があいた状態を想定し、コンテンツは上書きせずファイル移行を行う。
  • redmineは「/usr/local/redmine」で稼働中とする。異なる場合は適宜読み替える。
  • WebServerはhttpdとする
  • svn、gemを利用できるものとする
  • gcc等コンパイルを行える環境とする
  • プラグインは失敗の原因になりやすいので、可能であれば削除しておく

バックアップ

新データを上書きせず旧データをそのまま残すので、Webサーバを落として
コンテンツをリネームする。

  • Webサーバをダウン
    # systemctl stop httpd
    
  • 旧コンテンツをリネーム
    # mv /usr/local/redmine /usr/local/redmine_old
    

データベースをバックアップする。

  • MySQLのバックアップ
    # mysqldump -u root -p redmine > /var/tmp/redmine_dump.sql
    

新環境の構築

  • Rubyを更新する
    # wget https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.1.tar.gz
    # tar xzf ruby-2.5.1.tar.gz 
    # ./configure --disable-install-doc
    # make
    # make install
    # ruby -v
    
    上記でインストールしたバージョンが表示されること
    
  • SVNから最新の安定版をチェックアウトして配置する
    # svn checkout http://svn.redmine.org/redmine/branches/3.4-stable redmine
    # mv redmine /usr/local/redmine
    # cd /usr/local/redmine
    
  • 旧環境から移行する必要があるファイルをコピーする
    # cp -p /usr/local/redmine_old/config/configuration.yml /usr/local/redmine/config/
    # cp -p /usr/local/redmine_old/config/database.yml /usr/local/redmine/config/
    # cp -Rp /usr/local/redmine_old/files /usr/local/redmine/
    
  • bundlerを更新する
    # gem update bundler
    # bundle install --without development test
    # bundle exec rake generate_secret_token
    # bundle update
    
  • bundler環境のマイグレートを実行する
    # bundle exec rake db:migrate RAILS_ENV=production
    # bundle exec rake redmine:plugins:migrate RAILS_ENV=production
    # bundle exec rake tmp:cache:clear RAILS_ENV=production
    
    • マイグレートが失敗する場合
      古いバージョンからの移行で「/usr/local/redmine/config/master.key」が無い?
      # EDITOR=vi rails credentials:edit
      --------------------
      表示される『secret_key_base』と文字列をコピーする
      保存してconfig/master.keyが作成されることを確認する
      
    • 表示された『secret_key_base』を以下に追加する
      # vi /usr/local/redmine/config/configuration.yml
      --------------------
      production:
        email_delivery:
          delivery_method: :smtp
          smtp_settings:
            address: "localhost" 
            port: 25
            domain: "example.com" 
      
        rmagick_font_path: /usr/share/fonts/ipa-pgothic/ipagp.ttf
        secret_key_base: キー文字列
      
    • 再度マイグレートを実行する
  • Passengerを更新する
    6.x系はメモリリークが起きてうまく動作しなかったので5.x系の最新を指定する
    # gem uninstall passenger
      一度古いpassengerをアンインストールする
    
    # gem query -ra -n  "^passenger$" 
     利用可能なバージョンを調べる
    # gem install passenger -N -v=5.3.7
     5.xの最新のバージョンを指定する
    
    # passenger-install-apache2-module
    PassengerのApache用モジュールをインストールする
    
    • 注意
      メモリを比較的多く使うので、メモリ不足で失敗していないか注意する。
      …
      …
      virtual memory exhausted: メモリを確保できません
      rake aborted!
      

      と表示された場合メモリ確保に失敗しているので、メモリを増やすか稼働中の
      デーモンなどを一時的に終了して空きメモリを増やし再度インストールを試みる。
  • コンパイル成功時に下記のような出力があるのでコピーする。
    バージョンは適宜異なるので、本記載ではなく出力結果をコピーすること。
    Please edit your Apache configuration file, and add these lines:
    
       LoadModule passenger_module /usr/local/lib/ruby/gems/2.5.0/gems/passenger-4.0.60/buildout/apache2/mod_passenger.so
       <IfModule mod_passenger.c>
         PassengerRoot /usr/local/lib/ruby/gems/2.5.0/gems/passenger-4.0.60
         PassengerDefaultRuby /usr/local/bin/ruby
       </IfModule>
    
  • コンパイル結果をもとに、Apacheの設定ファイルを書き換える
    # vi /etc/httpd/conf.d/redmine.conf
    -----------------------------
    RackBaseURI /redmine
    
    <Directory "/usr/local/redmine/public">
      #Require all granted
        AllowOverride None
        Order allow,deny
        Allow from all
    </Directory>
    
    #### ここから、コンパイル結果を上書きする
       LoadModule passenger_module /usr/local/lib/ruby/gems/2.5.0/gems/passenger-4.0.60/buildout/apache2/mod_passenger.so
       <IfModule mod_passenger.c>
         PassengerRoot /usr/local/lib/ruby/gems/2.5.0/gems/passenger-4.0.60
         PassengerDefaultRuby /usr/local/bin/ruby
       </IfModule>
    #### ここまで
    
    Header always unset "X-Powered-By" 
    Header always unset "X-Runtime" 
    
    PassengerMaxPoolSize 20
    PassengerMaxInstancesPerApp 4
    PassengerPoolIdleTime 864000
    PassengerHighPerformance on
    PassengerStatThrottleRate 10
    PassengerSpawnMethod smart
    PassengerFriendlyErrorPages off
    
    RackBaseURI /redmine
    
  • 公開ディレクトリにあるシンボリックリンクを張り替える
    # ln -s /usr/local/redmine/public /var/www/redmine
    
  • 所有者権限を変更する
    # chown -R apache.apache /usr/local/redmine
    
  • Webサーバを起動する
    # systemctl start httpd 
    
  • passengerの動作を確認する
    # passenger-status
    
    Version : 4.0.60
    Date    : 2018-04-23 12:49:25 +0900
    Instance: 1372
    ----------- General information -----------
    Max pool size : 20
    Processes     : 0
    Requests in top-level queue : 0
    
    ----------- Application groups -----------
    
    何もインスタンスが起動していない状態が確認できること。
    
  • ブラウザでRedmineにアクセスする。
    動作に問題がなければデータベースのダンプや旧ファイルは削除していい
    メニューや検索フィールドの表示が崩れた場合、Shift+F5などでキャッシュを
    破棄するフルリロードを行えば正しく表示される。

以上