Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
2
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

@woogy

Centos7をRails用にセットアップしたvagrant用boxを作る手順のメモ

はじめに

Railsの開発環境を構築するために、CentOS 7用のVagrant BOXを入手しようと思ったが、どれを使えばよいかわからないので、自分で作ることにした。どうせなので、RubyとRailsのインストールまでした状態でBOX化することにする。
コマンドの実行はゲスト側で行い、ソースファイルの編集はホスト側でできるようにする。

VMイメージ作成

CentOS 7をダウンロードする

minimal isoを入手する

https://www.centos.org/download/
isoはミラーからダウンロードしてと言われるので、JAISTから
http://ftp.jaist.ac.jp/pub/Linux/CentOS/
http://ftp.jaist.ac.jp/pub/Linux/CentOS/7/isos/x86_64/CentOS-7-x86_64-Minimal-1511.iso
を選択した。600MByte強

インストール作業

VirtualBOXを起動する。

VM作成

  1. 新規を選択
  2. 名前を入力。今回はcentos7-railsにする
  3. タイプはLinux,バージョンはOther Linux(64bit)
  4. メモリーサイズは、とりあえず2GByte
  5. 仮想ハードディスクを作成する
  6. タイプはVDI
  7. 可変サイズ:とりあえず16GByte

インストール

  1. 作成したcentos7-railsを起動する
  2. 起動ディスクを求められるので、フォルダアイコンを選択して、ISOを選ぶ
  3. インストールメニューが表示されるので、Install CentOS 7を選ぶ
  4. 言語は日本語を選ぶ
  5. 「ネットワークとホスト名」から、イーサネットを「オン」にしておく
  6. その他、!マークがついているところを確認する
  7. 「インストールの開始」ボタンを押す
  8. インストール中にユーザーを作っておく
  9. ユーザー名とパスワードをvagrantに。
  10. 「管理者にする」のチェックボックスを有効に
  11. 「高度」ボタンを押して、wheelグループが設定されていることを確認する
  12. 完了を2回押す(パスワードが短いので)
  13. インストール完了を待つ
  14. 再起動ボタンが表示されたら押す

sshのセットアップ

  1. OSが起動したら、vagrantユーザーでログインする
  2. 適当にPingを打ってみて、ネットワークの疎通を確認する
  3. vagrantの公開鍵を登録する
$ mkdir ~/.ssh
$ chmod 700 ~/.ssh
$ sudo yum install wget
$ wget https://raw.github.com/mitchellh/vagrant/master/keys/vagrant.pub -O ~/.ssh/authorized_keys
$ chmod 600 ~/.ssh/authorized_keys
  1. パスワードなしでsudoできるようにするための設定(必須)
$ sudo visudo
# Defaults requiretty <- この行をコメントアウト
~
%whell ALL=(ALL) ALL
vagrant ALL=(ALL) NOPASSWD:ALL <- この行を追加

(:wq でセーブして終了)

まっさらな状態でBOX化したい場合は、ここからBOX作成の手順に移る。
今回はRailsまで入れた状態にしたいので、このまま作業を続ける

Rubyのインストール

Rubyのインストールは、rbenvから行う。
gemのインストール時にsudoでやりたくない場合は、ホーム以下にrbenvをインストールする。
bundle install のインストールフォルダを手動設定したくない場合も同様

