Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

システムのセットアップ(port:8080) #324

Closed
takengo opened this issue Aug 1, 2017 · 26 comments
Closed

システムのセットアップ(port:8080) #324

takengo opened this issue Aug 1, 2017 · 26 comments

Comments

@takengo
Copy link

takengo commented Aug 1, 2017

jiji+tensorflow が目的でwindows7のDocker上にjijiセットアップを行っています。

http://jiji2.unageanu.net/install/020300_install_server_to_docker.html
に従い作業しましたが、
「http://<インストール先ホスト>:<docker-compose.ymlで設定したJijiのポート/デフォルトは8080>」の起動ができません。

<インストール先ホスト>の調べ方が分からず、http://localhost:8080、http://127.0.0.1:8080で
行いましたが両方NGです。Docker上で起動させるのではなく、Windowsのブラウザで実行で良いのですよね?最初、Dockerで頑張っておりましたが、ようやく気づきました。

「SSLを利用しない場合は、 docker-compose-without-ssl.yml をご使用ください。
 SSLプロキシとして使用している Nginx なしの構成でセットアップします。
 docker-compose-without-ssl.yml を docker-compose.yml にリネームして使用するか、 -f オプションで  docker-compose-without-ssl.yml を明示してください。」
に従い、sslは利用しないため、ポート8080で設定しました。

「docker ps -a」で確認したところ、下記の結果となり正常だと思います。

CONTAINER ID        IMAGE                        COMMAND                  CREATED             STATUS                   PORTS                      NAMES

f06aede0bfa4        unageanu/jiji:latest         "puma -C /app/jiji..."   2 hours ago         Up 2 hours               0.0.0.0:8080->8080/tcp     jiji_jiji

ea5eb24e3dbf        mongo:3.0.7                  "/entrypoint.sh mo..."   2 hours ago         Up 2 hours               0.0.0.0:27018->27017/tcp   jiji_mongodb

5c99a2e7e79b        unageanu/jiji-nginx:latest   "nginx -g 'daemon ..."   3 hours ago         Exited (1) 2 hours ago                              jiji_nginx

nginxについては、最初「docker-compose-without-ssl.yml 」の差し替えを忘れておりプロセスが作られたか、作る段階で失敗したようです。これが悪さをしているのかもしれませんが。。。

同様の記事で下記を見たのですが、解決策が分かりませんでした。
#175

対処方法をご教授賜りたいと思います。

あと、依然はWindowsにtensorflowを導入するには、Dockerが必要でしたが今は無くても動くようですが、それなら、jiji+tensorflowを行う場合Dockerは不要なのでしょうか?

@unageanu
Copy link
Owner

unageanu commented Aug 1, 2017

windows7 の Dockerはあまり詳しくはないのですが、少し前だと、内部的に「Docker on VirutalBox on Windows」みたいな構成になったはずなので、このあたりのネットワークの問題である可能性が高いように思います。

まずは、Docker 内からアクセスしてみて、正しく起動しているかご確認ください。
( $ docker ps -a の出力を見る限り、起動はしているようですが、一応)

$ docker exec -ti jiji_jiji bash  // jiji のコンテナ内に入る
$ wget http://localhost:8080 // index ページを取得
$ cat index.html // 内容を表示。 
                //「<title>FX システムトレードフレームワーク「Jiji」</title>」が含まれていればOK

HTMLを正しく取得できる場合は起動には成功しているので、あとはネットワークの問題ですね。
http://localhost:8080, http://127.0.0.1:8080 にWindowsのブラウザからアクセスした場合はどのようなエラーになりますでしょうか?

@takengo
Copy link
Author

takengo commented Aug 1, 2017

早々のご回答感謝いたします。

HTMLを正しく取得できているようです。
<title>FX Jiji</title>

Windowsのブラウザからアクセスした場合はどのようなエラーになりますでしょうか?
http://localhost:8080, http://127.0.0.1:8080 ともに下記エラーです(Chrome, IE11)。

Chrome

このサイトにアクセスできません

