【heroku】アカウント作成〜アプリ配置まで試してみた

投稿者:

はじめに

来季のシーズンスローガン。面倒臭がらない
というわけで先般作ったNode.jsアプリをherokuに配置してみます。

https://github.com/mayarin/NodejsMySQLDocker/

herokuにアカウントを作ってみます

https://signup.heroku.com/login

必要な事項を埋めて認証メールからアカウント登録を進めます。
よしなにアカウントが作れたらアプリを登録します。
参考サイトを見る限りではheroku cliをインストールすると捗るようなので従います…

https://note.com/w0o0ps/n/n357f57db3e3e

$ brew tap heroku/brew && brew install heroku #←これ実行
Updating Homebrew...
Warning: You are using macOS 11.0.
We do not provide support for this released but not yet supported version.
You will encounter build failures with some formulae.

# --- 中略... ---

Error: Your Command Line Tools are too outdated.
Update them from Software Update in System Preferences or run:
  softwareupdate --all --install --force

If that doesn't show you an update run:
  sudo rm -rf /Library/Developer/CommandLineTools
  sudo xcode-select --install

Alternatively, manually download them from:
  https://developer.apple.com/download/more/.

Error: Your CLT does not support macOS 11.0.
It is either outdated or was modified.
Please update your CLT or delete it if no updates are available.

叱られたw

https://github.com/Homebrew/brew/issues/8797#issuecomment-698159666

You need to install the CLT for Xcode 12 beta 5. The Xcode 12 release doesn’t support macOS 12 and the CLT in Xcode is not the same as the normal Command Line Tools.

https://github.com/Homebrew/brew/issues/8797#issuecomment-698159666

https://developer.apple.com/download/more/

本当かなぁ、とapple developerから検索して取得しインストール。
よし、進んだ。

https://note.com/w0o0ps/n/n2eca493ced5d

続きの資料に従いデプロイ…と、また叱られたw

Enumerating objects: 7192, done.
Counting objects: 100% (7192/7192), done.
Delta compression using up to 4 threads
Compressing objects: 100% (6807/6807), done.
Writing objects: 100% (7192/7192), 6.52 MiB | 1.72 MiB/s, done.
Total 7192 (delta 1379), reused 0 (delta 0)
remote: Compressing source files... done.
remote: Building source:
remote: 
remote:  !     No default language could be detected for this app.
remote:                         HINT: This occurs when Heroku cannot detect the buildpack to use for this application automatically.
remote:                         See https://devcenter.heroku.com/articles/buildpacks
remote: 
remote:  !     Push failed
remote: Verifying deploy...
remote: 
remote: !       Push rejected to rocky-wildwood-40562.
remote: 
To https://git.heroku.com/rocky-wildwood-40562.git
 ! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'https://git.heroku.com/rocky-wildwood-40562.git'

https://ishida-it.com/blog/post/2019-11-24-docker-nodejs-heroku/

最初の資料を読み返す。もなかなかうまいこといかなかったものの、突如うまくいった。
多分以下のどちらかが要因。

  1. git push heroku master の前に git add . を走らせていなかった。
  2. package.json (プロジェクトのルートフォルダ)を作っていなかった。

さてさて接続だ〜、と試行するも、なんか叱られた。

多分これだ。

var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var session = require('express-session');
var logger = require('morgan');
var app = express();

var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');

var MySQLStore = require('express-mysql-session')(session);

var options = {
  host: 'mysql',
  port: 3306,
  user: 'root',
  password: 'password',
  database: 'todo'
};

var sessionStore = new MySQLStore(options);

app.js内でsessionをmysqlに持たせようとしてて→ホストが未解決でござると叱られているんだ。
本当はherokuのClearDBを使うのが定石なんですが、herokuのクレカ登録に某都銀デビットを使ったら、蹴られた(汗)AWSは大丈夫なんですが。
ならばと対策を考える。

  1. AWS RDSを使う → 東京リージョンの最安値でも0.026USD/h*24h*30days = 18.72USD = 1,943円
  2. Lightsailのデータベースを作る → これでも15USD/月=1,557円

    高 ぇ よ !
  3. いまこのサーバを置いてるLightsailの3.5USD/月のインスタンスを作りMariaDBを入れてやる、多分これがいちばんお安く上がるw

できた。ここにMariaDBを入れていきます。

https://maya-pg.net/2020/11/19/%e3%80%90amazonlinux2%e3%80%91mariadb%e3%82%92%e9%85%8d%e7%bd%ae%e3%81%97%e3%81%a6%e3%81%bf%e3%82%8b/

話が長くなったので記事を分けました。
最後にデータベースサーバとアクセス情報を変更して、稼働しました!

動いたものがこちら

https://rocky-wildwood-40562.herokuapp.com/

あとmailhogを使っているからそこをなんとかしないとですが、明日とか対応しよう。