$ sudo yum -y update
$ sudo yum -y install git gcc gcc-c++ openssl-devel readline-devel
# gitはrbenvを落としてくるのに使って、それ以外はRubyのビルドに必要
$ cd /usr/local
$ sudo git clone git://github.com/sstephenson/rbenv.git
$ sudo mkdir rbenv/plugins
$ cd rbenv/plugins
$ sudo git clone git://github.com/sstephenson/ruby-build.git
$ sudo visudo -f /etc/sudoers.d/rbenv <- 新規作成
Defaults !secure_path
Defaults env_keep += "PATH RBENV_ROOT"
(:wqで終了)
$ sudo vi /etc/profile.d/rbenv.sh <- 新規作成
export RBENV_ROOT="/usr/local/rbenv"
export PATH="${RBENV_ROOT}/bin:${PATH}"
eval "$(rbenv init -)"
$ source /etc/profile.d/rbenv.sh
$ cd
$ rbenv install -l | less <- インストール可能なバージョンが表示される
# 2.2.4あたりを入れることにする
$ sudo rbenv install 2.2.4
# 待つ
# 結構待たされるけど、あきらめずに待つ
$ sudo rbenv global 2.2.4
$ sudo rbenv rehash
$ ruby --version
# ruby 2.2.4p230 ~ と表示されたらOK
$ sudo chmod 755 /usr/local/rbenv
# このままだとパーミッションの警告が出るので、755にしておく

railsのインストール

$ sudo gem install rails --no-document
# ドキュメントが必要なら --no-document は外せばいいけど、時間かかりすぎる。--no-ri は deprecated なので使わない

プロジェクト作って、rails s -b 0.0.0.0をやってみて、ホストからアクセスできれば成功

ホストからアクセスできない場合

  1. VirtualBOXの設定で、ネットワークアダプタ2を有効にして、ホストオンリーアダプターに設定。
  2. ポートフォワーディングで、ゲスト、ホストともにポートを3000に設定
  3. ブラウザで、http://localhost:3000 にアクセスして確認

BOX化

後始末

  1. BOX化する前に、rails確認用のディレクトリは削除しておく
  2. $ sudo yum cleanでキャッシュをクリア
  3. VMをシャットダウン

BOX化作業

  1. VBoxManageにパスが通っている必要があるので、PATHにVirtualBoxのインストールフォルダを追加しておく
  2. cmdプロンプトを開く
  3. > vagrant package --base centos7-railsを実行

BOXを使ってみる

  1. > vagrant box add centos7-rails package.box
  2. > vagrant box listで、centos7-railsが追加されていればOK
  3. > vagrant init centos7-rails これを実行したディレクトリにインストールされる.
  4. > vagrant up # 今回は、SSH keyがセキュアじゃないので、置き換えるよと言われて置き換えられた。
  5. > vagrant sshでアクセスしてみて成功したら完了
  6. sshが入っていなければ、rloginなどで、vagrant sshしたときに表示される以下の情報をもとにログインする
Host: 127.0.0.1
Port: 2222
Username: vagrant
Private key: C:/Users/xxxxxx/.vagrant/machines/default/virtualbox/private_key

さっき設定したホストオンリーアダプタの設定は忘れられているので注意
vagrant initを実行したディレクトリに作られたVagrantfile

config.vm.network :forwarded_port, guest: 3000, host: 3000

を追加して、vagrant reloadを実行する

その他メモ

ホストとゲストでフォルダを共有するために、VirtualBox guest addon をインストールする

1. VirtualBOXランチャーで、該当するVMを「表示」させる

2. デバイス - Guest Additions CDイメージの挿入を選択する

$ sudo mkdir /mnt/cdrom
$ sudo mount -r /dev/cdrom /mnt/cdrom
$ cd /mnt/cdrom
$ sudo yum -y install gcc make kernel-devel
$ sudo ./VBoxLinuxAdditions.run

3. インストールが終わったらvagrant reloadを実施。

これで、Vagrantfileが置いてあるフォルダが、ゲストの/Vagrantと共有される
$ ln -s /home/vagrant/rails /Vagrant/railsとでもしておき、作業フォルダを共有しておく

vagrant sshを実行するために

sshクライアントが必要なので、cygwin入れて、sshも入れておく
cygwin/binをPATHに追加しておく
/c/~ って何?とエラーを吐くはずなので、
ln -s /cygdrive/c/ /cと、シンボリックリンクを張っておく

Rsync Synced Folder

Rsync synced folderを使おうとしたけど、vagrant rsync-autoしてもゲスト側で生成、編集したファイルは同期されず、ホスト側からの一方通行なので、今回やりたいこととはマッチしていなかった。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
2
Help us understand the problem. What are the problem?