作ったMeteorアプリをGoogleで検索すると、URLとタイトルは引っかかるのですが、中身が空白です。
ウェブアプリは仕方がないのかと思っていたのですが、ちゃんと枠組みがあるのですねぇ。
Meteorにもspiderableというパッケージがありました。このパッケージはPhantomJSがMeteorサーバー上に必要なので、spiderable-remoteを使いました。
以下、備忘録。
herokuにPhantomJSのサーバーを用意する。
基本、phantomjs-remoteのサーバーコードを動かすのですが、herokuでTCPポートを使うには、Ruppel's Socketsを使います。
1. gitレポジトリを用意して、phantom-server.jsをコピー。
2. ビルドパックが複数使えるように設定
heroku buildpacks:set https://github.com/ddollar/heroku-buildpack-multi.git
. ファイル.buildpacksを用意。
https://github.com/heroku/heroku-buildpack-nodejs.git https://github.com/stomita/heroku-buildpack-phantomjs.git
3. Ruppell's Socketsを追加。
heroku addons:create ruppells-sockets git submodule add https://bitbucket.org/ruppells/sockets-connect.git lib/sockets-connect
4. ポート番号にprocess.env.RUPPELLS_SOCKETS_LOCAL_PORTを参照するように修正する。
... if (process.argv.length < 2) { ... var port = process.env.RUPPELLS_SOCKETS_LOCAL_PORT; ...
5. Procfileを用意する。
socket: ./lib/sockets-connect/rs-conn phantom-server.js
heroku ps:scale socket=1
6. クライアントが使うURIをメモしておく。
heroku config:get RUPPELLS_SOCKETS_FRONTEND_URI
7. herokuにデプロイ
git push heroku master
Meteorアプリ側
1. spiderable-remoteを追加する。
meteor add gadicohen:spiderable-remote
2. サーバー側で環境変数を追加するコードを追加する。
if (Meteor.isServer) { process.env.PHANTOMJS_REMOTE = <上でメモったURI> }
完了!