■サーバ要件
以下が必要な要件で、この環境が整っている前提
ここにFTPアップロードでLaravel6を設置し、動作させる
これなら「レンタルサーバのApacheで、ファイルはFTP経由でしか更新できない」という場合にも対応できるはず
インストール 6.x Laravel
https://readouble.com/laravel/6.x/ja/installation.html
■テスト環境の作成
今回は、EC2上にテスト環境を作成するものとする
$ sudo su -
# amazon-linux-extras install ansible2 -y
# amazon-linux-extras install nginx1.12 -y
# amazon-linux-extras install php7.2 -y
以下のPlaybookを実行する。あらかじめ、公開ディレクトリは html から public に変更しておく
nginx_php7_mariadb
# cd /var/www
# mv main main_backup
# mkdir main
# chown ec2-user. main
SFTPの ec2-user ユーザで以下を作成し、ブラウザからアクセスして動作を確認する
/var/www/main/public/index.php
■プロジェクトの作成
まずはローカルのVagrantなど、環境の整った場所でプロジェクトを作成する
このファイルを後ほどテスト環境に設置する
$ sudo su -s /bin/bash - nginx
$ /var/www
$ composer create-project --prefer-dist "laravel/laravel=6.0.*" main
■プログラムの設置と動作確認
あらかじめ作成しておいたプロジェクトを、テスト環境にSFTPの ec2-user ユーザでアップロードする
vendorフォルダのアップロードには、高速な回線でも10分程度かかった(アップロード先によっては30分程度かかった)
それ以外はすぐにアップロードできた
この状態でブラウザからアクセスすると、以下のエラーが表示された
UnexpectedValueException
The stream or file "/var/www/laravel/storage/logs/laravel-2020-08-11.log" could not be opened: failed to open stream: Permission denied
/var/www/main/storage
のディレクトリのパーミッションを777にする(下層含めて)
また、ファイルパーミッションを666にする(下層含めて)
これでLaravelが動作した
■artisanの実行
一例だが、以下のPHPプログラムを作成し、ブラウザからアクセスするとartisanを起動できる
ただし重い処理を行うと、nginxやApacheでタイムアウトになる可能性があるので注意
<?php
echo shell_exec('cd ..;php artisan --version;');
■プログラムの更新
・ファイルはFTPで上書きアップロードすることになる
・追加で「compsoer install」が必要な場合、まずは vendor_20200811 などにアップロードし、
完了したら vendor と vendor_20200811 の名前を入れ替え、その状態で致命的なエラーにならないか確認するか
・マイグレーションやキャッシュの削除は、上記の方法でartisanを実行して対応するか
■メモ
Laravelアプリケーションをレンタルサーバーで動作させる - Qiita
https://qiita.com/hitotch/items/5c8c2858c883e69cd507
ロリポップでLaravelをSSHを使わずにFTPでアップロードする - forget for get
http://lightwill.hatenablog.com/entry/2019/10/04/155314
Laravelをさくらインターネットのレンタルサーバにデプロイ・アップロードする方法をまとめてみた | Arrown
https://arrown-blog.com/laravel-sakura-deploy/