localhost で接続が拒否されました。
次をお試しください:
接続を確認する
プロキシとファイアウォールを確認する
ERR_CONNECTION_REFUSED

IE11

このページは表示できません

•Web アドレス http://localhost:8080  が正しいか確かめてください。
•検索エンジンでそのページを探してください。
•数分待ってから、ページを最新の情報に更新してください。

@unageanu
Copy link
Owner

unageanu commented Aug 2, 2017

やはり、ネットワーク周りの問題のようですね。

Windows 版のDocker にもいくつか種類があるようなので、まずはどの構成になっているか特定できますでしょうか?
http://www.atmarkit.co.jp/ait/articles/1610/24/news014.html

Windows 7 ということは、「Docker for Windows で Hyper-V ではなく VirtualBox を利用した構成( == Docker Toolbox を利用)」になりますでしょうか?

@takengo
Copy link
Author

takengo commented Aug 2, 2017

Docker Toolboxです。
https://www.docker.com/products/docker-toolbox

↓こちらを元にインストールしました
http://pppurple.hatenablog.com/entry/2016/07/03/003425

@unageanu
Copy link
Owner

unageanu commented Aug 2, 2017

了解しました。
となると、考えられる原因はざっと以下かと思います。

  • VirtualBox ゲストマシンの firewall で拒否されている
  • Windows 側の firewall で拒否されている
  • VirtualBox ゲストマシンのIPアドレスでアクセスする必要があるが、できていない
  • VirtualBox のネットワーク設定で、外部からアクセスできないようにされている

リンク先のページを見ると、VirtualBox のゲストマシンにはsshで普通にログインできるようですね。
まずは、sshでゲストマシンにログインして以下のコマンドを実行し、ゲストからjijiにアクセスすることができるか確認してみください。

$ wget http://localhost:8080
$ cat index.html

@takengo
Copy link
Author

takengo commented Aug 7, 2017

ssh [email protected]
password: tcuser

Boot2Docker version 17.06.0-ce, build HEAD : 0672754 - Thu Jun 29 00:06:31 UTC 2
017
Docker version 17.06.0-ce, build 02c1d87
docker@default:~$ wget http://localhost:8080
Connecting to localhost:8080 (127.0.0.1:8080)
wget: can't connect to remote host (127.0.0.1): Connection refused

となりました。

自己署名証明書を生成して、
https://localhost:8443
で試しましたが、こちらも同様の結果でした。
SSHでログインし実行した結果は下記となりました。

docker@default:~$ wget https://localhost:8443
Connecting to localhost:8443 (127.0.0.1:8443)
wget: error getting response: Connection reset by peer

@takengo
Copy link
Author

takengo commented Aug 7, 2017

自己署名証明書を生成したので、httpsで接続し下記を実行すると接続できずリトライを繰り返します。

$ docker exec -ti jiji_jiji bash  // jiji のコンテナ内に入る
$ wget https://localhost:8443 // index ページを取得

しかし、下記は正常にページが取得できるようです。
https://<インストール先ホスト>:<docker-compose.ymlで設定したJijiのポート/デフォルトは8443>
の説明どおりに実行できない状況に陥っています。

$ docker exec -ti jiji_jiji bash  // jiji のコンテナ内に入る
$ wget http://localhost:8080 // index ページを取得

@unageanu
Copy link
Owner

unageanu commented Aug 7, 2017

wget: can't connect to remote host (127.0.0.1): Connection refused

ゲストマシンからもアクセスできないということは、

  • VirtualBox ゲストマシンの firewall で拒否されている

のかもしれません。
ゲストマシンで以下のコマンドを実行した場合、それぞれどのような出力になるでしょうか?

$ docker ps -a
$ docker network ls
$ ss -lt

@unageanu
Copy link
Owner

unageanu commented Aug 7, 2017

httpsで接続し下記を実行すると接続できずリトライを繰り返します。

https アクセスを提供しているのは nginx の方なので、そのような動作になるのかもしれませんね。

@takengo
Copy link
Author

takengo commented Aug 7, 2017

