selmertsxの素振り日記

ひたすら日々の素振り内容を書き続けるだけの日記

Revieee開発日記 [20170710]

やりたいこと

1pomo 10:20 - 10:45

  • テストで動くことを確認する
  • テスト用データを投入できるようにする。
  • テスト用データは作り直しができるようにする
docker exec revieee_nginx_container /usr/local/nginx/sbin/nginx -s reload

とりあえず、http://endpoint-1.reviewapps.speee.jp にアクセスしたら、 http://127.0.0.1:3000 が返ってくるところまでやった。 IPは127.0.0.1、PORTは3000で良さそう。

次は、proxy_passに http://127.0.0.1:3000 が入ってるか確認したい。 とはいえ、proxy_passを入れないときに出てくるエラーを見ておく。

revieee_nginx_container | 2017/07/10 01:26:36 [error] 18#0: *6 invalid URL prefix in "", client: 172.21.0.3, server: ~^endpoint-(?<endpoint_id>\d+)\.reviewapps\.speee\.jp$, request: "GET / HTTP/1.1", host: "endpoint-1.reviewapps.speee.jp"

ということで、proxy_passに何も入ってなかったのかと思い、ちょっといじってみる。 https://github.com/speee/webapp-revieee/commit/d5ce8f9ffb7feeea4745f4b4771af05cb32860d0

revieee_nginx_container | 2017/07/10 01:36:36 [error] 28#0: *7 connect() failed (111: Connection refused) while connecting to upstream, client: 172.21.0.3, server: ~^endpoint-(?<endpoint_id>\d+)\.reviewapps\.speee\.jp$, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:3000/", host: "endpoint-1.reviewapps.speee.jp"

エラーが変わった。http://127.0.0.1:3000 に接続できなかったよ!ってエラーっぽい。 なので、テスト用の環境があると良さそう… 一旦、同一nginx内のリクエストに飛ばし直して、今存在しているコードも少し手をいれておく。

% docker exec -it revieee_nginx_container /bin/bash                           [10:43:18]
root@ebf6209b9bf2:/# curl http://127.0.0.1
This is test for ngx_mruby hoge

テストコードを作って動作を確認。どうやら大丈夫そうだ。 次は、mysql serverに入って、データをちょっといじっておく。

% mysql -u root --port 33306 -h 127.0.0.1

mysql> use revieee_development;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed

mysql> select * from endpoints;
+------+-----------+------+---------+
| id   | ip        | port | task_id |
+------+-----------+------+---------+
|    1 | 127.0.0.1 | 3000 |       1 |
+------+-----------+------+---------+
1 row in set (0.00 sec)

mysql> update endpoints set port=80 where id=1;

Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

で、もう一度やってみる。

revieee_nginx_container | 2017/07/10 01:49:46 [error] 57#0: *13 connect() failed (111: Connection refused) while connecting to upstream, client: 172.21.0.3, server: ~^endpoint-(?<endpoint_id>\d+)\.reviewapps\.speee\.jp$, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:3000/", host: "endpoint-1.reviewapps.speee.jp"

2pomo 10:50 - 11:15

またportが変わってない。そうか nginxのメモリにキャッシュされてるんだ。 キャッシュクリアしないと。

http://qiita.com/zaru/items/c41072e29b9550c2e6a8

↑を読んでみるが、僕たちの実装と結構大きく違う… ふーむ… nginxのキャッシュ周りは後で勉強しないと。 実践 nginxが、今ならちゃんと読みたいと思えるはず。

とりあえず今は、cache clear用のコードを書こう。

% curl -H "Host: endpoint-1.reviewapps.speee.jp" http://127.0.0.1/revieee/clear
<html>
<head><title>502 Bad Gateway</title></head>
<body bgcolor="white">
<center><h1>502 Bad Gateway</h1></center>
<hr><center>nginx/1.13.0</center>
</body>
</html>

clearにつかったコードはこちら https://github.com/speee/webapp-revieee/pull/73/commits/205c1e956df7d33e56bf4ecf50e1743011cbd962

がっつり重複しているので、いい感じに整理したい。

3pomo 11:20 - 11:45

挙動を整理する。

  • キャッシュは消せたのか?
  • 消せてたら、502問題だけどうにかする
  • 消せてなかったら、何がいけないのか調査する
% curl -H "Host: endpoint-1.reviewapps.speee.jp" http://127.0.0.1             [11:25:18]
<html>
<head><title>502 Bad Gateway</title></head>
<body bgcolor="white">
<center><h1>502 Bad Gateway</h1></center>
<hr><center>nginx/1.11.13</center>
</body>
</html>
revieee_nginx_container | 2017/07/10 02:25:53 [error] 99#0: *4479 upstream prematurely closed connection while reading response header from upstream, client: 172.21.0.3, server: ~^endpoint-(?<endpoint_id>\d+)\.reviewapps\.speee\.jp$, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:80/", host: "endpoint-1.reviewapps.speee.jp"

ふーむ…とりあえず、今日はここまで。 テストデータ作成用のscriptは用意したい。