gcchaan’s blog

ぐちゃーんのブログです

Windowsでの仮想マシン導入からRoR実行まで

環境構築した軌跡です。流れと、地味に困ったことをまとめました。 おかしな内容もあるかもしれない一方で初心者・学生仲間に有用と思います。

目的

以前の環境(XAMPPでCakePHP)しか知らないとわからないことが多かった。
GitHubは使っていたけれどgitって何状態だったので勉強。(自分はニワトリが先だったのだ)
vimを使いたい。Rubyがやりたい!Railsアプリを作る。

Web系のエンジニアはみーんなMac

2013年、私が会ったWeb系の勉強会・就活イベント・ベンチャーの方々、99割がマカーでした(まじ)。 モニターの背面にステッカーを貼っている人を観測^1Windowsっていないの!?と疑問に思いはじめる。 コマンドプロンプトの使い方すらわかっていなかったけれど、Linux系のOSではいろいろできるとの噂を聞いた。 当時Web系の人がVagrant便利!って言ってた。WindowsからVMLinuxを動かしている企業も少なくない。 サーバーにはLinuxが使われていることが多くて、Windowsで書いたコードを実行しようとすると動作に違いがあるらしい。

vagrantいれよう

仮想マシンの環境を作ったり壊したりできる。Ubuntu12.04を次のリンクを参考にして導入しました
Vagrant 入門 - Windows 上に Linux の仮想マシンを簡単に用意する - 僕は発展途上技術者

仮想マシン起動から終了までの流れ。

vagrant init [box名]
vagrant up
vagrant ssh
exit
vagrant halt
  • GitHubシェルを起動 ※GitShellのショートカットを消してしまったらGitHubのソフトでリポジトリを開いてから[tools]->[Open a shell here]
  • cdでフォルダ移動(1つのフォルダに1つの仮想マシンが対応しているようだ)
  • vagrant initは次回から必要なし
  • box名はvagrant box listで一覧表示できる
  • 設定ファイルであるVagrantfileを編集した後はvagrant reloadvagrant haltせずに再起動できる。
  • Vagrantfileを編集する際には改行コードを指定して保存すること。恐らくCR+LF。

コマンドラインを扱い慣れていなかったのでショートカットを少し説明
Alt + Space + eで[編集]までいけます、これに以下を続けて入力します。

  • k:選択開始
  • y:コピー
  • p:貼り付け

また、cdなどフォルダやファイルを指定するコマンドで最初の1文字を入力してtabを押せば候補を自動補完してくれます。 同じ文字から始まるファイルが存在した場合などコンピューターが判断できないときはもう一度tab押下することで候補を表示してくれます。

次に、Linuxコマンドにも慣れる必要がある。google検索とドットインストールさんで学ぶ。
$ apt-get installなどはパーミッションで怒られるので変にファイルのパーミッションを変えるでなく頭にsudoを付けて$ sudo apt-get installとする。

なおシェルには種類があってLinuxで標準のbashが使用されていた。
$ echo $SHELLで確認可能

何か実行しているときにキャンセルしたい場合は大抵Ctl + c

vimを入れよう

ここからRailsをインストールするまで1時間半かかりました。
デフォルトでvimがインストールされていないので導入します。
sudo apt-get install vim
vimの使い方もドットインストールさんで学べる。チートシートを探して印刷した。

RubyRuby on Railsの導入

rbenvというrubyのバージョンを管理してくれるものを使いました。
Railsには現在推奨されているRuby1.93を、他のプログラムにはRuby2.0を使えます。
下記記事を参考にさせていただきました。
Ruby on Rails 3.2 を Ubuntu にインストールする手順をかなり丁寧に説明してみました
rbenvで複数のバージョンのrubyを使用する環境を整える

Railsの実行

rails sをしてもホストマシンがゲストマシンにアクセスできるようにしなくてはブラウザで確認できません。
そこで仮想マシンのあるフォルダのVagrantfileを編集します。(必ずバックアップをっとっておこう)

  # Create a forwarded port mapping which allows access to a specific port
  # within the machine from a port on the host machine. In the example below,
  # accessing "localhost:8080" will access port 80 on the guest machine.
  config.vm.network :forwarded_port, guest: 3000, host: 3000

のように4行目を追加します。そしてvagrant reloadで再度読み込ませれば
http://localhost:3000/ にアクセスできるようになります。

用語等含め間違いございましたらご指摘お願いします。