WindowsPCでRailsのテスト環境を作りました

こんにちは、エンジニアの関です。 Ruby on Railsの勉強のために、Windows環境の上に、Virt…

こんにちは、エンジニアの関です。

Ruby on Railsの勉強のために、Windows環境の上に、VirtualBoxでCentOS7をインストールしました。
いくつかハマったので健忘録として記事にしておきます。

 

1. 環境

ホスト環境

CPU:Core i5-3210M メモリ:8GB OS:Windows10 Home (64bit)
VirtualBox 5.1.18

ゲストOS

CentOS7
ファイル: CentOS-7-x86_64-Minimal-1611.iso

2. ユーザ作成・設定

# useradd user
# passwd user

ユーザー user のパスワードを変更。

 

3. VirtualBox / CentOSのインストール

VirtualBox
https://www.virtualbox.org/wiki/Downloads

まずはVirtualBoxをインストール。
VirtualBoxで仮想マシンを作成して、CentOSは最小限の環境をインストールしました。

 

4.MySQLのインストール・設定

(1)インストール

デフォルトでMariaDBがインストールされているので、まずは削除します。
# yum remove mariadb-libs
# rm -rf /var/lib/mysql/

コミュニティ版のMySQLをインストールします。
# yum localinstall http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm
# yum -y install mysql-community-server

(2)パスワードの設定

まずは /etc/my.conf の[mysqld]に skip-grant-tables を追加してMySQLを起動します。
# systemctl start mysqld.service

コマンドラインからパスワードを設定 (例:’PASSWORD’)します。
# mysql -u root
mysql> use mysql
mysql> UPDATE user SET authentication_string=password('PASSWORD'), host='' WHERE user='root';
mysql> quit

/etc/my.conf の[mysqld]に先ほど追加した skip-grant-tables を削除しして、MySQLを再起動します。
# systemctl enable mysqld.service
# systemctl restart mysqld.service

 

5.Sambaのインストール・設定

インストール
# yum install samba

起動設定
# systemctl enable samba.service
# systemctl start samba.service

ユーザディレクトリでSELinuxの設定を変更します。
# chcon -R -t samba_share_t /home/user

ユーザ設定(& パスワード)
# pdbedit -a -u user

 

6.ネットワークの設定

(1)ネットワークアダプタの設定

VirtualBoxで動作しているLinuxを一度停止させます
VirtualBoxのゲストOSのネットワークの設定を以下のように設定します。

アダプター1:ブリッジアダプタ → enp0s3 になります。
アダプター2:ホストオンリーアダプタ → enp0s8になります。

ゲストOSを起動してOSのネットワークの設定を変更します。

ブリッジアダプタを起動時に自動で接続
# nmcli connection modify enp0s3 connection.autoconnect yes
ホストオンリーアダプタを固定IPに設定
# nmcli connection modify enp0s8 ipv4.method manual ipv4.addresses 192.168.56.102/24

ゲストOSを再び再起動します

(2)ファイヤーウォールの設定

ホストオンリーアダプタのゾーンをinternalへ変更
# nmcli connection modify enp0s8 connection.zone internal

Samba, Mysql, ssh, ポート番号3000版のTCP通信をinternalからつなげられるようにします
# firewall-cmd --zone=internal --add-service=samba
# firewall-cmd --zone=internal --add-service=mysql
# firewall-cmd --zone=internal --add-service=ssh
# firewall-cmd --zone=internal --add-port=3000/tcp
# firewall-cmd --zone=internal --add-service=samba --permanent
# firewall-cmd --zone=internal --add-service=mysql --permanent
# firewall-cmd --zone=internal --add-service=ssh --permanent
# firewall-cmd --zone=internal --add-port=3000/tcp --permanent

 

7.ホストOS側でのファイル共有設定

Windows10の「ネットワークドライブの割り当て」を使ってゲストOSのユーザディレクトリにドライブレターを割り当てます。

VirtualBoxでは「共有フォルダー」という機能でホストOSのディレクトリをゲストOSからアクセスできる様に設定できます。
しかし、実装されているキャッシュが悪さをするのかファイルを更新しても書き込まれないことがごくたまにあったり、Bundlerの実行時に不具合が発生するので、設定が簡単で便利なのですが、使用を避けたいと思いました。
原因を調べたりする手間や時間を考えたらLinux側のストレージをホストオンリーアダプタ経由のSambaで共有したほうが難がないと考えました。

 

8.ruby環境のインストール

(1)ビルドで使うrpmのインストール

# yum install gcc-c++ patch readline readline-devel zlib zlib-devel libyaml-devel libffi-devel openssl-devel make bzip2 autoconf automake libtool bison git

(2)rbenvのインストール

# cd /usr/local/
# git clone https://github.com/sstephenson/rbenv.git rbenv
# git clone https://github.com/sstephenson/ruby-build.git rbenv/plugins/ruby-build
# mkdir /usr/local/rbenv/shims /usr/local/rbenv/versions

(3)ユーザの設定

# su - user
$ echo 'export RBENV_ROOT=/usr/local/rbenv' >> ~/.bash_profile
$ echo 'export PATH=$RBENV_ROOT/bin:$PATH' >> ~/.bash_profile
$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
$ source ~/.bash_profile
$ exit
#

(4)sudo設定の変更

# visudo

以下を追記
Defaults env_keep += "RBENV_ROOT"

以下変更
# Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin
Defaults secure_path = /usr/local/rbenv/shims:/usr/local/rbenv/bin:/sbin:/bin:/usr/sbin:/usr/bin

(5)rubyのインストール

# rbenv install -v 2.3.3
# rbenv global 2.3.3
# rbenv rehash

(6)bundler インストール

# gem install bundler

 

9.ホストOS側のブラウザからゲストOSで動作するRails環境のサーバへのアクセス

ホストOSのブラウザからネットワーク設定でホストオンリーアダプタに設定したIPアドレス(192.168.56.102)を指定してアクセス出来ます。
ゲストOSでRails severを起動する時は以下のコマンドラインの様にwebサーバのホストIPを指定する必要があります。

$ rails server -b 0.0.0.0
または
$ rails server -b 192.168.56.102
「192.168.56.102」は、ホストオンリーアダプタに設定したIPアドレスです。

以上の設定でWindows10のホストOS側からエディタでコードを修正したり、TeraTermでssh接続したコンソールからRailsコマンドを実行したりしています。

では。