Vagrant + CentOS7 + PHP7.3 でLaravelの開発環境を構築する

Laravel,Linux,PHPCentOS,PHP 7,Vagrant

 

環境構築でいくつかハマってしまったのでメモ。

 

 

前提条件

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