##はじめに
前回書いた記事「VirtualBoxを使って、LAMP環境の構築」の続きです。
タイトル通りVirtualBox内にLaravelをインストールしてホストブラウザから確認できるようにしたいと思います。
ついでに2つプロジェクトを作成し、バーチャルホストの設定をして、1つのWebサーバーで複数のホスト名を同時運用できるようにします。
##環境
前回からそのまま
CentOS7.*
apache2.*
MySQL5.7.*
PHP7.1.*
vagrant不使用
Laravel5.6
##Laravelのプロジェクト作成
今回apacheでlaravelを動かしたいのでapacheドキュメントルートでプロジェクト作成。
#ドキュメントルートに移動
cd /var/www/html/
#バージョン指定して、プロジェクトを作成
composer create-project --prefer-dist laravel/laravel=5.7 プロジェクト名
composer create-project --prefer-dist laravel/laravel=5.7 プロジェクト2名
global requireで、グローバル環境にlaravelのインストーラをインストールする方法もありますが、
プロジェクトごとにライブラリのパッケージを管理できるcomposerのメリットが薄くなってしまうので今回は使用しません。
##書き込み権限変更
このままApacheで起動しても、「The stream or file "/var/www/html/プロジェクト名/storage/logs/laravel.log" could not be opened in append mode: failed to open stream: Permission denied」というエラーがでるので、
storageディレクトリに対して、apacheへ書き込み権限を付与
sudo chmod -R 777 app/storage
sudo chmod -R 777 bootstrap/cache
##SELinuxをOFFに
# 都度、SELinuxをoffにするか
sudo setenforce 0
# 設定ファイルを書き換えて、selinux無効化してOSを再起動
vi /etc/selinux/config
SELINUX=disabled
##Laravelプロジェクトを、apacheで動かす
vi /etc/httpd/conf/httpd.conf
#以下を追記
# バーチャルホスト設定:1つのWebサーバーで複数のホスト名を運用するために設定。
# 指定したホスト名やIPアドレスだけに設定するディレクティブ。
<VirtualHost *:80>
# アクセスされるホスト名
ServerName test.com:80
# クライアントからのリクエストに対して対応するコンテンツを配置しておく場所
# laravelプロジェクトのpublicディレクトリを指定する。
DocumentRoot /var/www/html/プロジェクト名/public
# DocumentRootと同じ場所を指定。
<Directory "/var/www/html/プロジェクト名/public">
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /var/www/html/プロジェクト2名/public
ServerName test2.com:80
<Directory "/var/www/html/プロジェクト2名/public">
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
変更したらApacheの再起動をする。
systemctl reload httpd
参考サイト:
https://note.com/mihi_kul/n/n2160a2e98b4b
##hostsの設定
C:\Windows\System32\drivers\etc
にあるhostsファイルを開きます。
管理者権限を使ってファイルを開かないと保存できないので注意。
左側に仮想マシンのIPアドレスを、右側に紐づけたいホスト名を記載してください。
例:
IPアドレス ホスト名
192.168.56.101 test.com
192.168.56.101 test2.com