"AWS Lambda에서 Laravel을 움직여 보았습니다"를 시도했습니다.
4570 단어 PHPserverless람다라라벨AWS
약간의 LT를 할지도 모르고, 그 자료를 대체로 이런 식으로 생각하고 있어요.
AWS Lambda에서 Laravel을 실행해 보았습니다.
Lambda Layer 만들기
그런 이유로 견본대로 먼저 시도한다. 과연, Lambda의 Layer 사용하는군요. 한번 해보고 싶었다.
하지만 어렵지. 너무 잘 모르겠어요. 손을 움직여 기억하자.
실은 프라이빗에서는 ec2 사용하지 않고, 어쩐지 작업할 때는 gcp의 무료 테두리로 하고 있었습니다만, 이것은 ec2의 amazon linux로 하는 것이 틀림없을 것 같기 때문에 t3.nano 만들어 해 봅니다.
떨어질 수도 있고, 스팟 인스턴스와 야를 사용해 볼까. 시도에.
통상의 온 디맨드 인스턴스는 0.0068USD/H인것 같지만, 0.0041로 입찰해 보았다. 월 400엔 안 갈 정도인가.
그리고, 무사히 작성할 수 있고 ssh도 할 수 있었으므로 진행해 가자.
그러자 뭔가 Layer는 할 수 있었다.
Lambda 함수가 동작하는 docker 환경이라고도 생각하면 좋을까.
견본 사이트의 SAM 템플릿을 만들고 싶습니다.
Lambda 함수 만들기
또한 호스트에 필요한 응용 프로그램을 넣어 둡니다.
$ sudo amazon-linux-extras install php7.2
$ sudo yum install -y php-cli php-mbstring php-mysqlnd php-opcache php-pdo php-pgsql zip
$ curl -sS https://getcomposer.org/installer | php
$ php composer.phar create-project --prefer-dist laravel/laravel laravel "5.7.*"
그리고 캐시를/tmp에 놓치는 것도 해 둔다.
bootstrap/app.php와 config/cache.php와 config/view.php를 편집하십시오. 그리고 config/session.php도.
그래서 sam cli를 넣으십시오. 덧붙여서 gcc나 cpp도 넣었습니다.
$ sudo pip install --user --upgrade aws-sam-cli
이것도 그대로.
sam package \
--template-file template.yml \
--output-template-file serverless-laravel.yml \
--s3-bucket <デプロイ用バケット名>
sam deploy \
--template-file serverless-laravel.yml \
--stack-name serverless-laravel \
--capabilities CAPABILITY_IAM
오류
그래서 deploy 할 수 있었지만.
[Sat Dec 29 00:53:40 2018] PHP Fatal error: require(): Failed opening required '/var/task/public/../vendor/autoload.php' (include_path='.:/usr/share/pear7:/usr/share/php7') in /var/task/public/index.php on line 24
모르겠지만 composer install이라든가 하면 좋을까. vendor 디렉토리 없음.
laravel directory에
{"message": "Internal server error"}
라고 친다.치면 phpunit가 어떻게 든지 말해져, 그렇게 말하자면 composer.json에서 지워도 괜찮은 composer install.
그리고, 그러면 다음은 이런 에러 나왔다.
bootstrap/cache에 쓸 수 없어, 라고 말하고 있는 것은 알지만… 이것을/tmp에 가져오려면 어떻게 하면 에이야로.
라고 생각했지만 artisan 실행하면 좋을 뿐이었다.
$ sudo php artisan key:generate
$ sudo php artisan config:cache
오, 이렇게 되면 앞으로 조금 없어진다.
분명히 view를 볼 때는 bootstrap/cache/config.php를 보는 것 같지만, 이것은 deploy 환경에서 artisan을 실행하면 deploy 환경의 path가 될 것 같다.
정공법이 아니겠지만, lambda의 환경과 path 맞추어 버릴까. .
$ mv laravel /var/task
$ ln -s /var/task ./laravel
$ cd !$
$ sudo php artisan config:clear
$ sudo php artisan config:cache
이것으로 어때!
괜찮아.
하지만 결국 해보았을 뿐이다.
vue.js라든지 사용하고 싶었지만 이미 졸립니다.
오늘은 여기까지-.
라고 할까 정직한 곳, laravel을 서버리스로 하는 의미는 그다지 모르겠습니다만. .
Reference
이 문제에 관하여("AWS Lambda에서 Laravel을 움직여 보았습니다"를 시도했습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ikegam1/items/b96a496751d448fffe6c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)