Redmineの再構築と移行など

開発支援サーバを構築したいとおもいSubversion、GitおよびRedmineのサービスを行うサーバを構築しました。3ヶ月くらい前に行ったことのメモをまとめました。メインはRedmineの移行です。

アプリケーション等管理ツール
バージョン管理ツール

Redmine

本題のRedmineの移行です。 ずっと1.0.5を使っていたのでバージョンアップしまます。また、アプリケーションを動かす環境も新たな場所に構築します。 なお、Redminepassengerスタンドアローン版で動かし、Apacheをプロキシサーバとして利用します。これはSubversionサーバ(w/Apache)が同じマシン上に立っているためです。 既存のRedmine1.0.5はホスト名 argyle.mnb というマシンで動いていました。今回は新規に作成する tattersall.mnb というVMに移行します。なお作業時の最新のRedmineのバージョンは2.0.3です。
移行先(tattersall)での作業
  1. Apacheのインストール
    # ダウンロードと解凍
    cd /usr/local/src
    sudo wget http://ftp.yz.yamagata-u.ac.jp/pub/network/apache//httpd/httpd-2.4.2.tar.gz
    sudo tar xzvf httpd-2.4.2.tar.gz
    
    # apr, apr-utilをダウンロードと解凍
    # Subversionサーバ構築に必要だから。 > http://svn.apache.org/repos/asf/subversion/tags/1.7.5/INSTALL
    # Subversionサーバ構築に必要だから。 > http://svn.apache.org/repos/asf/httpd/httpd/tags/2.4.2/INSTALL
    sudo wget http://ftp.yz.yamagata-u.ac.jp/pub/network/apache//apr/apr-1.4.6.tar.gz
    sudo tar zxvf apr-1.4.6.tar.gz
    sudo wget http://ftp.yz.yamagata-u.ac.jp/pub/network/apache//apr/apr-util-1.4.1.tar.gz
    sudo tar zxvf apr-util-1.4.1.tar.gz
    
    # apr, apr-utilを組み込んだApacheをインストール
    sudo mv apr-1.4.6 httpd-2.4.2/srclib/apr
    sudo mv apr-util-1.4.1 httpd-2.4.2/srclib/apr-util
    sudo cd httpd-2.4.2
    sudo sh ./buildconf
    sudo ./configure --enable-dav --enable-so --enable-maintainer-mode --enable-ssl --enable-rewrite --with-included-apr --sysconfdir=/etc/apache2
    sudo make
    sudo paco -D make install
    
    # 自動起動の設定
    cd /usr/local/apache2/bin
    sudo cp -iv apachectl /etc/init.d/apache2
    sudo sysv-rc-conf apache2 on
    sysv-rc-conf --list | grep apache2
    
  2. MySQLのインストール
    sudo aptitude install cmake
    sudo groupadd mysql
    sudo useradd -r -g mysql mysql
    cd /usr/local/src
    sudo wget http://cdn.mysql.com/Downloads/MySQL-5.5/mysql-5.5.25a.tar.gz
    sudo tar zxvf mysql-5.5.25a.tar.gz 
    cd mysql-5.5.25a/
    sudo aptitude install libncurses5-dev
    sudo cmake . \
     -DDEFAULT_CHARSET=utf8 \
     -DDEFAULT_COLLATION=utf8_general_ci \
     -DWITH_INNOBASE_STORAGE_ENGINE=1 \
     -DWITH_EXTRA_CHARSETS=all \
     -DWITH_READLINE=1
    sudo make
    sudo paco -D make install
    cd /usr/local/mysql
    sudo chown -R mysql .
    sudo chgrp -R mysql .
    sudo mv /etc/mysql/my.cnf /etc/mysql/my.cnf.20120707
    sudo scripts/mysql_install_db --user=mysql
    sudo chown -R root .
    sudo chown -R mysql data
    sudo cp -iv support-files/mysql.server /etc/init.d/mysql
    sudo sysv-rc-conf mysql on
    
  3. Rubyのインストール
    cd /usr/local/src
    sudo wget http://pyyaml.org/download/libyaml/yaml-0.1.4.tar.gz
    sudo tar zxvf yaml-0.1.4.tar.gz
    cd yaml-0.1.4
    sudo ./configure
    sudo make
    sudo paco -D make install
    paco -1Fdsa
    
    cd /usr/local/src
    sudo aptitude install zlib1g-dev # すでに入ってた
    sudo wget ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p194.tar.gz
    sudo tar zxvf ruby-1.9.3-p194.tar.gz
    cd ruby-1.9.3-p194/
    sudo ./configure
    sudo make
    sudo paco -D make install
    ruby -v
    
  4. bundlerのインストール
    sudo gem install bundler
    
  5. Imagemagickのインストール
    sudo aptitude install libmagickwand-dev
    
  6. Redmineのダウンロードおよびpassengerの設定
    cd /opt
    sudo mkdir -p redmine
    sudo useradd redmine
    sudo chown -R redmine redmine
    sudo chgrp -R redmine redmine
    cd redmine
    # ユーザ redmine を作ってこれ以降はredmineユーザで作業することとする。
    sudo su - redmine
    svn co http://redmine.rubyforge.org/svn/branches/2.0-stable redmine-2.0
    cd redmine-2.0
    
    # passengerのスタンドアローン版で運用するので。
    touch Gemfile.local
    echo 'gem "passenger"' > Gemfile.local
    bundle install --without development test postgresql sqlite --path=vendor/bundle
    
  7. MySQLの設定
    1. DBにログイン。
      $ cd /usr/local/mysql/bin
      $ ./mysql -u root
      
    2. mysqlシェルより以下の各処理を行う。
      mysql> create database redmine character set utf8; -- redmineデータベースを作成
      mysql> create user 'redmine'@'localhost' identified by 'yourpassword'; -- redmineデータベースにユーザ"redmine"を作成
      mysql> grant all privileges on redmine.* to 'redmine'@'localhost'; -- ユーザ"redmine"のredmineデータベースにおける権限を付与
      
    3. 一応 redmine にsu
      $ sudo su - redmine
      
    4. /opt/redmine/config/database.yml の設定
      production:
        adapter: mysql2
        database: redmine
        host: localhost
        username: redmine
        password: yourpassword
      
    5. セッションストアシークレットを作成
      $ cd /opt/redmine
      $ bundle exec rake generate_secret_token
      
