ローカルからサーバー公開用に移すのは億劫だ
大体設定とかいろいろ詰まるに決まっている
今回もそうだ。結局詰まる。
「mLabというmongoDBを使えるDaaS(?)がよい」
と書いてあったので、使ってみるがcloud9から繋がっていない様子。
herokuでデプロイは成功しているみたいだけれども
dbにつながらないから動いちゃくれない。
単純にcloud9からmLabのDBに「コレクションありますか~?」とかそんなことを聞きたいだけなのに
そこから、もう、繋がっていない感じ。
そもそもだけれど、heroku上のログとか調べてみたらわかる、という確信を書きながら思った。
ログが見れないとか、ないはず(たぶん)だから、もう一度、探してやってみよう。
なんかこういう詰まり方は楽しくないよなぁ。
追記:次の日
解決しました。
くそはまりどはまり先生(イミフ)でしたがなんとかできました。
mLabのmongoDBバージョンと、cloud9側のmongoDBバージョンが(だいたい)一致していないといけなかったみたいです。mongoDB自身のバージョンアップで動かないんですね。はい。
# monogo -version
で確認できます。
2.~.~系と3.~.~系を一緒に使うと「見る権限ないから!」と叱られるみたいです。はい。
じゃあ簡単ですね。cloud9上のmongoDBをバージョンアップさせればよいだけのはずですから。
えーと。たしかmongoDBのインストールのときもなかなかうまくいかずにいろいろやりましたよ、わたし。
# sudo apt-get install mongodb-org
これをやるとできましたよね。はい。
(参照:https://community.c9.io/t/solved-mongod-command-not-found/6517/2)
(「cloud9側の仕様?とかプレインストールの権利問題?とかでなんか入れなおさないとmongoDBが使えないとかなんとか」)
インストールにさえ苦労したのに、バージョンアップとか……
でもやってみれば案外簡単かも!(結構めんどうくさかったです。はい)
結論このページを参照しました!(http://tk2-207-13211.vs.sakura.ne.jp/2016/10/905/)
まずmongoDBをアンインストールして、
次に最新版をインストールする!
# suto apt-get autoremove mongodb-clients
→修正
# sudo apt-get autoremove mongodb-org
あと、公式のやつ(https://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu/)を参照して順番にやるだけ。
cloud9上のターミナルでcloud9のubuntuバージョンを確認
# lsb_release -a
(参照:http://ubulog.blogspot.jp/2007/06/ubuntu.html)
なんどもmongoDBを入れたり外したりしてたので、
# mongod --smallfiles
でmongoを起動したら「mongo.lockが残ってるぞ、おいごら」ってしかられたりもしましたが、それも解決しました。
「mongo.lock* ファイル探して消して
# mongo --repair
したらええやん」
って書いてありました。
「よくある、よくある」とも。
(参照:https://www.mkyong.com/mongodb/old-lock-file-datadbmongod-lock-probably-means-unclean-shutdown/)
まとめ(?):
今回のくはまりどはまり先生の理由についてまとめてみる。
1.mLabという方の仕様をよく理解していなかった
→そんなもん、初めて触るんやからしょうがないやろ。と思いつつ、mLab自体はそんな複雑な仕様もなく、かなり簡単なつくりにはなっているようでしたが、「DBはいっこやで。コレクションはたくさんつくってもええけどな」的なつくり、っていうのは、すこしつまづきました。苦労して、バージョンアップを確認したのち、mLabで表示されているコードでやっとDBにつながったあと、DBにつながっているのかの確認で、
# [mongo] show dbs
って打ったら、「権限ないんじゃ、われぇ、でなおせ!」って叱られたからです。すこし焦りましたが、深呼吸一つ。
# [mongo] show collections
って打ったら、さーっと表示されました。
cloud9上にDBを置いてある場合はデータベースもコレクションも適当に作ったり、参照したりしていた身としては、「あーそうっかー」的な感じでした。まぁ、DBをたくさん扱って来た人にとってはDaaS(?)の仕様としては、当然なのかもしれませんが。
あとcollection毎にユーザーとかパスワードとか、設定してからじゃないと接続できない、ってこれは仕様というよりDBさわる人には常識(?)なのでしょうか。まぁ、どっちでもいいんですけど。
2.unix系という方の扱い
→設定とか環境構築とか面倒くさいし、意味不明だし(単なる勉強不足)、という感じで「環境構築すっ飛ばせる、cloud9すげぇぇぇぇ!」ってなってた私ですが、まぁ、当然、そこにunixやらlinuxやら、ubuntuやらでてきたら、「うげぇぇぇぇ!」ってなりますよね。
まぁ、でも少し触れたので今回わかったことを書いておきます。
# sudo apt-get ~~~(動詞) ~~~(目的語)
的な使い方でなんとかなる
# yum ~~~~~
は使えない、ということ(あほ)。
じつは前にほんのすこし(ほんとうにすこし)だけubuntuをさわったことがあって(なんで触っていたのかは覚えてない)、mkdirとか、rmとかvimとか(vimは開いたけど、慣れなくて、くそ面倒くさいのでそのままvimの閉じ方を検索した)まぁ、そこらへんが少しだけ役にたったかな、と。
所感
まぁ、一番つまるだろうなぁ、と思っていたところで、まぁ、結局つまったわけだけれども。
「mySQLとかpostgresSQLとか面倒くさそうだなぁ、mongoDBのほうがherokuでデプロイするのがかんたんそうだなぁ」と思ってやって、結局このはまりよう。乙。
ま、一番大きなつまりポイントを克服できたんじゃないだろうか、と勝手に思っている。
追記:地味ながら重要なことheroku上のログをみること
# heroku logs -t
(参照:http://qiita.com/pugiemonn/items/c4077958b480eb29878d )
とすること。cloud9の疑似ローカル環境とheroku上の本番(?)環境とはどうしても差異が生まれるので、そこのログをキャッチしないことには、このはまりは解決できなかった。書き終わった後になって「なんか書いてみると紆余曲折あんまりしてないなぁ」とか思ってたけど、herokuのログを見れる、ってことは地味ながら重要。重要。