2020年11月30日をもって CentOS 6 のサポート期間が終了したため、このレッスンで解説している CentOS 6 をベースとしたローカル開発環境の構築は実施不可となりました。ご了承ください。
なお、すでに構築済みの環境はそのままご利用いただけますが、新たなアプリケーションのインストール等は実施できません。
VirtualBox のインストールを進めていくと最後に以下のようなダイアログが表示される場合があります。
これを回避するには以下の手順にしたがってください。
ここまでできたら VirtualBox.pkg をダブルクリックして VirtualBox のインストールをもう一度実行してみてください。
最後に「インストールが完了しました。」と表示されれば大丈夫です。
最新の Vagrant は古いバージョンの macOS に対応していないため、
https://releases.hashicorp.com/vagrant/2.2.6/
から vagrant_2.2.6_x86_64.dmg をダウンロードしてインストールしてください。
また、Vagrant 2.2.6 は VirtualBox 6.1 に対応していないため、VirtualBox 6.0 系をインストールし直す必要もあります。
Vagrant をインストールしようとすると以下のようなダイアログが表示されてインストールができない場合があります。
このダイアログが表示されたら以下の手順にしたがってみてください。
あとは動画通りにインストールを進めてください。
macOS Catalina では zsh というプログラムが使用されているため、ターミナルの表示は以下のように「アカウント名@mbp ~ %」となります。
レッスンでは今後の説明を分かりやすくするためにコンピュータ名を変更していますが、変更は必須事項ではありません。
レッスン通りに実施しても変更できないケースがあるようですので、変更できない場合はそのまま進められて構いません。
動画中で利用したコマンドは以下のとおりです。
なお、動画の最初に実施している vagrant-vbguest プラグインの導入はエラーを引き起こす可能性があるため、実施しないようにしてください。
# ホームディレクトリに移動
cd
# 今後複数の仮想マシンを作ることを想定して、それらをまとめるフォルダ(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にする
sed -i '' -e 's/# config.vm.network "private_network", ip: "192.168.33.10"/config.vm.network "private_network", ip: "192.168.33.10"/' Vagrantfile
# 仮想マシンを起動する(少し時間かかります)
vagrant up
# 仮想マシンの状態を確認する
vagrant status
今回「MyVagrant」というフォルダの中に「MyCentOS」というフォルダをさらに作成して、そのフォルダ上で vagrant コマンドを実行しています。
/Users/ユーザー名/MyVagrant/MyCentOS
というフォルダ階層になっています。
仮想マシンは vagrant init や vagrant up コマンドを実行したフォルダ上で作成されますので、もし別のフォルダ上で実行してしまうともう1つ別の仮想マシンが作成されてしまいます。
現在のフォルダを確認するには pwd
というコマンドが利用できますので、今どこのフォルダにいるのか分からなくなった時には pwd
コマンドで確認してみてください。
pwd
コマンドを使うこのあたりのポイントを意識しておきましょう。
最新の Vagrant が古いバージョンの macOS に対応していないためと考えられます。
https://releases.hashicorp.com/vagrant/2.2.6/
から vagrant_2.2.6_x86_64.dmg をダウンロードしてインストールし直してみてください。
vagrant up を実行すると、
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.
というエラーメッセージが表示される場合があります。
これは VirtualBox の新しいバージョンがリリースされたばかりで Vagrant がそのバージョンにまだ対応してない時や、そもそも VirtualBox がインストールされていない時に表示されるエラーメッセージです。
新しいバージョンでこのエラーが発生したのなら古いバージョンの VirtualBox をインストールすることで回避できます。
vagrant up
を実行すると以下のようなエラーが出る場合があります。
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Box 'bento/centos-6.8' could not be found. Attempting to find and install...
default: Box Provider: virtualbox
default: Box Version: >= 0
The box 'bento/centos-6.8' could not be found or
could not be accessed in the remote catalog. If this is a private
box on HashiCorp's Vagrant Cloud, please verify you're logged in via
`vagrant login`. Also, please double-check the name. The expanded
URL and error message are shown below:
URL: ["https://vagrantcloud.com/bento/centos-6.8"]
Error: SSL certificate problem: self signed certificate in certificate chain
ウイルス対策ソフトのようなセキュリティソフトが影響している可能性がありますので、一旦セキュリティソフトをオフにしてから試してみてください。
VBoxManage.exe がエラーとなる原因はいくつかあります。
主な原因として仮想マシンが正常に終了せず、異常停止している場合がありますので、まずは vagrant halt
で仮想マシンを確実に終了させ、その後 vagrant up
を試してみてください。
それでも解決しない場合は、一度 VirtualBox をアンインストールし、最新版の VirtualBox をインストールし直してみてください。
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
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
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
# 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
2020年5月現在、MySQL 公式リポジトリの CDN サーバー間でキャッシュの不一致があるようで、MySQL のインストール時にエラーとなるケースが確認されています。
TASK [install mysql] ***
fatal: [127.0.0.1]: FAILED! => {"changed": false, "msg": "http://repo.mysql.com/yum/mysql-5.6-community/el/6/x86_64/mysql-community-client-5.6.47-2.el6.x86_64.rpm: [Errno -1] Package does not match intended download. Suggestion: run yum --enablerepo=mysql56-community clean metadata\nTrying other mirror.\n
こちらは使用するネットワークにより発生したりしなかったりすることが分かっています。
まずは可能であれば使用ネットワーク回線を変更してみてください。
また、以下のコマンドでバージョン 5.6.38 がインストールできるかどうか試してみてください。(以下のコードを7行まとめてコピー&ペースト。)
sudo yum clean all
sudo yum -y install mysql-community-common-5.6.38 \
mysql-community-client-5.6.38 \
mysql-community-libs-5.6.38 \
mysql-community-server-5.6.38 \
mysql-community-devel-5.6.38 \
mysql-community-libs-compat-5.6.38 \
mysql-utilities
インストールができたら、もう一度 ./run.sh を実行してみましょう。
上記の対策で解決できない場合、一旦ローカル開発環境の構築は保留して AWS Cloud9 での学習をおすすめしております。
ターミナルを起動し直すとホームフォルダに戻ってしまいますので、
cd
cd MyVagrant
cd MyCentOS
と実行して MyCentOS フォルダに移動した状態からレッスンを始めるようにしましょう。
なお、フォルダと仮想マシンの関係については #06 仮想マシンを立ち上げよう の補足情報「フォルダの階層構造を意識しましょう」も参考にしてみてください。
セットアップ終了後に何かコマンドを実行すると、
-bash: pyenv: コマンドが見つかりません
と表示されることがあります。
このメッセージが表示される場合はセットアップに失敗していますので、以下のコマンドでセットアップをやり直してみてください。
rm -rf ~/.pyenv
cd ~/centos6
./run.sh
exec $SHELL -l
ウイルス対策ソフトのようなセキュリティソフトをご利用の場合、Cyberduck の通信を遮断してしまう場合があります。
一旦セキュリティソフトをオフにしてから試してみてください。
動画ではホームフォルダに戻る手順を省略しています。
もしうまく php_lessons に移動できないときは、
cd
とだけ実行してホームフォルダに戻ってから、
cd php_lessons
と実行するようにしましょう。
#07 仮想マシンの設定をしよう | ローカル開発環境の構築 [macOS編] のレッスンで実行した「./run.sh」のコマンドが途中でエラーになった可能性があります。
cd ~/centos6
./run.sh
と実行し、実行が完了したら php -v
と打って PHP のバージョン情報が表示されるか確認してみてください。
何かコマンドを実行すると、
-bash: pyenv: コマンドが見つかりません
と表示されることがあります。
このメッセージが表示される場合はセットアップに失敗していますので、以下のコマンドでセットアップをやり直してみてください。
rm -rf ~/.pyenv
cd ~/centos6
./run.sh
exec $SHELL -l
何らかの原因でテンポラリファイルの作成に失敗していることが原因です。
Cyberduck を完全に終了させてからもう一度やり直してみてください。
php -S 192.168.33.10:8000
の「-S」が小文字になっている可能性があります。
「-S」は大文字で入力するようにしてください。
補足情報 Cloud9 のレッスンについて
Cloud9 については以下のレッスンを参考にしてみてください。
・AWS Cloud9入門 (全11回)
https://dotinstall.com/lessons/basic_c9_v2