2019年8月9日
環境構築自体は以下の記事を見てね。
centos7にLAMP環境を作ってみる
Laravelをインストールしてみる
#Laravelをapache配下にインストールする
apacheで動かすため、Laravelを/var/www配下にインストールする。
$ cd /var/www ← /var/wwwに移動
$ composer create-project laravel/laravel laratest ← 「laratest」というプロジェクトを作成
「application key set successfully.」まで表示されれば完了。
#apacheにvirtual hostを設定する
なんとなくapache全体をlaravel用にしてしまうのがあれなので、virtual hostの設定をして、laratest用のサブドメインを設定する。
###virtual host用のconfファイル作成
/etc/httpdの下にvirtual host設定用のconfファイルを格納するディレクトリを作成する。
# mkdir /etc/httpd/vhost.d
virtual hostをconfファイルに設定する。
<VirtualHost *:80>
DocumentRoot /var/www/laratest/public
ServerName test.lalatest.com
</VirtualHost>
vhost.dに保存したconfファイルを取り込むように、httpd.confを変更する。
(最終行に追加)
include /etc/httpd/vhost.d/*conf
これで、vhost.dに格納されているconfファイルがhtpd.confに取り込まれるようになる。
httpd.confを変更したらhttpdを再起動すること。
本当はServerNameに設定したurlはDNSサーバーに設定しておいて、そのurlでVirtual hostにアクセスするのがいいのだが、そこまでするのも面倒なので、アクセスはipアドレス直でアクセスする。
本気で複数のurlに分けたい場合は、ポートを分けるかちゃんとDNSで名前解決するようにするかする。
##!!Attention!!logが書けない
上記設定でゲストOSのIPアドレスにアクセスすると、laravelにつながるが、「The stream or file "/var/www/laratest/storage/logs/laravel-2019-08-10.log" could not be opened: failed to open stream: Permission denied」こんなメッセージが出る。
LOGのパーミッションがよろしくないのね、と下記サイトを参考に修正したが、状況変わらず。
CentOS/Apache/Laravel使用時のpermission設定方法
この設定を追加したら、上手くアクセスできた。
laravel5のインストールで、ファイルパーミッションエラー
整理すると、たぶんこんな感じ。
・laravelの下記ディレクトリについて、アクセスできるグループとパーミッションを確認する。
./storage
./bootstrap/cache
それでもパーミッションエラーになる場合、selinuxに邪魔されている可能性大。
下記コマンドでコンテキストを設定する。
# semanage fcontext -a -t httpd_sys_rw_content_t "[laravel projectのディレクトリ]/storage"
# semanage fcontext -a -t httpd_sys_rw_content_t "[laravel projectのディレクトリ]/bootstorage/cahce"
ちなみに通常apacheで使用するディレクトリには、「httpd_sys_content_t」が設定されているが、上記のディレクトリには「httpd_sys_rw_content_t」を設定しないといけない。
しかしselinuxはろくなことしないな…
#アクセス確認
ゲストOSのipアドレスでアクセスすると、laravelのページが表示される。
#Appendix 複数のLaravel環境を動かいしたいとき
以下のサイトが参考になりました。
HomesteadでLaravelのプロジェクトをローカル開発環境に2つ作りたいが'homestead-7'は既に存在しているというエラーが出る解決済
Homesteadを使って複数のLaravelプロジェクトを作成する簡単な方法