laravel, S3 및 stripe 도입시의 heroku 배포에 대해(비망록)
게시 경위
S3과 clearDB를 사용한 heroku 배포를 실시했습니다만, 집어넣는 것도 매우 많았으므로 비망록으로서 투고합니다.
개발 환경
laravel5.8
stripe:laravelcashier10
대근의 흐름
①heroku 도입
②clearDB의 도입(stripe를 구현의 경우)
③S3의 도입(화상 투고 기능을 실장의 경우)
이번에는 ②③을 메인에 설명해 갑니다.
①heroku 도입
h tps://유노코로. 코 m / wp / 엔트리 / ぁらゔぇl 쿠에 st-6 / # 헤로 쿠
이쪽의 기사를 정말로 알기 쉽기 때문에 추천입니다.
이번 설명의 주목적이 아니므로 생략합니다.
②clearDB의 도입(stripe를 구현의 경우)
stripe를 도입하고 있는 경우, DB 작성시
heroku run php artisan migrate --seed
할 때 다음 오류.
SQLSTATE[42704]: Undefined object: 7 ERROR: collation "utf8mb4_bin" for encoding "UTF8" does not exist at character 57 (SQL: alter table "users" add column "stripe_id" varchar(191) collate "utf8mb4_bin" null, add column "card_brand" varchar(191) null, add column "card_last_four" varchar(4) null, add column "trial_ends_at" timestamp(0) without time zone null)
한마디로 stripe 도입시에, users 테이블에 추가된 컬럼 「stripe_id,card_brand,card_last_four,trial_ends_at」가 불편을 일으키고 있습니다.
htps : // 기주 b. 코 m/ぁらゔぇl/카시에 rst 리페/이스에 s/747
위의 기사 (영어)를 보면,
이번 개발에서
local환경→DB:mysql
heroku 환경 → DB : pqsql (기본 mysql은 사용할 수 없기 때문에)
로 이행한 것이 원인인 것 같았습니다.
그래서 heroku 환경에서도 DB : mysql을 사용할 수있는 clearDB를 도입했습니다.
ClearDB란?
Heroku에서는 ClearDB라는 클라우드 서비스 MySQL을 활용할 수 있습니다. "ignite"라고 불리는 데이터 용량 5MB의 최소 구성이면 무료로 사용할 수 있으므로, 이쪽을 이용해 갑니다.
ClearDB 배포 흐름
1. heroku에서 신용 카드 설정.
※ 초과하지 않는 한 청구는 되지 않습니다.
2. ①에서 작성한 heroku의 DATABASEURL을 경합하지 않도록 삭제.
heroku addons:destroy heroku-postgresql -a <アプリ名>
3.ClearDB 애드온을 추가, 무료 프레임 ignite의 사용을 지시.
heroku addons:create cleardb:ignite
표시 결과mysql://[ユーザ名]:[パスワード]@[ホスト]/[DB名]?reconnect=true
4. 표시 결과의 환경 변수에 데이터베이스 설정 추가
heroku config:set \
DB_CONNECTION=mysql \
DB_HOST=[ホスト] \
DB_DATABASE=[DB名] \
DB_USERNAME=[ユーザ名] \
DB_PASSWORD=[パスワード]
5. 데이터베이스 설정(마이그레이션 및 시딩)
heroku run php artisan migrate --seed
6. heroku에 push
git push heroku [送りたいbranch名]:master
이제 웹 앱을 확인하고 표시되면 OK.
③S3 도입
웹 앱을 보면 아래와 같이 사진이 표시되지 않는다.
local 환경에서는 storage>app>public 아래에 이미지를 저장했지만,
넷 환경에서는, aws의 S3를 이용하여 화상의 보존, 표시를 하기로 했다.
도입 흐름
1. AWS IAM 사용자로부터 다음 코드를 받으세요.
액세스 키 ID
비밀 액세스 키 메모
※나중에 사용.
2.S3 버킷을 만듭니다.
S3으로 이동하여 아래 이미지의 버킷 만들기를 클릭하여 만듭니다.
3. 다음을 설치.
Laravel의 파일 스토리지와 S3를 연계composer require aws/aws-sdk-php
composer require league/flysystem-aws-s3-v3
4.Heroku의 환경 변수를 각각 설정.
heroku config:set AWS_ACCESS_KEY_ID='AWSで作成したAccess key ID'
heroku config:set AWS_SECRET_ACCESS_KEY='AWSで作成したシークレットアクセスキー'
heroku config:set AWS_DEFAULT_REGION='作成したバケットのリージョン名'
heroku config:set AWS_BUCKET_BUCKET='作成したバケット名'
※도쿄라면 ap-northeast-1
5.controller 및 VIEW 설정 변경.
내 경우에는
controller의 다음 문장으로 s3의 public>temp에 이미지를 투고할 수 있는 설정을 기술.$temp_path = Storage::disk('s3')->put('public/temp',$path, 'public');
그리고 VIEW 파일의 다음 문장에서 s3의 $ temp_path 위치의 이미지를 표시라고 기술했다.<img src = "{{ Storage::disk('s3')->url($temp_path) }}" width="450px">
6.S3의 액세스 권한을 이하에 설정.
이제 다음과 같이 공개 액세스 객체를 읽는 것만이 예가되어 모든 사람 (everyone)에게 읽기 권한을 부여 할 수있었습니다.
완성
투고 이미지도 표시되게 되었다.
끝에
이번은 모처럼 정리한다면 처음 qiita 투고를 해 보았습니다.
이 쓰는 방법은 좋지 않아 등 있으면 댓글 주시면 다행입니다.
끝까지 봐 주신 분, 감사합니다.
참고 기사
Heroku 명령 모음
htps : // 코 m / 유 _ 에구치 / ms / 8cd53942b88b7 f2 fu cb
Heroku에서 MySQL을 사용하는 방법
htps : // bg. 나카무.ぃふぇ/포 sts/헤로쿠-mysql
Heroku에서 MySQL을 사용할 때 DATABASE_URL을 다시 씁니다.
htps : // 코 m / 소메야 나오키 / ms / 1167 816 9647 4464
「Heroku에 배포한 페이지의 이미지가 표시되지 않는다!?」를 해결하는 AWS S3 초간단 이용법
https://qiita.com/Hiroyuki-Hiroyuki/items/72aed73ff7c0f8508700#%E7%94%BB%E5%83%8F%E3%82%A2%E3%83%83%E3%83%97%E3%83 %AD%E3%83%BC%E3%83%89%E6%A9%9F%E8%83%BD%E3%82%92%E5%AE%9F%E8%A3%85
Reference
이 문제에 관하여(laravel, S3 및 stripe 도입시의 heroku 배포에 대해(비망록)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ryota100100/items/f79f32e8b47d4c765686
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
DB_CONNECTION=mysql \
DB_HOST=[ホスト] \
DB_DATABASE=[DB名] \
DB_USERNAME=[ユーザ名] \
DB_PASSWORD=[パスワード]
heroku config:set AWS_SECRET_ACCESS_KEY='AWSで作成したシークレットアクセスキー'
heroku config:set AWS_DEFAULT_REGION='作成したバケットのリージョン名'
heroku config:set AWS_BUCKET_BUCKET='作成したバケット名'
Reference
이 문제에 관하여(laravel, S3 및 stripe 도입시의 heroku 배포에 대해(비망록)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ryota100100/items/f79f32e8b47d4c765686텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)