再構築のためにやったこと

クラウドのインスタンスとして選択したのは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をきちんと通してあげないといけない点も要注意.それはどう解決するのが妥当なのか,検討する必要がありそう.とりあえずは対処療法でなんとか……

コメント

このブログの人気の投稿

統一教会・山崎康晃・原神

国葬反対・収賄容疑・モンスト

mimic・レペゼンの虎・Twitter