移行元(argyle)での作業
  1. DBおよびファイルのバックアップ
    $ cd /mnt/nas01/redmine
    $ sudo mkdir migrate_redmine
    $ cd migrate_redmine;
    $ sudo cp -iprv /var/lib/redmine/default/files  ./
    $ sudo sh -c 'mysqldump -u redmine redmine -pmypassword > redmine.sql'
    
  2. アーカイブして移行先(tattersall)にコピー
    sudo tar czvf redmine_argyle.backup.migrate_redmine.tgz files redmine.sql
    sudo scp redmine_argyle.backup.migrate_redmine.tgz naoyes@tattersall.mnb:tmp/
    
移行先(tattersall)での作業
  1. バックアップを解凍
    $ cd ~/tmp
    $ tar vzxf redmine_argyle.backup.migrate_redmine.tgz
    
  2. redmineにファイルを移行
    $ sudo cp -irv files /opt/redmine
    
  3. MySQLのデータを移行
    $ /usr/local/mysql/bin/mysql -u root redmine < redmine.sql
    
  4. 新しいredmine用にMySQLのDBの属性変更
    $ cd /opt/redmine
    $ sudo RAILS_ENV=production bundle exec rake db:migrate
    $ bundle exec rake tmp:cache:clear
    $ bundle exec rake tmp:sessions:clear
    
  5. passengerを8080ポートで起動してみる
    $ cd /opt/redmine
    $ sudo RAILS_ENV=production bundle exec /opt/redmine/vendor/bundle/ruby/1.9.1/bin/passenger start -p 8080 --user=redmine -d
    

まとめ

Redmineのバージョンアップはなんの問題もなくサクッとできました。プラグインを一つも入れていないのでそれもスムーズな移行の要因かなと思います。 移行当時からまたバージョンが上がっているので近いうちにやりたいと思います。便利なプラグインの恩恵も受けてみたいのでそのへんは探りながら。