ローカル開発環境の構築 [Windows編] (全14回)

macOS をご利用の方は【ローカル開発環境の構築 [macOS編]】をご利用ください

Windows上にローカル開発環境を構築していく方法について見ていきます。

このレッスンでは Windows 10 / Vagrant 1.8.6 / PuTTY 0.67 / VirtualBox 5.1.8 / Cyberduck 5.2.0 を使用しています。

#01 ローカル開発環境を整えよう
2018年5月18日

Cloud9 のレッスンは古くなっているため、サポートを終了しております。

使い方につきましてはご自身で調べるようにしてください。

#02 VirtualBoxをインストールしていこう
2018年4月27日

以下のリンクからたどり、ご利用の OS にあわせてダウンロードしてみてください。

https://www.virtualbox.org/wiki/Download_Old_Builds

#03 Vagrantをインストールしていこう
2017年6月30日

現在 Vagrant のインストーラーは 32 bit 用と 64 bit 用に分かれています。

ご自身の Windows がどちらのバージョンなのか分からない場合は、

をご確認の上、ご自身の Windows に合ったインストーラーをダウンロードするようにしてください。

#05 仮想マシンを立ち上げよう
2017年12月20日

動画中で利用したコマンドは以下のとおりです。

なお、動画の最初に実施している vagrant-vbguest プラグインの導入はエラーを引き起こす可能性があるため、実施しないようにしてください。

# 今後複数の仮想マシンを作ることを想定して、それらをまとめるフォルダ(MyVagrant)を作る
mkdir MyVagrant

# MyVagrantに移動する
cd MyVagrant

# 仮想マシンを作るフォルダを作る(MyCentOS)
mkdir MyCentOS

# MyCentOSに移動する
cd MyCentOS

# 仮想マシン設定用のVagrantfileを作る
vagrant init bento/centos-6.8

# Vagrantfileを編集して仮想マシンのIPアドレスを192.168.33.10にする
(動画をご覧ください)

# 仮想マシンを起動する(少し時間かかります)
vagrant up

# 仮想マシンの状態を確認する
vagrant status
2018年6月20日

Windows で日本語のユーザー名を使用している場合、以下のようなエラーで vagrant コマンドが失敗する場合があります。

  • Windows-31J and UTF-8 (Encoding::CompatibilityError) ... というエラー
  • Vagrant failed to initialize at a very early stage ... というエラー

続きを表示する...

Windows-31J and UTF-8 (Encoding::CompatibilityError) ... というエラー

