Ruby on Railsの環境構築 その2 Ubuntuのインストール

よこのじ(@yokonoji_work)です。

Ruby on Railsの環境構築 その1 VagrantとVirtualBoxの理解とインストール」でVagrantとVirtualBoxのインストールを行いました。

引き続きRuby on Railsの環境を構築するために、今回はUbuntuのインストールを行い、Vagrantを立ち上げるところまで進めます。

Ubuntuのインストール

Ubuntuは、GNU/Linuxをベースとしたオペレーティングシステム(OS)です。このOSを仮想マシンのOSとして設定します。

UbuntuやCentOSはサーバーOSとしてよく利用されています。Ruby on Railsもサーバーで動作しますので、仮想マシンに入れるのは、本番環境と同じUbuntuかCentOSを入れることになります。

今回はデスクトップに作成した「rails」という名前のフォルダをプロジェクト用のフォルダとして進めていきます。

まずは、ターミナルを開いてcdコマンドでrailsフォルダまで移動します。「C:\Users\yokon\OneDrive\デスクトップ\rails」の部分は各々の環境で取得した該当フォルダのパスです。

$ cd C:\Users\yokon\OneDrive\デスクトップ\rails

次に初期化コマンドを入力します。

$ vagrant init bento/ubuntu-18.10

ここでは「bento/ubuntu-18.10」というBOXファイルを用いて初期化を行っています。BOXファイルは仮想マシンのテンプレート(設定情報をまとめたもの)で、これを使えばUbuntuのインストールを簡単に行えるようになります。

BoxファイルはVagrant Cloudで見つけることができます。UbuntuのBoxファイルはbentoというところが提供しているものが安定していて良いそうなので、bentoのものを使います。

Vagrant Cloudのbento

Bentoが提供するBoxのリストを見てみると、現在のところはubuntu-18.10が最新のようです。ここに載っているコマンドの記述方法が先ほどのコマンドというわけです。

ubuntu-18.10

(Centosの場合も、Vagrant Cloud「centos」で見つけることができます)

上記のコマンドを入力した後、「Vagrantfile」というファイルが生成されているかと思います。また、BOXファイルのリストを表示させて、bentoが入っていればOKです。

$ vagrant box list

 

Vagrantの立ち上げ

まずは、生成されたVagrantfileの編集を行いましょう。

次のような記述がコメントアウトされていますので、先頭の#を削除してコメントアウトを解除します。

config.vm.network "private_network", ip: "192.168.33.10"

この記述は、ホスト(ローカルマシン)から仮想マシンへ接続できるようにするためのもので、http://192.168.33.10 というURLでアクセスできるようになります(接続できるのはVagrantを立ち上げてから)。

vagrant ホストとゲストをプライベートネットワーク接続

Vagrantのネットワーク周りのあれこれ

なお、次のように上に1行追加すると、http://example.com のように好きなURLでアクセスできるようになります。

config.vm.hostname = "example.com"
config.vm.network "private_network", ip: "192.168.33.10"

好きなURLでアクセスする場合には次のコマンドを入力してプラグインを入手します。

$ vagrant plugin install vagrant-hostsupdater

これでVagrantを立ち上げる準備ができましたので、立ち上げてみます。

$ vagrant up

しばらく立ち上げの処理が走ります。

エラーが出たら・・・

環境構築中に以下のようなエラーが出ました。文字エンコーディングに関するエラーで、フォルダのパスに日本語表記があると出るエラーのようです。

C:/HashiCorp/Vagrant/embedded/gems/2.2.4/gems/vagrant-2.2.4/lib/vagrant/util/io.rb:32:in `encode’: incomplete “\x83” on Windows-31J (Encoding::InvalidByteSequenceError)

改善するには、該当のファイルを開いて下記のように記述を変更してください。

変更前:data << io.readpartial(READ_CHUNK_SIZE).encode("UTF-8", Encoding.default_external)
変更後:data << io.readpartial(READ_CHUNK_SIZE).encode("Windows-31J", Encoding.default_external)

改善方法はいくつかあるようで、「vagrant Encoding::InvalidByteSequenceError」で検索すると関連記事が見つかります。

処理が終わり、Virtual Boxを起動させると実行中に変わっているはずです(変わってなければ、もう一度vagrant upしてみてください)。

vagrant up後のVirtualBox

この状態でVagrantに接続(ログイン)します。

$ vagrant ssh

接続できたら、コマンドの待受表示がこのようになっているかと思います。

vagrant@vagrant:~$

なお、vagrantからの接続解除(ログアウト)は

$ exit

vagrant(仮想マシン)の停止(シャットダウン)は

$ vagrant halt

となっておりますので、覚えておきましょう。

 

今回は、UbuntuのインストールとVagrantの立ち上げまで行いました。

次の記事では、Rubyをプロジェクトごとに切り替えられるようにrbenvというツールをインストールします。