2015年6月15日月曜日

HerokuでJavaを動かそう

やったのはチュートリアル分だけです。
https://devcenter.heroku.com/articles/getting-started-with-java#introduction

まずは前提条件で、JavaのインストールとMaven3のインストールがあったので、
インストールしてなかったMavenのインストールを。

$ brew install maven
==> Downloading https://www.apache.org/dyn/closer.cgi?path=maven/maven-3/3.3.3/b
==> Best Mirror http://ftp.kddilabs.jp/infosystems/apache/maven/maven-3/3.3.3/bi
######################################################################## 100.0%
🍺  /usr/local/Cellar/maven/3.3.3: 92 files, 9.3M, built in 7 seconds

ちゃんとMaven3が入ってるのをチェック(気にするならインストール時にバージョン指定しろ)
$ mvn -v
Apache Maven 3.3.3 (7994120775791599e205a5524ec3e0dfe41d4a06; 2015-04-22T20:57:37+09:00)
Maven home: /usr/local/Cellar/maven/3.3.3/libexec
Java version: 1.7.0_21, vendor: Oracle Corporation
Java home: /Library/Java/JavaVirtualMachines/jdk1.7.0_21.jdk/Contents/Home/jre
Default locale: ja_JP, platform encoding: UTF-8
OS name: "mac os x", version: "10.10.3", arch: "x86_64", family: "mac"


まずはサンプルをclone。
$ git clone https://github.com/heroku/java-getting-started.git
Cloning into 'java-getting-started'...
remote: Counting objects: 56, done.
remote: Total 56 (delta 0), reused 0 (delta 0), pack-reused 56
Unpacking objects: 100% (56/56), done.
Checking connectivity... done.


フォルダ移動して、
場所の準備
$ ./java-getting-started
$ heroku create
Creating calm-bayou-2127... done, stack is cedar-14
https://calm-bayou-2127.herokuapp.com/ | https://git.heroku.com/calm-bayou-2127.git
Git remote heroku added


資材をpush
$ git push heroku master
Counting objects: 49, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (36/36), done.
Writing objects: 100% (49/49), 6.27 KiB | 0 bytes/s, done.
Total 49 (delta 18), reused 0 (delta 0)
remote: Compressing source files... done.
remote: Building source:
remote: 
remote: -----> Java app detected
remote: -----> Installing OpenJDK 1.8... done
remote: -----> Installing Maven 3.3.1... done
remote: -----> Executing: mvn -B -DskipTests=true clean install
remote:        [INFO] Scanning for projects...
remote:        [INFO]                                                                         
remote:        [INFO] ------------------------------------------------------------------------
remote:        [INFO] Building helloworld 1.0-SNAPSHOT
remote:        [INFO] ------------------------------------------------------------------------
remote:        [INFO] Downloading: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-clean-plugin/2.5/maven-clean-plugin-2.5.pom
...
...(長すぎなんで省略)
...
remote:        [INFO] ------------------------------------------------------------------------
remote:        [INFO] BUILD SUCCESS
remote:        [INFO] ------------------------------------------------------------------------
remote:        [INFO] Total time: 54.123 s
remote:        [INFO] Finished at: 2015-06-15T14:18:05+00:00
remote:        [INFO] Final Memory: 22M/431M
remote:        [INFO] ------------------------------------------------------------------------
remote: -----> Discovering process types
remote:        Procfile declares types -> web
remote: 
remote: -----> Compressing... done, 50.3MB
remote: -----> Launching... done, v5
remote:        https://calm-bayou-2127.herokuapp.com/ deployed to Heroku
remote: 
remote: Verifying deploy... done.
To https://git.heroku.com/calm-bayou-2127.git
 * [new branch]      master -> master


$ heroku ps:scale web=1
Scaling dynos... done, now running web at 1:1X.


$ heroku open
Opening calm-bayou-2127... done


するとブラウザが開かれます。
ちゃんと起動できてるようです。



今どきの自宅サーバの構築のメリットって

なんでしょうね
あるとしたら、こんな感じかね。
  • ブログとかのWebサーバ
  • ファイルサーバ
  • 独自ドメインのメールサーバ
  • 独自Proxyサーバ、ファイアウォールサーバ
  • 自宅のカメラ/センサとかとつないで自宅監視サーバ
  •  その他、ネットワークとかで遊びたい変態向け(語弊あり)

大抵、上2つくらい?なのかなって思ってるけど、正直今どき自宅サーバ作る必要ないよね。
ブログもファイル保管も腐るほどサービスあるし、無料でもなんとか使う範囲でしょ。

メールサーバとかProxyサーバとかやりたい人もいるんだろうけど、AWSとかGCPとか十分でしょ。
さすがに無料では使えなくても、月500円としても、1年で6000円、5年で30000円。
5年もしたら自宅サーバもHDD交換とか、壊れた/拡張したいPCパーツの交換代でお金かかるし、借りるのと大差ないんじゃないのかな。

# それ以降のはさすがにクラウドサービスではムリだろうけど。
# 好きに構築してくださいw

「クラウド怖い、自宅サーバなら安全」とか考えてる人は、どれだけ自分がセキュリティ対策してるか考えてみよう。よっぽとサービス提供してる企業の方が考えてると思う。

まぁ、ゲームするとか動画編集するとか特別な用途が無い限り、こんなごっついPCなんで不要な時代だよね。
#要は自分も早く捨ててしまいたいってことだけです