「プログラマのためのGOOGLE CLOUD PLATFORM入門サービス本」でハマった時のメモ


この投稿について

うまくいかなくて検索しても出てこないので、自分でまとめることにする。

リスト2.16 サンプルアプリケーションのデプロイと起動で失敗する場合

以下のエラーが出てしまう。

● dengonban.service - Message Board Application
   Loaded: loaded (/etc/systemd/system/dengonban.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Sat 2018-10-13 04:12:01 UTC; 13s ago
  Process: 24828 ExecStop=/bin/kill -TERM $MAINPID (code=exited, status=1/FAILURE)
  Process: 24825 ExecStart=/opt/dengonban/v2/app.py (code=exited, status=1/FAILURE)
 Main PID: 24825 (code=exited, status=1/FAILURE)

journalctlコマンドで、ログを確認してエラーを見て見る。

$ journalctl | less

Shift-G  で最新にスクロールしてエラーを確認する。

SQLALCHEMY_TRACK_MODIFICATIONS がログにある場合

以下のエラーが出る場合

SQLALCHEMY_TRACK_MODIFICATIONS adds significant overhead and will be disabled by default in the future.  Set it to True to suppress this warning.

書いてあるとおりで、SQLALCHEMY_TRACK_MODIFICATIONSを trueにすれば良い。
app_v2/app.pyに app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True を追記する。

こんな感じ。

app = Flask(__name__)
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True

(でもこのWARNINGは気にしなくてもいいのかもしれない)

Access denied for user の場合

以下のエラーの場合はmysqlユーザのユーザ名とパスワード名を確認する。

Oct 13 04:16:05 webserver app.py[24927]: sqlalchemy.exc.OperationalError: (pymysql.err.OperationalError) (1045, u"Access denied for user 'appuser'@'cloudsqlproxy~XX.XX.XX.XX' (using password: YES)")
Oct 13 04:16:05 webserver systemd[1]: dengonban.service: Main process exited, code=exited, status=1/FAILURE

GCPコンソールのCloudSQLから Cloud Shellを使用して接続 からシェルを起動する。

この時に、ログインコマンドを、ユーザ名とパスワードでログインできるか試してみる。

$ gcloud sql connect websql --user=appuser --quiet

本のとおりだと、パスワードは pas4appuser なんだけど、これでログインが出来なかったらパスワードの設定でミスっているので、SQLからパスワードを変更する必要がある。
または、ログインパスワードがわかれば、app_v2/app.pyのパスワードを変更する。