Feb 20, 2013

Silk を OpenShift で動かす(公開編)

だいぶ間があいてしまったけど気を取り直して。

手順としては、Silk を動かすのに必要なQt5のライブラリのビルド、OpenShift でアカウントを作り、Silk アプリ用の"ギア"を用意してもろもろファイルをアップロード、という流れ。

まずは OpenShift のサーバーで動かす Qt5 を用意する。まぁいわゆる共用サーバーなので /usr/lib とかにコピるわけにはいかないので、LD_LIBRARY_PATH で Qt5ライブラリの場所を指定。この辺が未だによくわかってないんだけど、手元の x86な環境で Silk をビルドするときも、この LD_LIBRARY_PATH を参照する Qt5 を使う必要がある。具体的には rpath を無効にした状態で Qt5 をビルドする。Qt5をビルドするときの configure で -no-rpath を指定するとそういうバイナリができる。

自分の場合、まず手元の Ubuntu 64bit環境に Silk 用の作業フォルダを作成。その下に Silk 本体のクローンと Qt5 の 5.0.1ソースを展開。Qt5を下記のようなオプション付きで configure してビルドして Qt5の準備完了。

./configure -prefix /home/kimitake/work/silk/qt5.0.1/qtbase
  -opensource -confirm-license -nomake tests -nomake examples
  -no-rpath

次に Silk バイナリの用意。Silk をクローンしたルートフォルダで、先ほど作った qtbase/bin/qmake を指定して実行してさらにビルドする。

Qt5の準備をしてる間にでも OpenShift https://openshift.redhat.com/app/account/new で、必要な項目入力してアカウントを作成する。登録したメールアドレス宛てに確認メールが送られてくるのでそのURLをクリックすれば作成完了。ログインした状態で Create Application のページにアクセス。ここの左下の方に Do-It-Yourself ってアプリケーション名があるのでこれを選択。これがSilkアプリ用の"ギア"になる。

Public URL のところで Application name と Namespace とを指定。このApplication nameの方はアプリごとに付ける名前なので適当に。Namespaceの方は自分のアプリ(無料アカウントの場合3つくらい)全部に付く名前になるので多少気にしながら適当な名前を付けるw ちなみにアプリごとのURLには独自ドメインを割り振ることも可能。

他の設定はデフォルトのまま。最後の Scaling は有料アカウントじゃないともともと利用できないし、Do-It-Yourself なアプリで対応してるかどうかは未確認。アカウント作成後初めてアプリを作った場合は Next stepsの画面に Making code changes という項目があって、そこで ssh の公開鍵を設定することができるのでやっておく。無事公開鍵の登録が済むと、先ほどの Making code changes という項目に git clone の方法が表示されるようになる。新しいアプリを追加した場合は同じように git clone の方法が表示されるようになる。これは My Applications のところから各アプリの詳細画面にいくことで後からでも確認できる。詳細画面の WANT TO LOG IN TO YOUR APPLICATION? のリンクをクリックすると ssh でのログイン方法も確認できる。

Silk 用アプリの準備ができたら手元の環境に git clone する。OpenShiftへは通常Gitでpushすると、あとはサーバー側で公開用のディレクトリにコピーして、フックスクリプトを用意しておけば必要な処理も行ってくれる。

cloneしたルートフォルダに移動して、

  • binフォルダを作成してsilk 本体をコピー。
  • lib フォルダに silk/lib の中身(libsilk.so.1 や silk/imports,pluginsとか)をコピー。
  • Silkのドキュメントルートとなる share フォルダを丸ごとコピー。
  • Silkの etc フォルダを丸ごとコピー。
  • Qt5 の libフォルダ(qtbase/lib)から libQt5Core, libQt5Network, ibQt5Qml, libQt5Sql, libQt5V8 を libフォルダにコピー。Silkのバージョンによってはさらに必要なライブラリ増えてるかもしれない。
  • .openshift/action_hooks フォルダに下記のような start と stop スクリプトを置く。
    start:
    #!/bin/bash
    cd $OPENSHIFT_REPO_DIR
    nohup bin/silk --config etc/silkrc >${OPENSHIFT_DIY_LOG_DIR}/silk.log 2>&1 &
    
    stop:
    #!/bin/bash
    export PS=`ps -ef | grep silk | grep -v grep | awk '{ print $2 }'`
    if [ x"$PS" == x"" ]; then
            kill $PS > /dev/null 2>&1
    fi
    exit 0
    
  • ssh で OpenShift のログインして env | grep INTERNAL を実行して internal IP アドレスを調べる。この IP アドレスを etc/silkrc の listen の行の * と置き換える。あと tasks の行の ../shareのとこを ./share に書き換える。
  • さらにログインした状態で、~/app-root/data/.bash_profile を編集して下記行を追加
    export LD_LIBRARY_PATH=~/app-root/repo/lib
    