下記のようになりました

docker@default:~$ docker ps -a

CONTAINER ID        IMAGE                        COMMAND                  CREATE
D             STATUS                   PORTS                      NAMES
27d1a2755e3e        unageanu/jiji-nginx:latest   "nginx -g 'daemon ..."   4 days
 ago          Exited (1) 4 hours ago                              jiji_nginx
88ec40f22fe8        unageanu/jiji:latest         "puma -C /app/jiji..."   4 days
 ago          Up 4 hours               8080/tcp                   jiji_jiji
320a95d974f3        mongo:3.0.7                  "/entrypoint.sh mo..."   4 days
 ago          Up 4 hours               0.0.0.0:27018->27017/tcp   jiji_mongodb

docker@default:~$ docker network ls

NETWORK ID          NAME                DRIVER              SCOPE
4b1c38835a52        bridge              bridge              local
d55a7d1a3095        host                host                local
644d13780959        none                null                local

docker@default:~$ ss -lt

State      Recv-Q Send-Q      Local Address:Port          Peer Address:Port
LISTEN     0      128                     *:ssh                      *:*
LISTEN     0      128                    :::ssh                     :::*
LISTEN     0      128                    :::2376                    :::*
LISTEN     0      128                    :::27018                   :::*

@unageanu
Copy link
Owner

unageanu commented Aug 7, 2017

情報ありがとうございます。
SSLを使用する場合/しない場合でそれぞれ設定がうまくできていない箇所があるようです。以下を確認してみてください。

SSLを使用する場合

  • nginx の ポートマッピングが設定されていないようです。docker-compose.yml の以下の設定を確認してください。
(略)
nginx:
  (略)
  ports:
    - "8443:443"
  (略)
  • nginx が起動していないようです。 $ docker-compose up -d を実行しても停止してしまうようであれば、何かエラーになっているのかもしれません。 以下のコマンドを実行してログを確認し、修正してみてください。
$ docker logs jiji_nginx

SSLを使用しない場合

  • jiji の ポートマッピングが設定されていないようです。docker-compose.yml の以下の設定を確認してください。
(略)
jiji:
  (略)
  ports:
    - "8080:8080"
  (略)

@takengo
Copy link
Author

takengo commented Aug 8, 2017

portの設定は正しかったです。
ログを確認したところssl.crtの読み込みでエラーが発生していました。

2017/08/08 01:25:15 [emerg] 1#1: PEM_read_bio_X509_AUX("/etc/nginx/cert/ssl.crt"
) failed (SSL: error:0906D06C:PEM routines:PEM_read_bio:no start line:Expecting:
 TRUSTED CERTIFICATE)
nginx: [emerg] PEM_read_bio_X509_AUX("/etc/nginx/cert/ssl.crt") failed (SSL: err
or:0906D06C:PEM routines:PEM_read_bio:no start line:Expecting: TRUSTED CERTIFICA
TE)

docker-compose.yml でSSL証明書のパスを下記のように記述しております。

    - ./path/to/server.crt:/etc/nginx/cert/ssl.crt:ro
    - ./path/to/server.key:/etc/nginx/cert/ssl.key:ro

path¥to¥server.crt というフォルダが作成されていたので、その中に「ssl.crt」を入れましたが、記述の意味が不明なため、間違っているようです。
そのあたりの記述方法、手順が掲載されている場所があればご教授いただきたいです。

/etc/nginx/cert/ssl.crtを入れ起動させましたが
nginxが起動できません。

27d1a2755e3e        unageanu/jiji-nginx:latest   "nginx -g 'daemon ..."   5 days
 ago          Exited (1) 21 seconds ago                              27d1a2755e3
e_jiji_nginx

ログを確認しようとしましたが、このようなエラーとなりました

$ docker logs jiji_nginx
Error response from daemon: No such container: jiji_nginx

@takengo
Copy link
Author

takengo commented Aug 8, 2017

少しは、良くなっているようです。

以前

Recreating jiji_nginx ...
Recreating jiji_nginx ... error

現在

