Vapor Project를 Heroku에 배포
Vapor Advent Calendar 2020에 참가해 보려고 생각했던 것과 비망록도 겸해 써 보았습니다.
먼저 새로운 프로젝트를 만듭니다.
터미널에서 원하는 디렉토리로 이동
콘솔
$ vapor new [project name]
그리고 명령을 넣습니다.
[project name]
의 곳은 적절히 바꾸어 주십시오.콘솔
Would you like to use Fluent? (--fluent)
Which database would you like to use? (--fluent.db)
Would you like to use Leaf? (--leaf)
이번에는 Fluent를 사용하여 DB를 마이그레이션하기 때문에
터미널에서 질문에 y라고 대답하십시오.
DB는 Postgress를 사용합니다.
그런 다음 LinuxMain.swift를 다음 명령으로 추가합니다.
콘솔
$ swift test --generate-linuxmain
Xcode 시작
Resources/views 안에 있는 index.leaf를 로드하기 위한 설정을 합니다.
Xcode를 시작하면 먼저 왼쪽 상단의 프로젝트 이름을 클릭하고 Edit Scheme을 선택합니다.
이 화면에서 Working Directry를 설정할 수 있으므로 Vapor 프로젝트의 위치에 맞추십시오.
다음은 configure.swift에 마이그레이션을 수행하는 코드를 추가합니다.
configure.swift
app.migrations.add(SessionRecord.migration)
app.sessions.use(.fluent(.psql))
다음은 routes.swift를 다음과 같이 만듭니다.
routes.swift
import Fluent
import Vapor
// MARK: - Date extention
extension Date {
func currentTime() -> String {
let formatter = DateFormatter()
formatter.timeZone = .current
formatter.locale = .current
formatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
return formatter.string(from: self)
}
}
func routes(_ app: Application) throws {
app.middleware.use(app.sessions.middleware)
app.get() { req -> EventLoopFuture<View> in
// cookieに最終訪問時刻を記録
req.session.data["last_visited_at"] = Date().currentTime()
return req.view.render("index", ["title": "Hello Vapor!"])
}
app.get("hello") { req -> String in
return "Hello, world!"
}
try app.register(collection: TodoController())
}
이것으로 Migrate 후, Web 사이트에 방문한 사람에게 SessionID를 부여해, DB상에서 확인할 수 있게 됩니다.
Heroku로 푸시하기
heroku에 push하기 전에 heroku 계정를 만들어 둡니다.
터미널에서 heloku CLI를 사용하기 때문에
콘솔
$ brew tap heroku/brew && brew install heroku
그런 다음 로컬 리포지토리를 만듭니다.
콘솔
$ git init
$ git add .
$ git commit -m "initial commit"
이제 heroku에 push 할 준비가되었으므로 login하고
콘솔
$ heroku login
새로운 heroku 응용 프로그램을 만듭니다.
콘솔
$ vapor heroku init
리전은 US, deploy method는 buildpack, swift ver는 임의로 (자신의 환경은 5.3이었습니다)
나중의 질문은 모두 y라고 대답하면 배포가 시작됩니다. (10분 전후 걸립니다.)
콘솔
Verifying deploy... done.
그리고 표시되면 성공입니다. 그러나
console
$ vapor heroku init
에서 만든 heroku 어플리케이션은 랜덤 생성된 이름이 적용되므로
console
$ heroku rename [name]
로 이름을 바꿀 수 있습니다.
Heroku에서 마이그레이트
heroku의 관리 화면에서 데이터베이스를 설정합니다.
Heroku Postgres 선택
DatabaseCredentials 정보를 바탕으로 heroku의 관리 화면에 환경 변수를 등록합니다.
Settings -> Config Vars
DATABASE_HOST
DATABASE_USERNAME
DATABASE_PASSWORD
DATABASE_NAME
네 가지 환경 변수를 추가합니다.
추가한 후 오른쪽 상단 메뉴에서 Run consol을 선택
heroku_console$ Run migrate
성공하면 데이터베이스를 사용할 수 있습니다.
Reference
이 문제에 관하여(Vapor Project를 Heroku에 배포), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/doggo-3/items/23bfc22ff926c71f99ac
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
DATABASE_HOST
DATABASE_USERNAME
DATABASE_PASSWORD
DATABASE_NAME
$ Run migrate
Reference
이 문제에 관하여(Vapor Project를 Heroku에 배포), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/doggo-3/items/23bfc22ff926c71f99ac텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)