mike-neckのブログ

Java or Groovy or Swift or Golang

OpenShiftの始め方(初級)

タイトルのとおりです。

簡単なOpenShiftの始め方です。

応用的なことは何も書いていません。


アプリの開発のスタートの仕方

きくたろーさんが書いてくれています。

kikutaro777.hatenablog.com

クローン

作成したアプリケーションはgitでローカルに持ってこれます。

f:id:mike_neck:20150415230244p:plain

アプリケーションを作成した後の画面の赤で囲んだ部分がgitのリモートリポジトリーです。

ここにあるアドレスをコピーして

$ git clone ssh:hogehoghoe

すると、maven形式のプロジェクトがcloneされます。

開発

僕がつくった環境はWildFly8.2Finalの環境なので、普通にJava EE 7のアプリケーションをつくります。

嬉しい事に、デフォルトのJavaの設定が8になっていたりします。

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>

(もしかしたら設定でそうしていたのかも)

後は

  • アプリをシコシコ作る
  • 変更をgit add → git commitする
  • git push origin master

これだけで、勝手にOpenShift側でコンパイルして、ステージングしてくれます。

こんな感じ。

$ git push
Counting objects: 19, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (14/14), done.
Writing objects: 100% (19/19), 2.19 KiB | 0 bytes/s, done.
Total 19 (delta 7), reused 0 (delta 0)
remote: Stopping wildfly cart
remote: Sending SIGTERM to wildfly:243482 ...
remote: Building git ref 'master', commit d97f4de
remote: Found pom.xml... attempting to build with 'mvn -e clean package -Popenshift -DskipTests'
remote: Apache Maven 3.0.4 (r1232336; 2012-12-18 14:36:37-0500)
remote: Maven home: /usr/share/java/apache-maven-3.0.4
remote: Java version: 1.8.0_31, vendor: Oracle Corporation
remote: Java home: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.31-1.b13.el6_6.i386/jre
remote: Default locale: en_US, platform encoding: ANSI_X3.4-1968
remote: OS name: "linux", version: "2.6.32-504.3.3.el6.x86_64", arch: "i386", family: "unix"
remote: [INFO] Scanning for projects...
remote: [INFO]                                                                         
remote: [INFO] ------------------------------------------------------------------------
remote: [INFO] Building your-app-name 1.0
remote: [INFO] ------------------------------------------------------------------------
...省略
remote: Found 127.2.62.1:8080 listening port
remote: Found 127.2.62.1:9990 listening port
remote: CLIENT_MESSAGE: Could not connect to WildFly management interface, skipping deployment verification
remote: -------------------------
remote: Git Post-Receive Result: success
remote: Activation status: success
remote: Deployment completed with status: success
To ssh://1234567890abcdef1234567890abcdef@your-app-name-your-domain.rhcloud.com/~/git/your-app-name.git/
   684f7c8..d97f4de  master -> master
$ 

Free枠について

一応、Freeプランの内容を読むと

  • 3個のアプリ(3 gears)まで無料
  • 1GBのストレージ(アプリ自体の容量が含まれるかわからん)
  • 24時間はインスタンスを起動しててくれる(24時間アクセスがないと勝手に落ちる)

となっています。が、僕のアプリ(単なるスケジュールドタスクだけのクソアプリ)は6〜7時間に一回はタスクが動くのですが、たまに落ちてくれています。誰か解決方法知ってたら教えて下さい。

作ったアプリ

で、作ったクソアプリですが、

f:id:mike_neck:20150415231800p:plain

というアプリで、17時10分(最終バスの20分前)に

f:id:mike_neck:20150415231844p:plain

とメンションをくれたり、毎朝6:45に

f:id:mike_neck:20150415231908p:plain

と起こしてくれたり、昼くらいに

f:id:mike_neck:20150415231946p:plain

飯食えプレッシャーかけてきたり、

f:id:mike_neck:20150415232017p:plain

23時に寝ろと言ってきたりします。

ひめちゃん、かわいいやつです。


おわり。

なお、中級、上級者向けの記事を書く予定はありません。


あと、手前味噌で恐縮ですが、twitter4jアプリを作るときの注意点は下の記事をご覧ください。

mike-neck.hatenadiary.com


【2015/04/15 23:31 追記】

あ、これ書こうと思ってて忘れてた。

openshiftにブラウザーでなく、ターミナルから繋げられるrhcというツールが有ります。

  • インストール要件

儂のruby見てみたら、1.9.3だったので、rubyのなるべく新しいの入れるところからやった

$ rbenv versions
* system (set by /Users/mike/.rbenv/version)
  1.9.3-p392
$ cd ~/.rbenv/
$ git pull origin master
remote: Counting objects: 413, done.
remote: Compressing objects: 100% (37/37), done.
remote: Total 413 (delta 79), reused 68 (delta 68), pack-reused 308
Receiving objects: 100% (413/413), 107.68 KiB | 0 bytes/s, done.

... 省略

$ cd ~/.rbenv/plugins/ruby-build
$ git pull origin master
remote: Counting objects: 2549, done.
remote: Compressing objects: 100% (117/117), done.

... 省略

$ rbenv install 2.2.1
Downloading ruby-2.2.1.tar.gz...
-> http://dqw8nmjcqpjn7.cloudfront.net/5a4de38068eca8919cb087d338c0c2e3d72c9382c804fb27ab746e6c7819ab28
Installing ruby-2.2.1...
Installed ruby-2.2.1 to /Users/mike/.rbenv/versions/2.2.1
$ rbenv global 2.2.1
$ rbenv versions
  system
  1.9.3-p392
* 2.2.1 (set by /Users/mike/.rbenv/version)
$ sudo gem install rhc
Password:
Fetching: open4-1.3.4.gem (100%)
Successfully installed open4-1.3.4
Fetching: httpclient-2.6.0.1.gem (100%)
Successfully installed httpclient-2.6.0.1

... 省略

Fetching: rhc-1.35.1.gem (100%)
===========================================================================

If this is your first time installing the RHC tools, please run 'rhc setup'

===========================================================================
Successfully installed rhc-1.35.1
Parsing documentation for open4-1.3.4
Installing ri documentation for open4-1.3.4

... 省略

Done installing documentation for open4, httpclient, highline, commander, archive-tar-minitar, net-ssh, net-ssh-gateway, net-ssh-multi, net-scp, rhc after 10 seconds
10 gems installed
$ 

rhcコマンドを使えるようにしておくと、ログを見ることができたり、sshでログインできたりします。


【追記 その2】

WildFlyにはslf4jの実装が入っているらしく、slf4jをloggerとして使えるようです。

pom.xmlに下記の依存を設定します。

        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.12</version>
            <scope>provided</scope>
        </dependency>

src/main/webapp/WEB-INFの下にjboss-deployment-structure.xmlというファイルを準備して、次のように記述します。

<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
    <deployment>
        <dependencies>
            <!-- add your project dependencies here -->
            <module name="org.slf4j" />
        </dependencies>
    </deployment>
</jboss-deployment-structure>

これで、後は普通にprivate static final Logger LOGGER = LoggerFactory.getLogger(Hoge.class);とロガーを取得して、ログをinfoレベル以上で出力すれば、rhc tail -a your-app-nameで見ることができます。