Starting 27d1a2755e3e_jiji_nginx ...
Starting 27d1a2755e3e_jiji_nginx ... done

@unageanu
Copy link
Owner

unageanu commented Aug 8, 2017

そのあたりの記述方法、手順が掲載されている場所があればご教授いただきたいです。

data volume の記述方法については、以下のページを参照してください。
https://docs.docker.com/compose/compose-file/compose-file-v1/#volumes-volume_driver

@takengo
Copy link
Author

takengo commented Aug 10, 2017

私の知識では、解決に至ることは難しそうです。。。

@unageanu
Copy link
Owner

SSLで嵌っているのであれば、とりあえずSSL無しで進めてみてはどうでしょうか?

@takengo
Copy link
Author

takengo commented Aug 10, 2017

SSL無しで実施しています。
jiji_jijiのログで下記が発生しておりますが、原因特定できますでしょうか?

E, [2017-08-11T08:49:40.857299 #1] ERROR -- : Jiji::Errors::NotInitializedExcept
ion (Jiji::Errors::NotInitializedException)

@takengo
Copy link
Author

takengo commented Aug 11, 2017

もう少し詳細

E, [2017-08-11T08:53:10.861141 #1] ERROR -- : Jiji::Errors::NotInitializedExcept
ion (Jiji::Errors::NotInitializedException)
/app/jiji2/src/jiji/errors/errors.rb:77:in `not_initialized'
/app/jiji2/src/jiji/model/securities/nil_securities.rb:9:in `method_missing'
/app/jiji2/src/jiji/model/trading/brokers/abstract_broker.rb:30:in `tick'
/app/jiji2/src/jiji/model/trading/brokers/abstract_broker.rb:152:in `refresh'
/app/jiji2/src/jiji/model/trading/jobs/notify_next_tick_job.rb:22:in `before_do_
next'
/app/jiji2/src/jiji/model/trading/jobs/notify_next_tick_job.rb:16:in `exec'
/app/jiji2/src/jiji/model/trading/process.rb:37:in `do_next_job'
/app/jiji2/src/jiji/model/trading/process.rb:30:in `run'
/app/jiji2/src/jiji/model/trading/process.rb:24:in `block in start'
/usr/local/bundle/gems/thread-0.2.2/lib/thread/pool.rb:67:in `call'
/usr/local/bundle/gems/thread-0.2.2/lib/thread/pool.rb:67:in `execute'
/usr/local/bundle/gems/thread-0.2.2/lib/thread/pool.rb:405:in `block (2 levels)
in spawn_thread'
/usr/local/bundle/gems/thread-0.2.2/lib/thread/pool.rb:372:in `loop'
/usr/local/bundle/gems/thread-0.2.2/lib/thread/pool.rb:372:in `block in spawn_th
read'

@unageanu
Copy link
Owner

このエラーは、アクセストークン未設定(=初期設定が完了していない)の状態でJijiを起動している場合に表示されるエラーですね。アクセストークン設定後(=初期設定が完了後)は表示されなくなるはずです。

@takengo
Copy link
Author

takengo commented Aug 21, 2017

たびたび申し訳ございません。

インストール・・・①
http://jiji2.unageanu.net/install/020300_install_server_to_docker.html

起動する・・・②
https://<インストール先ホスト>:<docker-compose.ymlで設定したJijiのポート/デフォルトは8443>

初期設定を行う・・・③
http://jiji2.unageanu.net/install/030000_initial_setting.html

③の中で、アクセストークンを設定すると思っております。
現状、②がうまくいかないため、③で行うアクセストークンの設定ができないという
認識ですが、②をスルーしてアクセストークンの設定は可能でしょうか?

@unageanu
Copy link
Owner

③の中で、アクセストークンを設定すると思っております。
現状、②がうまくいかないため、③で行うアクセストークンの設定ができないという認識

これはその通りです。
③まで進めてアクセストークンを設定すれば上記エラーは表示されなくなります。
現状、②がうまくいかないことと、上記エラーは関係ありませんので、気にせずに進めてください。

@takengo
Copy link
Author

takengo commented Aug 21, 2017

ssl証明書絡みがNGだと睨み、パス関連を再度設定して進展ございました。

    - ./path/to/nginx/cert/server.crt:/etc/nginx/cert/ssl.crt:ro
    - ./path/to/nginx/cert/server.key:/etc/nginx/cert/ssl.key:ro
    # ./path/to/server.crt:/etc/nginx/cert/ssl.crt:ro
    # ./path/to/server.key:/etc/nginx/cert/ssl.key:ro

$ docker ps -a

CONTAINER ID        IMAGE                        COMMAND                  CREATE
D              STATUS              PORTS                           NAMES
1464be39da40        unageanu/jiji-nginx:latest   "nginx -g 'daemon ..."   About
a minute ago   Up About a minute   80/tcp, 0.0.0.0:8443->443/tcp   jiji_nginx
1f275ed4aca3        unageanu/jiji:latest         "puma -C /app/jiji..."   7 hour
s ago          Up 7 hours          8080/tcp                        jiji_jiji
961837d7cfb2        mongo:3.0.7                  "/entrypoint.sh mo..."   7 hour
s ago          Up 7 hours          0.0.0.0:27018->27017/tcp        jiji_mongodb

となり、

bf87a4990866        unageanu/jiji-nginx:latest   "nginx -g 'daemon ..."   35 min
utes ago      Exited (1) 9 minutes ago                              jiji_nginx

Exited→UP になったので、正常に動いたと思っております。。。
docker logs jiji_nginx でもエラーは消えました。

しかし、ブラウザで
https://127.0.0.1:8443
実行で、表示されませんでした。

このサイトにアクセスできません

$ docker network ls

NETWORK ID          NAME                DRIVER              SCOPE
874ef3d1890b        bridge              bridge              local
d55a7d1a3095        host                host                local
644d13780959        none                null                local

SSHでログイン

docker@default:~$ wget https://localhost:8443
Connecting to localhost:8443 (127.0.0.1:8443)
Connecting to localhost:8443 (127.0.0.1:8443)
index.html           100% |*******************************|   683   0:00:00 ETA

$ docker exec -ti jiji_jiji bash
root@1f275ed4aca3:/# wget https://localhost:8443

converted 'https://localhost:8443' (ANSI_X3.4-1968) -> 'https://localhost:8443'(UTF-8)--2017-08-21 17:12:25--  https://localhost:8443/
Resolving localhost (localhost)... 127.0.0.1, ::1
Connecting to localhost (localhost)|127.0.0.1|:8443... failed: Connection refuse
d.
Connecting to localhost (localhost)|::1|:8443... failed: Cannot assign requested
 address.
Retrying.

ご教授いただければ幸いです

@unageanu
Copy link
Owner

docker@default:~$ wget https://localhost:8443
Connecting to localhost:8443 (127.0.0.1:8443)
Connecting to localhost:8443 (127.0.0.1:8443)
index.html           100% |*******************************|   683   0:00:00 ETA

のところで正しくページを取得できているような気がしますが、どうでしょうか?
エラー画面が返却されているようであれば、エラーメッセージはどのようになっていますか?

@takengo
Copy link
Author

takengo commented Aug 21, 2017

表示できました。

これまで
https://127.0.0.1:8443
でアクセスしておりましたが、ゲストマシンへsshでログインする際のIPアドレスを指定したところ表示できました。
http://192.168.99.100:8443

念のため確認ですが、
docker(ゲストマシン)で、ページにアクセスするのではなく、docker外からアクセスで問題ございませんでしょうか? docker内でのアクセス方法が分からなかったので、勝手にこうだと思い実施しておりましたが、少し不安になってきました。

@unageanu
Copy link
Owner

docker外からアクセスで問題ございませんでしょうか?

問題ありません。

@takengo
Copy link
Author

takengo commented Aug 23, 2017

右も左も分からない初心者でしたが、ご教授頂いたお蔭で一通り、やりたいことができました。
感謝いたします。ありがとうございました。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants