Vagrant + CentOS7 + PHP7.3 でLaravelの開発環境を構築する
環境構築でいくつかハマってしまったのでメモ。
前提条件
VagrantとVurtualBoxがインストールされていることが前提です。
インストール方法は以前の記事参照。
ホストOSの操作はGit Bashで行っています。
vagrant、virtualboxのバージョンは最新で行ってください。
Vagrantの設定
まずはCentOS7のBoxを追加。
$ vagrant box add centos7
# その後作業ディレクトリで初期化します。
$ vagrant init centos7
Vagrantfileの下記箇所を編集。
# 下記のコメントアウトを外します。
# ポートを変更したい場合は値を適宜修正。
config.vm.network "forwarded_port", guest: 80, host: 8080
# ここで設定した値がブラウザでアクセスするIPアドレスになります。
config.vm.network "private_network", ip: "192.168.33.10"
# コメントアウトした上で修正します。
# 第一引数はVagrantfileを基準としたホストOSの相対パス
# 第二引数はゲストOSの絶対パスを指定します。
# ここでは第二引数に公開ディレクトリを指定しています。
config.vm.synced_folder "../data", "/vagrant_data"
↓
config.vm.synced_folder "./", "/var/www/html",
:owner => "vagrant",
:group => "vagrant",
:mount_options => ["dmode=777,fmode=777"]
ゲストサーバーへログイン
vagrantを起動
$ vagrant up
共有フォルダのマウントエラーが起こった場合
下記のエラーが出た場合は共有フォルダのマウントエラーが起こっています。
default: Checking for guest additions in VM...
default: The guest additions on this VM do not match the installed version of
default: VirtualBox! In most cases this is fine, but in rare cases it can
default: prevent things such as shared folders from working properly. If you see
default: shared folder errors, please make sure the guest additions within the
default: virtual machine match the version of VirtualBox you have installed on
default: your host and reload your VM.
default:
default: Guest Additions Version: 5.2.32
default: VirtualBox Version: 6.0
その場合はVirtualBoxとGuest Additionsのバージョンが合っていないので、下記のプラグインをインストールしてvagrantを再起動。
$ vagrant plugin install vagrant-vbguest
Installing the 'vagrant-vbguest' plugin. This can take a few minutes...
Installed the plugin 'vagrant-vbguest (0.19.0)'!
$ vagrant reload
もしくは
$ vagrant halt
$ vagrant up
sshで接続
下記のどちらかでsshログインします。
# そのままコマンド入力。
$ vagrant ssh
# もしくはTeratermなどのSSHクライアントでログイン。
# その場合は下記情報を入力すればログインできます。
user:vagrant
pass:vagrant
port:22
host:192.168.33.10 // Vagrantfileで設定したIPアドレスです。
ログインしたら必要なものをインストールします。
vagrantユーザーのホームディレクトリである/home/vagrantで行ってください。
# yumレポジトリのインストール
$ sudo rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
$ sudo rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
# PHPは必ず7.3系をインストールしてください。
# 7.0系だとcomposerインストール時、7.1系だとLaravelプロジェクト作成時にエラーになります。
$ sudo yum -y install --enablerepo=remi,remi-php73 php php-devel php-mbstring php-pdo php-gd php-xml php-mcrypt
# zipエクステンションのインストール
$ sudo yum -y install yum-utils
$ sudo yum-config-manager --enable remi-php73
$ sudo yum -y install php-zip
$ sudo yum -y install unzip
$ sudo yum -y install zip
# composerのインストール
$ curl -sS https://getcomposer.org/installer | php
$ sudo mv composer.phar /usr/local/bin/composer
# apacheの起動
$ sudo systemctl start httpd
$ sudo systemctl enable httpd
Vagrantfileで設定したipアドレスにアクセスしてみると、apacheの起動が確認できるはず。
Laravelのインストール
composerを使ってlaravel installerをインストールします。
$ composer global require "laravel/installer"
$ export PATH="$PATH:/home/vagrant/.config/composer/vendor/bin"
# 公開ディレクトリへ移動しLaravelの新規プロジェクトを作成します。
# project_nameの個所は任意の名前にしてください。
cd /var/www/html
$ laravel new project_name
最後にバーチャルホストの設定をします。
$ sudo vi /etc/httpd/conf.d/vhost.conf
# 下記をコピペし、必要個所を修正してください。
<VirtualHost *:80>
DocumentRoot /var/www/html/project_name/public
ServerName 192.168.33.10
AddDefaultCharset UTF-8
<Directory "/var/www/html/project_name/public">
AllowOverride All
</Directory>
</VirtualHost>
# confファイルの文法チェック。「Syntax OK」が表示されればOK。
$ httpd -t
# バーチャルホストの設定後はapacheの再起動をします。
$ sudo systemctl restart httpd
再度Vagrantfileで設定したipアドレスにアクセスし、Laravelの画面が表示されれば環境構築設定の成功です。

画面に500エラーが表示された場合
画面に500エラーが表示された場合、laravelのログを確認してください。
$ cd /var/www/html/project/storage/logs
[2019-10-22 03:16:02] production.ERROR: No application encryption key has been specified.
もしログに上記が表示されていた場合、encryption keyを設定すれば解消します。
# まずは.envファイルをコピーして作成
$ cp -p .env.example .env
# artisanでencryption keyを作成
# .envファイルのAPP_KEYに自動的に設定されます
$ php artisan key:generate
参照:https://qiita.com/ShirakawaMaru/items/af84a129cf98f3bc2580