再構築のためにやったこと
クラウドのインスタンスとして選択したのはUbuntu (server) 20.04です.CentOSなど他にも選択肢はあったのですが,Ubuntuに慣れていることからこれを選びました.
環境構築
最初にやるべきことは,sudo apt-get install build-essentialです.これをやらないと何も開発できません.
続いて,anyenv → rbenv, nodenv, pyenv を導入しました.Railsの開発をするためにrbenvとnodenvが必要で,Twitterからデータを取ってきて処理するツールをPythonで動かしているのでpyenvも必要です.
これらを使ってruby, nodejs, pythonなどの環境を構築します.環境構築に際してときどき「このライブラリが足りない」とか「このツールがない」とか,様々なメッセージが出てくるので都度,sudo apt-get hogefuga のおまじないで対応してください.いちいち記録は残していませんが,エラーや警告が出ても言われたとおりに対処すれば問題ないはずです.
sqlite3や,graphvizなど,TWtrendsで利用している周辺のツールもインストールします.これもとくに問題はないはずです.
GitHubからTWtrendsのソースコードをcloneします.だいぶ古くなっているのでそのままでは動きません.いずれ,最新版にアップデートしておかないといけませんね.
ちょこちょこと必要な修正を加えたら,bundle updateして環境をアップデートします.あとは,TWtrendsソースツリーの最上位ディレクトリにおいて,次のおまじないを打ち込めばテストデータでのTWtrendsが動作することを確認できます.
bin/rails db:create; bin/rails db:migrate; bin/rails db:seed; bin/rails server
ただし,3000番ポートへのアクセスを開けないといけません.これがなんだかうまくいかなくて,クラウドのサーバでこの方法を試すことができなかったんです.誰か教えて偉い人……
Apacheとの連携
phusion passenger を導入して,80番ポートからアクセスできるようにします.その前に,sudo apt-get install apache2 でApacheウェブサーバをインストール,動作させておきましょう.
Passenger自体の導入は,gem install passenger でOKです.その後に次のコマンドを打って整備します.いろいろと「あれが足りん,これが足りん」と言ってきますが,言われたとおりに作業すれば問題ありません.
passenger-install-apache2-module
この作業でapache2に必要なモジュールが構築されますが,このプロセスがかなり時間をとります.メモリが足りない(500MB)非力なマシンだと,スラッシングが起こりまくって,8時間かかったという経験をしました.メモリは潤沢にあったほうがよい.
今回選んだインスタンスは4GBのメモリを積んでいるので,このプロセスは多少待たされはしたものの,なんとか「常識的な範囲内で」終えることができました.
あとは,指示に従ってapacheの設定ファイルを弄ればOKです.
今回は,site-available/ 以下に passenger.conf というファイルを作り,指示された項目はそこに記入,あとは,サイトの事情を同じディレクトリにある 000-default.conf に書き込むことにして,対応しました.このあたりも,別途,機会を設けて説明しておくことにしましょう(今日はスキップ)
以上の設定で,sudo service apache2 restart とすれば,80番ポートでアクセスしてTWtrendsのシステムをキック,サービスを受け取ることができるようになります.
データ取得の設定
次は,Twitterに対してデータを定期的に取りに行く設定です.consumer keyなどいろいろと忘れていたので,developer.twitter.com にアクセスして各種キーは取得し直しました.twurlのツールをダウンロードして,キーがちゃんと使えることも確認しました.
あとはバッチファイルをcronで動かすだけだ,というところで落とし穴がありました.タイムゾーンがUTCになっていたことに気付き,Asia/Tokyoに直したところまではよかったものの,そのあとcrondを再起動しないといけないということに気付かず,変なところでバッチが動いてしまったのです.これは再起動することで対処できました.
また,cronでバッチファイルを動かすときに,対話的シェルでないと$HOME/.bashrcを読み込んでくれないというところも注意が必要で,anyenvでインストールしたrubyやらpythonやらへのPATHをきちんと通してあげないといけない点も要注意.それはどう解決するのが妥当なのか,検討する必要がありそう.とりあえずは対処療法でなんとか……
コメント
コメントを投稿