よこのじ(@yokonoji_work)です。
「Ruby on Railsの環境構築 その1 VagrantとVirtualBoxの理解とインストール」でVagrantとVirtualBoxのインストールを行いました。
引き続きRuby on Railsの環境を構築するために、今回はUbuntuのインストールを行い、Vagrantを立ち上げるところまで進めます。
Ruby on Railsの環境構築は、全4記事で構成されています。
Ruby on Railsの環境構築 その1 VagrantとVirtualBoxの理解とインストール
Ruby on Railsの環境構築 その2 Ubuntuのインストール
Ruby on Railsの環境構築 その3 rbenvとruby-buildとRubyのインストール
Ruby on Railsの環境構築 その4 RailsとMySQLのインストール そしてRails server
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のものを使います。
Bentoが提供するBoxのリストを見てみると、現在のところはubuntu-18.10が最新のようです。ここに載っているコマンドの記述方法が先ほどのコマンドというわけです。
(Centosの場合も、Vagrant Cloud「centos」で見つけることができます)
上記のコマンドを入力した後、「Vagrantfile」というファイルが生成されているかと思います。また、BOXファイルのリストを表示させて、bentoが入っていればOKです。
$ vagrant box list
[adchord]
Vagrantの立ち上げ
まずは、生成されたVagrantfileの編集を行いましょう。
次のような記述がコメントアウトされていますので、先頭の#を削除してコメントアウトを解除します。
config.vm.network "private_network", ip: "192.168.33.10"
この記述は、ホスト(ローカルマシン)から仮想マシンへ接続できるようにするためのもので、http://192.168.33.10 というURLでアクセスできるようになります(接続できるのは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に接続(ログイン)します。
$ vagrant ssh
接続できたら、コマンドの待受表示がこのようになっているかと思います。
vagrant@vagrant:~$
なお、vagrantからの接続解除(ログアウト)は
$ exit
vagrant(仮想マシン)の停止(シャットダウン)は
$ vagrant halt
となっておりますので、覚えておきましょう。
今回は、UbuntuのインストールとVagrantの立ち上げまで行いました。
次の記事では、Rubyをプロジェクトごとに切り替えられるようにrbenvというツールをインストールします。
Ruby on Railsの環境構築は、全部で4記事あります。
Ruby on Railsの環境構築 その1 VagrantとVirtualBoxの理解とインストール
Ruby on Railsの環境構築 その2 Ubuntuのインストール
Ruby on Railsの環境構築 その3 rbenvとruby-buildとRubyのインストール
Ruby on Railsの環境構築 その4 RailsとMySQLのインストール そしてRails server