はじめに
laravelで制作したアプリをサーバーレス用ライブラリbrefを使い、AWSにデプロイしました。デプロイは、serverless frameworkがやってくれます。
ちなみに、参考にした先輩の記事はこちら。
Laravelのサーバレス用ライブラリbrefを使い、lambdaでhello world
PHP
https://qiita.com/umihico/items/64fcf159f68ebd866170
#アプリ作成とbrefインストール
$ composer create-project --prefer-dist laravel/laravel laravel-demo #プロジェクト作成
$ cd laravel-demo
$ composer require bref/bref #肝のbrefインストール
#編集するファイル
.env
.env
- SESSION_DRIVER=file
+ SESSION_DRIVER=array
+ VIEW_COMPILED_PATH=/tmp/storage/framework/views
config/logginf.php
'stack' => [
'driver' => 'stack',
- 'channels' => ['single'], # <= 削除
+ 'channels' => ['stderr'], # <= 挿入
'ignore_exceptions' => false,
],
app/Providers/AppServiceProvider.php
public function boot()
{
- //
+ if (!is_dir(config('view.compiled'))) {
+ mkdir(config('view.compiled'), 0755, true);
+ }
}
}
#serverless.ymlの編集
serverless.yml
service: laravel-demo
provider:
name: aws
region: ap-northeast-1
runtime: provided
plugins:
- ./vendor/bref/bref
package:
exclude:
- node_modules/**
- public/storage
- storage/**
- tests/**
functions:
website:
handler: public/index.php
timeout: 28 # in seconds (API Gateway has a timeout of 29 seconds)
layers:
- ${bref:layer.php-73-fpm}
events:
- http: 'ANY /'
- http: 'ANY /{proxy+}'
artisan:
handler: artisan
timeout: 120 # in seconds
layers:
- ${bref:layer.php-73} # PHP
- ${bref:layer.console} # The "console" layer
artisanコマンド用関数は、ローカルでしか実行しないならコメントアウトしても構いません。
#デプロイ
デプロイコマンドを叩く前に、必ずphp artisan config:clearしましょう。
$ php artisan config:clear
Configuration cache cleared!
$ sls deploy
これで完了です!
おわりに
サーバーレスフレームワークを利用すれば、サーバーを持つ必要がなく、サーバー代もかなり節約できるので、おすすめです。
参考記事