VirtualBox5.1.14上の Ubuntu14.04で動作する Redmine3.3.1-0へ USBメモリでデータを引っ越す

Windows7のVirtualBox上でBitnamiの仮想マシン用Redmine(Ubuntu14)を使ってみた。
VirtualPC上Windows7でのRedmineより負担が軽いので、引っ越し手順を記録する。
より簡単な方法があれば教えて頂けると幸いです。

つまづいた場所は3か所で、1.VirtualBoxに64bitCPUと認識させる。
2.USBメモリをマウント。そして3.Redmineの内部エラー。
参考文献を見て解決できたようなので、メモとして残す。

#環境
　引越元PC:Windows Virtual PC
　引越元OS:Windows7 Ultimate SP1
　引越元RM:Bitnami Redmine Stack 3.2.0-2
　（参考：[Win7にBitnami RedmineをインストールしGitリポジトリを覗く](http://qiita.com/Sakade3346/items/7363a32c3db305e3313a)）
　ホストPC:Lenovo TinkCentre 6064-A17 Core2DuoCPU@2.66GHz RAM4.3GB HDD152.4GB
　ホストOS:Ubuntu 16.04LTS 日本語Remix
　ゲストPC:Oracle VM VirtualBox 1CPU RAM1024MB HDD17GB
　ゲストOS:Ubuntu 14.04
　引越先RM:Bitnami Redmine3.3.1-0 Ubuntu14.04 Stack
　（ホストOSやOracle VM VirtualBoxは既にインストール済みの状態から始める）
　既にFAT32でフォーマットされたUSBメモリを準備する。
　Redmineのhtdocs下filesと、データベースのダンプredmine.sqlを入れる。

#原理
　1.ホストPC-BIOS設定Advanced中Enable VT-dがEnableでないと、VirtualBoxの64bitOSが動作しない。
　2.ホストOSがUbuntuだとユーザがvboxusersに所属していない場合はUSB機器の一覧が表示されない。
　3.Redmine対策時"bundle exec rake db:migrate"する前rbenvをインストールしたら成功した。
　（参考文献）
　[仮想マシンの作成で64bit OSを選択可能にする方法](http://did2memo.net/2015/07/10/virtualbox-64-bit-os/)
　[VirtualBoxでのUSBデバイス認識](http://qiita.com/civic/items/684c4b82428feb0c4ae1)
　[Update Redmine 3.2.1->3.3.0 partiall failed](http://www.redmine.org/boards/2/topics/50477)
　[Ubuntu14.04にrbenvをインストールしてRubyのバージョン管理](Ubuntu14.04にrbenvをインストールしてRubyのバージョン管理)

#詳細
##１．ホストPCのBIOSを設定する。
　　参考文献にはAdvancedの”Intel Virtualization Technology”とある、今回は”Enable VT-d”だった。
　　両方ともEnableにしておくと手堅いかも。
![IMG_5824.JPG](https://qiita-image-store.s3.amazonaws.com/0/114951/4c89ce54-632b-fb04-f33d-f7bc234ddd9b.jpeg)



##２．vboxusersへ所属（ホストOSがLinuxの場合、Winは不要）
　　VirtualBoxの仮想マシンで、ホストPC挿入のUSB機器一覧を表示するため、
　　vboxusersグループに所属する。
　　```$ sudo gpasswd -a YOUR_USERNAME vboxusers```
　　そして再起動する。

##３．Bitnami Ubuntu + Redmine のインストール
　　[Bitnamiのページ](https://bitnami.com/stack/redmine/virtual-machine)へ行って、Virtual Machines用のUbuntu+Redmineをダウンロードする。
　　（この時ダウンロードしたのはUbuntuが14.04、Redmineが3.3.1-0の64bit）
　　VirtualBoxマネージャーの”ファイル(F)”->”仮想アプライアンスのインポート(I)…”を選択。
　　（VirtualBoxマネージャーがアクティブ時、画面最上部へマウスを合わせると”ファイル(F)”等が表示）
![Screenshot from 2017-01-27 11-56-07.png](https://qiita-image-store.s3.amazonaws.com/0/114951/9d3a376c-9a8c-0e7b-8bcd-51a4cd07df61.png)

　　ダウンロードしたファイル”bitnami-redmine-3.3.1-0-r28-linux-ubuntu-14.04-x86_64.ova”を選んで開く。
![Screenshot from 2017-01-27 15-13-35.png](https://qiita-image-store.s3.amazonaws.com/0/114951/3712e174-2271-3ffd-67dd-cf1facd59057.png)

　　仮想マシン”bitnami-redmine”ができるので選択して”設定(S)”->USBで”USBコントローラーを有効化”にチェック。
![Screenshot from 2017-01-27 15-15-14.png](https://qiita-image-store.s3.amazonaws.com/0/114951/d011d811-ebbd-606a-528e-e5f0391d0a33.png)
![Screenshot from 2017-01-27 15-15-54.png](https://qiita-image-store.s3.amazonaws.com/0/114951/683c8965-9605-5ab0-8b8f-855e98f36eb8.png)

　　設定を保存したら、起動する。この時ホストPCのBIOS設定が正しくないとエラーが発生する。
　　![64bit-err.png](https://qiita-image-store.s3.amazonaws.com/0/114951/2730ad7e-7718-e0d4-9f2a-5f4ee2bcd71f.png)

　　起動したらこんな表示が出るので、ログインする。
![Screenshot from 2017-01-27 15-18-31.png](https://qiita-image-store.s3.amazonaws.com/0/114951/ac24158b-6797-4295-aac0-0a2873379816.png)


##４．Redmineデータのリストア
　　仮想マシンウィンドウのデバイス->USB->データを入れたUSBメモリにチェック。
　　マウントする場所を作り、読み書き可能な設定にして、USBマウントする。
　　```$ sudo mkdir /mnt/usb```
　　```$ sudo chmod 777 /mnt/usb```
　　```$ sudo mount -t vfat /deb/sdb /mnt/usb```

　　USBメモリにはhtdocsの下にあるfilesフォルダとデータベースのダンプをリダイレクトしたredmine.sqlを入れてあるので、仮想マシンに移す。
　　データベースの定義ファイルの中を見てproduction:部分のデータベース名、ユーザ名、パスワードを控える。
　　mysqlにリダイレクトで入力する。
　　```$ cp -r /mnt/usb/files /opt/bitnami/apps/redmine/htdocs/```
　　```$ cat /opt/bitnami/apps/redmine/htdocs/config/database.yml | more```

![Screenshot from 2017-01-27 15-47-28.png](https://qiita-image-store.s3.amazonaws.com/0/114951/4f97f125-c7a9-189a-dcf8-c46326d30f25.png)

　　控えたデータベース名、ユーザ名、パスワードでデータベースに書き込む。
　　```$ mysql -ubitnami -pf16d5d83d5 bitnami_redmine < /mnt/usb/redmine.sql```

　　USBメモリをアンマウントする。
　　```$ sudo umount /dev/sdb```

　　仮想マシンウィンドウのデバイス->USB->データを入れたUSBメモリから
　　チェックを外す。

##５．対策準備のためrbenvをインストール
　　原理の参考文献では対策のためにrbenvを使っているが、仮想マシンには入っていないのでインストールする。
　　apt-getをアップデートし、rbenvをインストールする。
　　```$ sudo apt-get update```
　　```$ sudo apt-get upgrade```
　　```$ cd```
　　```$ sudo apt-get install git build-essential libssl-dev```
　　```$ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv```
　　```$ git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build```

　　私は日本語キーボードで文字を打ったので、チルダ”~”を出すのに”半角/全角漢字”キーを使った。
　　"~/.profile"の末尾に下記を追加する。（viエディタは仮想マシンにインストールされていた）
　　```export PATH="$HOME/.rbenv/bin:$PATH"```
　　```eval "$(rbenv init -)"```

　　上記を反映させる。
　　```$ source ~/.profile```

##６．Redmineの内部異常対策
　　データを引っ越しただけでは新しいチケットを追加しようとすると内部エラーが発生した。
　　こんな風にしてみたが、本当は対策中に他の人が使う可能性を考えてRedmineを停止させなければならないだろう。
　　```$ cd /opt/bitnami/apps/redmine/htdocs```
　　```$ export RAILS_ENV="production"```
　　```$ rbenv localsystem```
　　```$ bundle install --without development test```
　　```$ bundle exec rake generate_secret_token```
　　```$ bundle exec rake db:migrate RAILS_ENV=production```
　　```$ sudo reboot```

##７．その他
　　共有フォルダを使ってデータを引っ越そうと思っていたが、諦めた。


以上