メモ > 技術 > フレームワーク: Laravel6 > FTPアップロードで稼働させる
FTPアップロードで稼働させる
■サーバ要件
以下が必要な要件で、この環境が整っている前提。
ここに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/