どうも、直人です。
本日は、
Virtualbox+VagrantでLaravelの開発環境を構築した際に躓いたこと
というテーマで4つピックアップしてお伝えしていければなと思っております。
#執筆背景
はじめに、執筆背景です。
私は、現在laravelフレームワークについて学習してます。
開発環境は、Homesteadを利用して構築しており、laravelのバージョンは6.xを使用しております。
この記事では、そんなlaravel初心者の私が
Homesteadを利用してlaravelの開発環境を構築する際に躓いたところ
をまとめてみました。
なお、本記事は、躓いた点に焦点を当てた記事となっており、
環境の構築方法については本記事では触れないため、
構築方法について知りたい方は他の記事を参照してください。
#躓いたこと4選
以下から、躓いたところとその解決方法を示していきます。
##VirtualBoxのインストールでインストールできませんでしたと表示される
VurtualBoxのインストーラーを公式サイト(https://www.virtualbox.org/wiki/Downloads)
からダウンロードしたのち、インストールを試みたところ、
インストールできませんでした
と表示される事案が発生した。
この原因は、
macのセキュリティとプライバシーメニューの設定でVirtualBoxのインストールがブロックされたため
である。
これは、以下の手順で対処することができます。
・ macのシステム環境設定からセキュリティとプライバシーのページを開く
・ 一般のタブを開くと"VirtualBox.pkg"は回発元を確認できないため、開けませんでしたと書かれているため、このまま開くボタンを押す
・ VirtualBoxのdmgファイルを開き、VirtualBoxをアンインストールする
・ VirtualBoxを再度インストールする
##Vagrant upコマンドでThe path to your private key does not existと表示される
Vagrantを起動させようと、ターミナル上で
$ vagrant up
コマンドを打つと、
Check your Homestead.yaml (or Homestead.json) file, the path to your private key does not exist.
と表示されてしまい、Vagrantを起動することができなかった。
これは、
ssh認証鍵を作成していないことが原因で起こるエラーです。
なので、ssh認証鍵を作成する必要があります。
手順としては、まずターミナルで以下のコマンドを打ち込みます。
$ cd ~/.ssh/
$ ssh-keygen -t rsa -f 任意のfile名
上記のコマンドは、
まず~/.ssh/ディレクトリに移動したのち、その中に任意のファイル名をつけたssh認証キーを生成する
という内容です。
上記のコマンドを打つと、
Enter file in which to save the key
と聞かれるのでそのままEnterキーを押します。
すると、
Enter passphrase
と聞かれるので設定したいパスワードを入力します。
ssh認証鍵を作成し終えたら、以下のコマンドで、Homesteadディレクトリに移動し、Homestead.yamlファイルを開きます。
$ cd Homestead
$ vim Homestead.yaml
Homestead.yamlファイルの以下の部分を先ほど作成したssh認証鍵がある場所(authorizeは公開鍵、keysは秘密鍵の場所)に指定します。
authorize: ~/.ssh/任意のfile名.pub
keys:
- ~/.ssh/任意のfile名
再度、以下のコマンドでvagrantを起動させると無事起動します。
$ vagrant up
##laravel new app_nameコマンドが失敗する
ターミナル上で、
laravel new app_name
コマンドを打って、app_nameという名前のプロジェクトディレクトリーを作成しようと試みるも失敗した。
この理由は、
Homestead.yamlで指定された場所にディレクトリが作成されておらず、ホスト側とゲスト側で同期できなかったため
である。
folders:
- map: ~/project/laravel/
to: /home/vagrant/laravel/
そのため、laravelディレクトリをHomestead.yamlで指定された場所(この場合、ローカル環境では/projectの下、仮想環境では/home/vagrantの下)に作成して、以下のコマンドで設定を反映させた。
$ vagrant reload --provision
その後、vagrant上で以下のコマンドを打ち、laravelディレクトリに移動し、
$ cd laravel
以下のコマンドを実行すると、appプロジェクトフォルダを作成することができた。
$ laravel new app_name
##Laravelの初期画面がブラウザで表示されない
Homestead.yamlの設定を終え、laravelのトップ画面にアクセスしようと、
homestead.laravel
をブラウザのurlに打ち込むと、アクセスすることができなかった。
この原因は、
Webサーバーに参照させるパスを、Projectディレクトリの配下にあるpublicディレクトリに指定していなかったため
であった。
webサーバーに参照させるパスは、以下の部分で指定することができます。
以下の変更前の設定では、
homestead.laravel
がクライアントから送信されたときにwebサーバーは
/home/vagrant/laravel/app_name
を参照するように設定していました。
sites:
- map: homestead.laravel
to: /home/vagrant/laravel/app_name
php: "7.4"
これを、
homestead.laravel
がクライアントから送信されたときにwebサーバーは
/home/vagrant/laravel/app_name/public
を参照するように変更しました。
sites:
- map: homestead.laravel
to: /home/vagrant/laravel/app_name/public
php: "7.4"
ちなみに、上記の設定でもlaravelの画面が表示されない場合は、以下の手順で解決する場合がありますのでヒントになればなと思います。
まず、ローカル環境で、/etcディレクトリに移動し、hostsファイルを開きます。
$ cd /etc
$ vim hosts
hostsファイルを開くと、以下のような画面がでてきます。Homestead.yamlファイルに書いてあったhomesteadのipアドレスとそのときのドメインを以下の例のように追記してみてください。
##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting. Do not change this entry.
##
127.0.0.1 localhost
…(略)
192.168.10.10 homestead.laravel(例)
ip: "192.168.10.10" ←ipアドレス
…(中略)
sites:
- map: homestead.laravel ←ドメイン
#まとめ
環境構築は、躓くポイントが沢山あるため、自分も含めプログラミング初心者の方はプログラミングに入る前に挫折してしまいがちです。
また、ベテランエンジニアの方でもいざ環境構築を久しぶりにしてみると
「あれ?」
と思うようなポイントが散りばめられていると考えています。
なので、環境構築をする際には、自分がやっている設定や設定過程で発生したエラーが何を意味しているのかをしっかりと理解する必要があると考えています。
最後になりますが、この記事が、Virtualbox+Vagrant+Homesteadでlaravelの開発環境を構築しようと試みている人に少しでも役に立てばと思ってます。