Help us understand the problem. What is going on with this article?

laravelのbref を利用し、lambda にデプロイする

はじめに

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

- 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

これで完了です!

おわりに

サーバーレスフレームワークを利用すれば、サーバーを持つ必要がなく、サーバー代もかなり節約できるので、おすすめです。

参考記事

https://bref.sh/docs/frameworks/laravel.html

soma_sekimoto
スキルセット: JS, jQuery, Bootstrap, Ruby, Rails, React.js, PHP, Laravel, Python, Serverless Framework, AWS, Docker
fiveneeds
酒 x ITで、お酒業界に風穴を開けるベンチャー企業です。
http://www.fiveneeds.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away