エラーメッセージ
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Importing base box 'bento/centos-6.8'...
C:/HashiCorp/Vagrant/embedded/gems/gems/childprocess-0.6.3/lib/childprocess/windows/process_builder.rb:43:in `join': incompatible character encodings: Windows-31J and UTF-8 (Encoding::CompatibilityError)
...
対処法

これは Windows のユーザー名が日本語の場合によく発生するエラーとなります。

まずは以下の記事を参考に Windows の環境変数の設定をおこなってみてください。

» 参考: Windowsの日本語名ユーザーにてvagrantを起動する方法 - Qiita

具体的には、

  • Cドライブの直下に vagrant_home のような英語名のフォルダを作成します。
  • ユーザー環境変数に VAGRANT_HOME を追加し、その値を C:\vagrant_home と設定します。(バックスラッシュは Windows では円記号となります。キーボード右上の円記号を打ち込むか、\ をコピーしてください。)
  • パソコンを再起動します。

次に VirtualBox を起動し、「設定」-「一般」にある「デフォルトの仮想マシンフォルダー」という項目を確認してみてください。

ここに日本語のユーザー名を含むパスが指定されていたら、Cドライブ直下に新しくアルファベットの名前のフォルダを作成し、そのフォルダのパスを指定するようにしてください。

» 参考: http://sutara79.hatenablog.com/entry/2015/06/28/104150

ここまで設定ができたら再度 PowerShell にて vagrant up を実施してみてください。

Vagrant failed to initialize at a very early stage ... というエラーの場合

エラーメッセージ
Vagrant failed to initialize at a very early stage:

The plugins failed to load properly. The error message given is shown below.

cannot load such file -- vagrant-vbguest
対処法

PowerShell で cd C:\ として C ドライブ直下に移動し、そこに
MyVagrant フォルダを作成するようにしてみてください。

それでも解決しない場合は、

vagrant plugin uninstall vagrant-vbguest

としてプラグインをアンインストールした上で、

vagrant init bento/centos-6.8

を実行してください。(vagrant-vbguest プラグインは必須ではありません)

2018年6月20日

vagrant up の実行時に「Timed out while waiting for the machine to boot.」で始まるエラーメッセージが表示された場合、ご利用のパソコンにて仮想化支援機能が無効になっていることが原因の可能性があります。

続きを表示する...

Timed out while waiting for the machine to boot. This means that
Vagrant was unable to communicate with the guest machine within
the configured ("config.vm.boot_timeout" value) time period.

If you look above, you should be able to see the error(s) that
Vagrant had when attempting to connect to the machine. These errors
are usually good hints as to what may be wrong.

If you're using a custom box, make sure that networking is properly
working and you're able to connect to the machine. It is a common
problem that networking isn't setup properly in these boxes.
Verify that authentication configurations are also setup properly,
as well.

If the box appears to be booting properly, you may want to increase
the timeout ("config.vm.boot_timeout") value.

この場合、以下のサイトなどを参考に BIOS の設定を確認してみてください。

https://teratail.com/questions/28619
http://qiita.com/amateurgrammer/items/21e4456b8318db877f5b

なお、上記サイト等にあるように BIOS の設定で仮想化支援機能を有効にしても、ウィルス対策ソフトによってはその設定を無効にしてしまう場合もあります。

Avast の場合
http://hatena.fut573.com/entry/20160218/1455792335

その場合は、ウィルス対策ソフトの設定で仮想化支援機能に関する項目を無効にしていただくか、ウィルス対策ソフト自体を一時的に終了させてから vagrant up を実施してみてください。

2018年6月20日

vagrant up の実行時に「Vagrant was unable to mount VirtualBox shared folders.」で始まるエラーメッセージが出る場合があります。このエラーが発生すると共有フォルダ機能が使えなくなりますが、レッスンでは利用していないためそのままでも問題ありません。

続きを表示する...

Vagrant was unable to mount VirtualBox shared folders. This is usually
because the filesystem "vboxsf" is not available. This filesystem is
made available via the VirtualBox Guest Additions and kernel module.
Please verify that these guest additions are properly installed in the
guest. This is not a bug in Vagrant and is usually caused by a faulty
Vagrant box. For context, the command attempted was:

mount -t vboxsf -o uid=500,gid=500 vagrant /vagrant

The error output from the command was:

/sbin/mount.vboxsf: mounting failed with the error: No such device
2018年3月15日

Windows 7 では vagrant up を実行しても何も表示されず止まったようになるケースが確認されています。

そうなった場合は Ctrl + c でコマンドを中断し、

  • VirtualBox はバージョン 5.1.30
  • Vagrant はバージョン 1.9.6

をインストールしてから再度 vagrant up を試してみてください。

Vagrant の古いバージョンは https://releases.hashicorp.com/vagrant/ から、VirtualBox の古いバージョンは https://www.virtualbox.org/wiki/Download_Old_Builds からダウンロードできます。

2018年2月22日

VBoxManage.exe がエラーとなる原因はいくつかあります。

主な原因として仮想マシンが正常に終了せず、異常停止している場合がありますので、まずは vagrant halt で仮想マシンを確実に終了させ、その後 vagrant up を試してみてください。

それでも解決しない場合は、一度 VirtualBox をアンインストールし、最新版の VirtualBox をインストールし直してみてください。

続きを表示する...

エラーメッセージの例 (1)
There was an error while executing `VBoxManage`, a CLI used by Vagrant
for controlling VirtualBox. The command and stderr is shown below.

Command: ["startvm", "0205901d-9668-44e7-94d0-ee4d5bd9306a", "--type", "headless"]

Stderr: VBoxManage.exe: error: Interface ('VirtualBox Host-Only Ethernet Adapter #2') is not a Host-Only Adapter interface (VERR_INTERNAL_ERROR)
VBoxManage.exe: error: Details: code E_FAIL (0x80004005), component ConsoleWrap, interface IConsole
エラーメッセージの例 (2)
Command: ["hostonlyif", "create"]

Stderr: 0%...
Progress state: E_FAIL
VBoxManage.exe: error: Failed to create the host-only adapter
VBoxManage.exe: error: Could not find Host Interface Networking driver! Please reinstall
VBoxManage.exe: error: Details: code E_FAIL (0x80004005), component HostNetworkInterfaceWrap, interface IHostNetworkInte
rface
VBoxManage.exe: error: Context: "enum RTEXITCODE __cdecl handleCreate(struct HandlerArg *)" at line 94 of file VBoxManag
eHostonly.cpp
2018年6月19日

今回「MyVagrant」というフォルダの中に「MyCentOS」というフォルダをさらに作成して、そのフォルダ上で vagrant コマンドを実行しています。

C:\Users\ユーザー名\MyVagrant\MyCentOS

というフォルダ階層になっています。

仮想マシンは vagrant init や vagrant up コマンドを実行したフォルダ上で作成されますので、もし別のフォルダ上で実行してしまうともう1つ別の仮想マシンが作成されてしまいます。

続きを表示する...

現在のフォルダを確認するには pwd というコマンドが利用できますので、今どこのフォルダにいるのか分からなくなった時には pwd コマンドで確認してみてください。

  • フォルダの階層構造を意識する
  • 仮想マシンはコマンドを実行したフォルダに作られる
  • 現在のフォルダを確認するには pwd コマンドを使う

このあたりのポイントを意識しておきましょう。

2018年2月22日

Vagrant 2.0.0 と VirtualBox 5.2 の組み合わせでは「No usable default provider could be found for your system.」というエラーメッセージが出てうまくいきません。

Vagrant を最新版にアップデートするか、VirtualBox 5.1.30 をインストールするようにしてください。

続きを表示する...

No usable default provider could be found for your system.

Vagrant relies on interactions with 3rd party systems, known as
"providers", to provide Vagrant with resources to run development
environments. Examples are VirtualBox, VMware, Hyper-V.

The easiest solution to this message is to install VirtualBox, which
is available for free on all major platforms.

If you believe you already have a provider available, make sure it
is properly installed and configured. You can see more details about
why a particular provider isn't working by forcing usage with
`vagrant up --provider=PROVIDER`, which should give you a more specific
error message for that particular provider.
2017年3月26日

PowerShell では、コマンドを入力するカーソルの左側に表示されている

PS C:¥Users¥taguchi>

といった文字列が、現在コマンドを実行しているディレクトリの位置を示しています。

上記の場合「Cドライブにある Users ディレクトリの中の taguchi ディレクトリにいる」という意味ですので覚えておきましょう。

動画中で cd コマンドを実行してディレクトリを移動するたびに、この文字列が変化しているのも分かるかと思います。

#07 仮想マシンにログインしてみよう
2018年7月25日

PuTTYで「Network error:Connection timed out」というエラーが出る場合は、以下の内容を確認してみてください。

接続しようとしている IP アドレスは正しいですか?

レッスンの通り、きちんと「192.168.33.10」と入力できているか確認してください。Vagrantfile で別の IP アドレスを指定した場合は、その IP アドレスと一致しているかどうか確認してください。

仮想マシンは起動していますか?

学習途中でパソコンをシャットダウンすると仮想マシンが停止してしまうことがあります。PowerShell を起動して、

cd MyVagrant
cd MyCentOS
vagrant status

を実行して仮想マシンのステータスを確認してみてください。結果内に「running」と表示されれば起動できています。

念のため vagrant reload コマンドで仮想マシンを再起動してみてもいいでしょう。

仮想マシンの IP アドレスは有効になっていますか?

http://dotinstall.com/lessons/basic_localdev_win_v2/38605 のレッスンにて Vagrantfile を編集し、IP アドレスを有効にする手順があります。

正しく編集して保存できているか確認してみてください。

なお、その手順を忘れて vagrant up を実行した後に Vagrantfile を編集した場合には、必ず vagrant reload で仮想マシンを再起動するようにしてください。

cd MyVagrant
cd MyCentOS
vagrant reload

※ 仮想マシンは MyVagrant¥MyCentOS のフォルダにて起動しているので vagrant コマンドを実行する際にはそのフォルダまで移動してあげる必要があります。

ping コマンドで確認

IP アドレスがきちんと設定されているかどうかは、PowerShell にて ping コマンドを実行することでも確認できます。

ping 192.168.33.10

タイムアウトしている場合は、正しく IP アドレスが設定されていません。

複数の仮想マシンが起動していませんか?

何度かレッスンを最初からやり直した場合、複数の仮想マシンが起動してしまっている場合があります。もしそれらの仮想マシンの両方に同じ IP アドレスが指定されていると、正しく接続ができなくなります。

vagrant global-status というコマンドを PowerShell にて実行してみてください。起動中の仮想マシンがすべて表示されます。

もし複数の仮想マシンが起動している場合は、不要な仮想マシンを vagrant halt 仮想マシンのID というコマンドで停止してみてください。なお「仮想マシンの ID」は vagrant global-status のコマンドで表示される結果の以下の部分となります。

vagrant-global-status.png

この例の場合は ID が「e55f551」と「81714d0」の仮想マシンが 2 台起動しています。下の仮想マシンを停止したければ、vagrant halt 81714d0 を実行すればOKです。

セキュリティソフトが通信を遮断していませんか?

ウィルス対策ソフトなどのセキュリティソフトがアプリケーションの通信を遮断し、仮想マシンに接続できない場合があります。

心当たりがある場合は、セキュリティソフトの設定で通信を許可するか、セキュリティソフトをオフにしてから試してみてください。

仮想化支援機能について

仮想化支援機能が使用できない場合、64bit の仮想マシンを作成することができません。「仮想化支援機構(VT-x/AMD-V)を有効化できません | Futurismo」などを参考に BIOS の設定を確認してみてください。

また、ウィルス対策ソフトによっては BIOS の設定を無効にする場合があります。
http://dotinstall.com/lessons/basic_localdev_win_v2/38605 の補足情報もご確認ください。

なお、以下の VBox.log の中に「VT-x is disabled in the BIOS for all CPU modes」もしくは「AMD-V is disabled in the BIOS」というメッセージが存在していたら、これに該当します。

VBox.log を探して「VT-x」や「AMD-V」を検索してみましょう。

それでも原因が分からない場合

プレミアム会員向けに試験提供している質問機能をご利用ください。

その際には以下の場所にある VBox.log というファイルを探し、ご質問時に添付してください。

C:\Users\(ユーザ名)\VirualBox VMs\(仮想マシン名)\Logs\VBox.log

もし仮想マシンが複数存在している場合は仮想マシン名を間違えないように、フォルダや VBox.log の更新日時などを手がかりに探してみてください。

なお、 VBox.log の中に「VT-x is disabled in the BIOS for all CPU modes」もしくは「AMD-V is disabled in the BIOS」というメッセージが存在していたら、1つ前の「仮想化支援機能」の問題に該当します。

VBox.log を探して「VT-x」や「AMD-V」を検索してみましょう。

#08 仮想マシンの設定をしよう
2018年7月22日

動画中で利用したコマンドは以下のとおりです。

# OSを最新状態にアップデート(時間かかります)
sudo yum -y update

# スクリプトを入手するためのgitをインストール
sudo yum -y install git

# gitを使ってアプリケーション設定用のスクリプトをダウンロード
git clone https://github.com/dotinstallres/centos6.git

# centos6フォルダができるのでそちらに移動
cd centos6

# スクリプトを実行(時間かかります)
./run.sh

# もろもろの設定を反映
exec $SHELL -l
2018年7月22日

ウィルス対策ソフトのようなセキュリティソフトが原因で、仮想マシンから外部ネットワークに接続できない場合があります。

  • yum update を実行すると Couldn't resolve host ... というエラーが大量に表示される
  • git clone を実行すると fatal: HTTP request failed というエラーになる

導入されている場合は、一度セキュリティソフトをオフにしてから試してみてください。

2018年7月22日

何らかの原因で DNS の名前解決が上手くできない場合、「Couldn't resolve host ...」というエラーメッセージが表示されます。

PuTTY で仮想マシンにログインした状態で、

sudo sed -i -e "s/^nameserver.*$/nameserver 8.8.8.8/" /etc/resolv.conf

と実行してからもう一度コマンドを試してみてください。なお、この設定は仮想マシンを再起動すると元に戻ってしまいます。仮想マシンを再起動後に同じエラーが発生した場合は、再度上記コマンドを実行してみてください。

#09 Cyberduckをインストールしよう
2016年12月6日
このレッスンではテキストエディタにAtomを使う前提で進めています。まだインストールしていない人は https://atom.io/ からダウンロードしておくと良いでしょう。
2018年5月18日

atom フォルダに atom.exe がある場合

最新版の Atom では AppData → Local → atom とたどると atom.exe というファイルがあります。

atom.cmd の代わりにこの atom.exe を指定しても大丈夫ですので、上手く動作しない場合はお試しください。

atom フォルダの中に bin フォルダが見つからない場合

動画の通りに atom フォルダを開いても、その中に bin フォルダが存在しない場合があるようです。

その場合は「app-」で始まるフォルダから resources → cli とたどると atom.cmd というファイルがありますので、そちらをCyberduckの環境設定にて指定してみてください。

その後、開きたいファイルを右クリック → エディタで編集 → デフォルト と選択すれば Atom で開くことができます。(ダブルクリックでは開かない場合がありますのでご注意ください。)

#11 PHPの学習をしてみよう
2018年2月22日

#08 仮想マシンの設定をしよう | ローカル開発環境の構築 [Windows編] のレッスンで実行した「./run.sh」のコマンドが途中でエラーになった可能性があります。

cd ~/centos6
./run.sh

と実行し、実行が完了したら php -v と打って PHP のバージョン情報が表示されるか確認してみてください。

2018年3月1日
一度 Cyberduck を終了し、もう一度起動してやり直してみましょう。
2017年6月7日
Edge ブラウザから 192.168.33.10:8000 の URL を開くには高度な設定が必要となり、すぐにはページを表示することができません。

Chrome など Edge 以外のブラウザを利用するようにしましょう。
2017年1月15日

php -S 192.168.33.10:8000 の「-S」が小文字になっている可能性があります。

「-S」は大文字で入力するようにしてください。

#14 hostsファイルを編集してみよう
2018年6月16日

ビルトインサーバーを起動していますか?

このレッスンでは、まず #11 PHPの学習をしてみよう と同じように PHP のビルトインサーバーを起動していなければなりません。起動していない場合は #11 の動画をもう一度ご覧になってみてください。

Apache のテストページが表示されたら

もし Apache のテストページが表示されたのなら、 URL の後ろに「:8000」をつけ忘れています。ビルトインサーバーを起動した状態で http://dev.dotinstall.com:8000 にアクセスしてみてください。

Windows7 に Vagrant をインストールしたいのですが、どの拡張子のものを使えばいいですか? PREMIUM - #03 Vagrantをインストールしていこう
Windows7(64bit) を使っています。 Vagrant のバージョン 1.9.6 をインストールしよう...
vagrant up を実行すると PowerShell の %PATH% が見つからないと表示されます PREMIUM - #05 仮想マシンを立ち上げよう
vagrant up を実行しようとすると次のようなメッセージが表示され、実行できません。 The execu...
CentOS 7 系を利用できないのはなぜですか? PREMIUM - #05 仮想マシンを立ち上げよう
bento の仮想マシンの中には bento/centos-7.3 なども公開されているようですが、どうして利用で...
vagrant up コマンドを実行したら「A Vagrant environment or target machine is required to run this command. ...」というエラーが出ます PREMIUM - #05 仮想マシンを立ち上げよう
vagrant up コマンドを実行したところ、次のようなエラーが出ました。解決方法を教えてください。 A ...
Vagrantfile は何で開けば良いでしょうか? PREMIUM - #05 仮想マシンを立ち上げよう
Vagrantfile を開こうとすると「このファイルを開く方法を選んでください」と出てきてしまい、どれで開けばいいの...
PuTTY Key Generatorがインストールされてしまったのですが正しいのでしょうか? PREMIUM - #07 仮想マシンにログインしてみよう
PuTTYを公式サイトからダウンロードし、インストールを行ったのですが、インストールされたのはPuTTYではなくPuT...
仮想マシンとパソコンの時刻とがずれてしまうのですがどうしたらいいですか? PREMIUM - #07 仮想マシンにログインしてみよう
仮想マシンとパソコンの時刻がずれてしまいます...。仮想マシンの時刻を直すにはどうしたらいいですか?
「sudo: yum: command not found」と表示されるのですが PREMIUM - #08 仮想マシンの設定をしよう
sudo yum -y update を実行しようとすると sudo: yum: command not fou...
Atom の隠しフォルダが見当たりません PREMIUM - #09 Cyberduckをインストールしよう
外部エディタの設定を行いたいですが Atom のフォルダが見つかりません。 動画と同じように PC の C ドラ...
「接続に失敗しました」というエラーで仮想マシンに接続できません PREMIUM - #10 仮想マシンにアクセスしてみよう
0:44のステップが終わったら、「接続に失敗しました」とのエラーメッセージがでます。何故でしょうか...。 ...
ブラウザを立ち上げたら、「このサイトにアクセスできません」と表示されてしまいます PREMIUM - #11 PHPの学習をしてみよう
ブラウザを立ち上げてもエラーになってしまいます。何故でしょうか。 ↑ 立ち上げたときのログです。 ...