[2020년 12월판] heroku 배포 시 DB 설정 정리
10314 단어 경 6PostgreSQL
앱 자체를 배포하는 방법은 Heroku에 laravel 애플리케이션을 배포하는 방법에서 설명합니다.
↑ 기사의 순서 6(heroku의 config를의 설정)를 마친 근처에서 이 기사의 DB 설정을 하면 부드럽게 진행될 수 있을까 생각합니다.
거친 절차
① 애드온 설정
②heroku의 config 설정
③Laravel의 DB 접속 정보 설정
④ 로컬(자신의 PC)에 postgreql 설치
절차 1 애드온 설정
heroku의 추가 기능을 사용합니다.
1.Resources에서 add on 버튼을 클릭
2.Heroku Postgres 선택
3. 열린 화면에서 설치 버튼을 누릅니다.
postgresql 애드온 " ← heroku에 로그인 한 경우 여기에서 직접 액세스 할 수 있습니다.
4. 플랜 및 애드온(DB)을 사용하는 애플리케이션 선택
선택이 끝나면 Submit Order Form 버튼을 누릅니다.
2단계 config 설정
5.Config Vars 추가
4를 마치면 Dashboard의 Resource 탭으로 이동합니다.
여기에서는 DB에 접속하기 위한 config 설정을 해 나갑니다.
먼저 Postgresql의 DB 정보를 확인합시다.
Add-ons에서 Heroku Postgres 부분을 클릭
다른 탭에서 Datastores라는 화면이 열리므로 여기에서 Settings 탭 > Database Credentials를 클릭
여기에 표시되는 정보가 DB를 사용하기 위한 자격 증명이 됩니다.
다른 탭에서 DB 자격 증명을 표시한 상태에서 애플리케이션 측의 설정 탭 표시
Config Vars에 DB 연결 정보를 설정합니다.
추가로 설정하는 항목은 아래의 6개
DB_CONNECTION에 pgsql을 입력하는 것 외에는 다른 탭에서 열려있는 DB의 자격 증명을 입력합니다.
커맨드로 설정할 때는 ↓와 같은 방법이 됩니다.
DATABASE_URL=postgres://<USERNAME>:<PASSWORD>@<HOST>:5432/<DB名>
heroku config:set DB_CONNECTION=pgsql
heroku config:set DB_USERNAME=<USERNAME>
heroku config:set DB_PASSWORD=<PASSWORD>
heroku config:set DB_HOST=<HOST>(ec2...からはじまる)
heroku config:set DB_DATABASE=<DB名>
※ DB_PORTはデフォルト設定を使えるので指定してもしなくてもOK
// アドオンの一覧確認
heroku addons
Add-on Plan Price State
───────────────────────────────────────────── ───────── ───── ───────
heroku-postgresql (postgresql-colorful-44259) hobby-dev free created
└─ as DATABASE
3단계 config 설정
6. Laravel의 DB 연결 정보 설정
heroku의 연결 정보는 .env와 다르므로
config/database.php
를 다시 씁니다.이하, 공식 참조 보다 발췌
// 1.useの下に追加
$DATABASE_URL = parse_url(getenv("DATABASE_URL"));
return [
// 2. デフォルト値をpgsqlに書き換え
'default' => env('DB_CONNECTION', 'pgsql'),
// …
'connections' => [
// …
// 3.追加
'pgsql' => [
'driver' => 'pgsql',
'host' => $DATABASE_URL["host"],
'port' => $DATABASE_URL["port"],
'database' => ltrim($DATABASE_URL["path"], "/"),
'username' => $DATABASE_URL["user"],
'password' => $DATABASE_URL["pass"],
'charset' => 'utf8',
'prefix' => '',
'schema' => 'public',
'sslmode' => 'require',
],
// 元々の接続設定はコメントアウトで残しておくのを推奨
// 'pgsql' => [
// 'driver' => 'pgsql',
// 'url' => env('DATABASE_URL'),
// 'host' => env('DB_HOST', '127.0.0.1'),
// 'port' => env('DB_PORT', '5432'),
// 'database' => env('DB_DATABASE', 'forge'),
// 'username' => env('DB_USERNAME', 'forge'),
// 'password' => env('DB_PASSWORD', ''),
// 'charset' => 'utf8',
// 'prefix' => '',
// 'prefix_indexes' => true,
// 'schema' => 'public',
// 'sslmode' => 'prefer',
// ],
// …
],
// …
];
여기서 2의 'default' => env('DB_CONNECTION', 'pgsql')에 주목하십시오.
.env
가 있는 로컬 환경에서는, .env
의 DB 의 접속 설정에 mysql 를 지정하고 있으면, 「로컬에서는 mysql 의 DB, heroku 에서는 postgreql 의 DB」라고 하는 구분을 승수해 줍니다.로컬 heroku 함께 하나의 RDBMS를 사용할 때는 ↓과 같이 다시 작성해야합니다.
'pgsql' => [
'driver' => 'pgsql',
'host' => isset($DATABASE_URL["host"]) ?? null,
'port' => isset($DATABASE_URL["port"]) ?? null,
'database' => isset($DATABASE_URL["path"]) ? ltrim($DATABASE_URL["path"], "/") : null,
'username' => isset($DATABASE_URL["user"]) ?? null,
'password' => isset($DATABASE_URL["pass"]) ?? null,
'charset' => 'utf8',
'prefix' => '',
'schema' => 'public',
'sslmode' => 'require',
],
로컬 설정이 끝나면 push하여 반영한다.
git add .
git commit -m "modify config for connect heroku DB"
git push origin master
git push heroku master
7 단계 로컬 (PC 자체)에 postgresql 설치
6단계까지 끝나면 다음 명령을 실행하여 heroku의 DB에 연결할 수 있습니다.
heroku pg:psql DATABASE_URL
명령 결과 ↓와 같은 오류가 발생할 수 있습니다.
$ heroku pg:psql DATABASE_URL
--> Connecting to postgresql-colorful-44259
▸ The local psql command could not be located. For help installing psql, see
▸ https://devcenter.heroku.com/articles/heroku-postgresql#local-setup
heroku CLI에서 postgreql을 사용하려면 로컬 환경에도 포스그레를 넣어야하므로 아래 명령으로 설치하십시오.
※ brew 커멘드가 잘 되지 않는 경우는 여기 를 참고로 Home brew 의 인스톨을 해 주세요.
brew install postgresql
설치가 끝나면 다시 시도해 봅시다.
$ heroku pg:psql DATABASE_URL
--> Connecting to postgresql-colorful-44259
psql (13.1, server 12.5 (Ubuntu 12.5-1.pgdg16.04+1))
SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, compression: off)
Type "help" for help.
protected-waters-42026::DATABASE=>
명령 행 표시가 DATABASE로 변경되면 DB 설정은 OK입니다!
Reference
이 문제에 관하여([2020년 12월판] heroku 배포 시 DB 설정 정리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/hiro5963/items/4e94ff02ad0faa63e4ef텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)