infoScoopをStaxで動かしてみた
StaxというJava環境のPaaSがあります。
無料でクラウド環境でJavaアプリを動かすことができます。
ただ、まだベータなので無料なだけで、いつ有料になるともしれません。
Javaが使えるPaaSはGoogle App Engine(GAE)が有名ですが、GAEとの大きな違いはDBがMySQLということです。
なので、あまり修正をせずに既存のソフトウェアを動かすことができそうです。
infoScoopも動きそうなので、動かしてみました。
http://infoscoop.a-kimura.staxapps.net/
動きました。
test/testでログインできます。
以下、どうやって動かしたかを説明します。
infoScoopにそんなに特化していない内容なので、Javaアプリをクラウド環境で動かしたい人、JavaアプリをStaxで動かしたい人にも参考になると思います。
Staxのアカウントを取得する
Staxのトップページの「Apply for Beta」ボタンをクリック。
サインアップ画面が表示されるので、メールアドレスを入力して、「Sign Up」。
すぐメールが来ます。メールに書いてあるURLにアクセスすると、アカウント作成完了。
SDKをダウンロード
Staxのトップページの右上の「Sign in」リンクからログインするとWeb Consoleに入れます。
Web Consoleのトップページの「Getting Started」に書いてある通り、Stax SDKをダウンロードします。
解凍してどこかに置いておけばいいです。
空のアプリケーションを作ります
Web Consoleの左上の「Create App」ボタンをクリック。
と入力して「Finish」
空のデータベースを作ります
Web Consoleの左上の「Create DB」ボタンをクリック。
- Database name:iscoop
- Username:iscoop
- Password:XXXXX
と入力して「Finish」
infoScoopをダウンロード
infoScoop OpenSource 2.0.1をダウンロードします。
- infoscoop/infoscoop.war
- tools/initdb
をこの後使います。
テーブルの作成
驚いたことに3306ポートが空いているので、テーブルの作成などはローカルPCからmysqlコマンドでやります。*2
以下のコマンドでinfoScoopのテーブルを作成します。
ホスト名はWeb Consoleでデータベースを選択すると「Remote Connections」に記載されています。
mysql -hXXXXXX.YYYYYY.amazonaws.com -uiscoop -pXXXXX iscoop < initdb\schema\mysql\mysqlinit.sql
初期データ投入
initdb/bin/datasource.xmlを修正
Web Consoleでデータベースを選択すると「Remote Connections」に記載されているホスト名、ユーザ名、パスワードに修正
cd initdb import.bat
と思ったが、全然終わらないので断念。
ローカルで作ったMySQLダンプからリストアします
localのMySQLに作成した初期データをdumpして、突っ込む。
mysql -hXXXXXX.YYYYYY.amazonaws.com -uiscoop -pXXXXX < iscoop.sql
「テーブルの作成」と「初期データ投入」の手順はローカルでやってください。
infoscoop.warにStax用の設定をする
infoscoop.warを解凍します。
mkdir war cd war jar xvf ..\infoscoop.war
<?xml version="1.0"?> <stax-web-app xmlns="http://www.stax.net/xml/webapp/1"> <appid>a-kimura/infoscoop</appid> <resource name="jdbc/iscoop" auth="Container" type="javax.sql.DataSource"> <param name="username" value="iscoop" /> <param name="password" value="XXXXX" /> <param name="url" value="jdbc:stax://iscoop" /> </resource> </stax-web-app>
appidは「アカウント名/アプリケーション名」
resourceはいわゆるデータソースの設定。jdbc/infoscoopにしておけば、以下の修正が必要ないんだろうが、書いてある通りにデータベース名と同じにしておいた。
stax-web.xmlについて詳しくはこちら
WEB-INF/web.xml
WEB-INF/classes/datasource.xml
のデータソース名を「jdbc/iscoop」に修正
infoscoop.war再作成
jar cvf ..\infoscoop.war *
デプロイ
ずいぶん前にダウンロードしたStax SDKをここで使います。
Stax SDKを解凍した直下にある「Stax Console」をクリックして、Stax Consoleを起動。ここでstaxコマンドが実行できます。
stax app:deploy -a a-kimura/infoscoop infoscoop.war
ずいぶんと時間がかかるが、そのうちデプロイが終わる。10分くらい?
ここまでは、おそらくinfoScoopにそんなに特化していない内容。
いろいろ動かないのでinfoScoopの設定変更
infoScoop管理画面で以下の設定を変更
「プロキシ設定」で以下のパターンを追加。*3
- アドレスパターン:http://localhost:80/(.*)
- 置換URL:http://infoscoop.a-kimura.staxapps.net/$1
- ヘッダ送信:全てのヘッダを送信
「初期画面設定」-「コマンドバー」-「ランキング」のURLを変更
他にもちょこっと直しているが、それは割愛。
感想
簡単に動きました。
infoScoop Calendarもそのうち動かしてみますかね。
「Deploy to servers on your EC2 account」とかいう機能があったりするから、そのうち便利に使えそうな気がする。最初はStaxで無料で動かして、アクセスが増えたら、EC2とか?でも、今はベータだから使えませんって言われる。