以上下準備が終わったら手元の cloneレポジトリで git commit して push する。

特にエラーが出てないようであれば、アプリの URLにアクセスして Silk のデモページが表示されるはず。ちなみに silkserver.cpp の load のとこで mime typeの変更をしないと QMLのソースがまんま降ってくるはずなんだけど、なんかこの記事書きながらテストしたときは素のまんまで動いてるようなのでもう必要ないのかもw


Related Info.

Comments

No comments yet

Add Comments

※下記の単語・フレーズはコメントで使用できません。大文字・小文字は同一視します。
poker, backgammon, tramadol, casino, insurance, loans
JavaScript is required when you submit comment %20%20%3c%61%20%69%64%3d%22%6e%75%63%6c%65%75%73%5f%63%66%22%3e%3c%2f%61%3e %3c%66%6f%72%6d%20%6d%65%74%68%6f%64%3d%22%70%6f%73%74%22%20%61%63%74%69%6f%6e%3d%22%23%6e%75%63%6c%65%75%73%5f%63%66%22%3e %09%3c%64%69%76%20%63%6c%61%73%73%3d%22%63%6f%6d%6d%65%6e%74%66%6f%72%6d%22%3e %3c%69%6e%70%75%74%20%74%79%70%65%3d%22%68%69%64%64%65%6e%22%20%6e%61%6d%65%3d%22%61%63%74%69%6f%6e%22%20%76%61%6c%75%65%3d%22%61%64%64%63%6f%6d%6d%65%6e%74%22%20%2f%3e %3c%69%6e%70%75%74%20%74%79%70%65%3d%22%68%69%64%64%65%6e%22%20%6e%61%6d%65%3d%22%75%72%6c%22%20%76%61%6c%75%65%3d%22%68%74%74%70%3a%2f%2f%6b%69%6d%69%74%61%6b%65%62%6c%6f%67%2e%6e%65%74%2f%69%74%65%6d%2f%38%32%34%2f%63%61%74%69%64%2f%33%32%22%20%2f%3e %3c%69%6e%70%75%74%20%74%79%70%65%3d%22%68%69%64%64%65%6e%22%20%6e%61%6d%65%3d%22%69%74%65%6d%69%64%22%20%76%61%6c%75%65%3d%22%38%32%34%22%20%2f%3e %09%09 %09%09%3c%6c%61%62%65%6c%20%66%6f%72%3d%22%6e%75%63%6c%65%75%73%5f%63%66%5f%62%6f%64%79%22%3eコメント%3a%3c%2f%6c%61%62%65%6c%3e %09%09%3c%74%65%78%74%61%72%65%61%20%6e%61%6d%65%3d%22%62%6f%64%79%22%20%63%6c%61%73%73%3d%22%66%6f%72%6d%66%69%65%6c%64%22%20%63%6f%6c%73%3d%22%34%30%22%20%72%6f%77%73%3d%22%31%30%22%20%69%64%3d%22%6e%75%63%6c%65%75%73%5f%63%66%5f%62%6f%64%79%22%3e%3c%2f%74%65%78%74%61%72%65%61%3e %09%09%3c%6c%61%62%65%6c%20%66%6f%72%3d%22%6e%75%63%6c%65%75%73%5f%63%66%5f%6e%61%6d%65%22%3eお名前%3a%3c%2f%6c%61%62%65%6c%3e %09%09%3c%69%6e%70%75%74%20%6e%61%6d%65%3d%22%75%73%65%72%22%20%73%69%7a%65%3d%22%34%30%22%20%6d%61%78%6c%65%6e%67%74%68%3d%22%34%30%22%20%76%61%6c%75%65%3d%22%22%20%63%6c%61%73%73%3d%22%66%6f%72%6d%66%69%65%6c%64%22%20%69%64%3d%22%6e%75%63%6c%65%75%73%5f%63%66%5f%6e%61%6d%65%22%20%2f%3e %09%09%3c%6c%61%62%65%6c%20%66%6f%72%3d%22%6e%75%63%6c%65%75%73%5f%63%66%5f%6d%61%69%6c%22%3eウェブサイト%3a%3c%2f%6c%61%62%65%6c%3e %09%09%3c%69%6e%70%75%74%20%6e%61%6d%65%3d%22%75%73%65%72%69%64%22%20%73%69%7a%65%3d%22%34%30%22%20%6d%61%78%6c%65%6e%67%74%68%3d%22%36%30%22%20%76%61%6c%75%65%3d%22%22%20%63%6c%61%73%73%3d%22%66%6f%72%6d%66%69%65%6c%64%22%20%69%64%3d%22%6e%75%63%6c%65%75%73%5f%63%66%5f%6d%61%69%6c%22%20%2f%3e %09%09%3c%6c%61%62%65%6c%20%66%6f%72%3d%22%6e%75%63%6c%65%75%73%5f%63%66%5f%65%6d%61%69%6c%22%3eメール%3a%3c%2f%6c%61%62%65%6c%3e %09%09%3c%69%6e%70%75%74%20%6e%61%6d%65%3d%22%65%6d%61%69%6c%22%20%73%69%7a%65%3d%22%34%30%22%20%6d%61%78%6c%65%6e%67%74%68%3d%22%31%30%30%22%20%76%61%6c%75%65%3d%22%22%20%63%6c%61%73%73%3d%22%66%6f%72%6d%66%69%65%6c%64%22%20%69%64%3d%22%6e%75%63%6c%65%75%73%5f%63%66%5f%65%6d%61%69%6c%22%20%2f%3e %09%09 %09%09%3c%69%6e%70%75%74%20%74%79%70%65%3d%22%63%68%65%63%6b%62%6f%78%22%20%76%61%6c%75%65%3d%22%31%22%20%6e%61%6d%65%3d%22%72%65%6d%65%6d%62%65%72%22%20%69%64%3d%22%6e%75%63%6c%65%75%73%5f%63%66%5f%72%65%6d%65%6d%62%65%72%22%20%20%2f%3e %09%09%3c%6c%61%62%65%6c%20%66%6f%72%3d%22%6e%75%63%6c%65%75%73%5f%63%66%5f%72%65%6d%65%6d%62%65%72%22%3e情報を記憶しておく%3c%2f%6c%61%62%65%6c%3e %09%09%3c%69%6e%70%75%74%20%74%79%70%65%3d%22%73%75%62%6d%69%74%22%20%61%6c%74%3d%22コメントを追加%22%20%76%61%6c%75%65%3d%22コメントを追加%22%20%63%6c%61%73%73%3d%22%66%6f%72%6d%62%75%74%74%6f%6e%22%20%2f%3e %09%3c%2f%64%69%76%3e %3c%69%6e%70%75%74%20%74%79%70%65%3d%22%68%69%64%64%65%6e%22%20%6e%61%6d%65%3d%22%6e%70%5f%70%72%6f%74%65%63%74%62%79%6d%64%35%22%20%76%61%6c%75%65%3d%22%39%65%34%37%64%62%39%30%37%30%30%31%30%61%30%65%31%39%62%39%31%38%65%31%33%36%37%39%63%38%62%35%22%3e %3c%69%6e%70%75%74%20%74%79%70%65%3d%22%68%69%64%64%65%6e%22%20%6e%61%6d%65%3d%22%6e%70%5f%70%72%6f%74%65%63%74%62%79%6d%64%35%5f%68%61%73%68%22%20%76%61%6c%75%65%3d%22%33%36%36%62%33%64%32%32%66%33%65%39%36%38%30%39%36%61%30%65%61%33%62%33%65%61%65%64%66%31%38%32%22%3e %3c%2f%66%6f%72%6d%3e %20%20

OpenID を使ってログインすることができます。

Identity URL:

Trackbacks

トラックバック
このエントリにトラックバックはありません
このトラックバックURLを使ってこの記事にトラックバックを送ることができます。 もしあなたのブログがトラックバック送信に対応していない場合にはこちらのフォームからトラックバックを送信することができます。.
visitor stats