ラベル centOS の投稿を表示しています。 すべての投稿を表示
ラベル centOS の投稿を表示しています。 すべての投稿を表示

2013年4月29日月曜日

CentOSでPlay! framework

開発環境


  • CentOS 6.3
  • Play! v2.1.0
  • sbt v0.12.2
  • jdk v1.6.0_24

 jdkはyumなんかで入っているものとして進めていく。


Install Play framework

$ cd ~
$ mkdir workspace
$ cd workspace
$ wget http://downloads.typesafe.com/play/2.1.0/play-2.1.0.zip
$ unzip play-2.1.0.zip
$ sudo cp play-2.1.0 /usr/local/
すべてのユーザでplayコマンドを使えるようにpathを通す。
$ sudo vi /etc/profile
/etc/profile
# added
export PATH=$PATH:/usr/local/play-2.1.0
$ source /etc/profile
playコマンド打つ前に、
java.io.FileNotFoundException: /usr/local/play-2.1.0/framework/sbt/boot/update.log
とか
Ooops - Something went wrong! Exception:java.io.IOException:
Cannot write parent directory:
Path(/home/foo/workspace/helloworld/app)
of /home/foo/workspace/helloworld/app/controllers
とか怒られないようにするためにゴニョゴニョ。
$ sudo touch /usr/local/play-2.1.0/framework/sbt/boot/update.log
$ sudo chmod -R a+w /usr/local/play-2.1.0/
play new sampleAppってコマンドでアプリの雛形作るときの sampleApp/app/controllers/フォルダが出来ないことに対するピンポイントな対応がいまいちよくわからんです。
【参考】play-mailing-llistでのやりとり

ここいらでplayコマンドが有効化どうかの確認。
$ cd ~/workspace
$ play help
      _            _
 _ __ | | __ _ _  _| |
| '_ \| |/ _' | || |_|
|  __/|_|\____|\__ (_)
|_|            |__/

play! 2.1.0 (using Java 1.6.0_24 and Scala 2.10.0), http://www.playframework.org
Welcome to Play 2.1.0!

These commands are available:
-----------------------------
license            Display licensing informations.
new [directory]    Create a new Play application in the specified directory.

You can also browse the complete documentation at http://www.playframework.org.

Install sbt

wget使ってsbt.zipをインスコ。yum使ってinstallしてる人もいるっぽい。
$ cd ~/workspace
$ wget http://scalasbt.artifactoryonline.com/scalasbt/sbt-native-packages/org/scala-sbt/sbt//0.12.2/sbt.zip
$ unzip sbt.zip

sbt-launch.jarを/bin/ディレクトリにコピー
$ sudo cp sbt/bin/sbt-launch.jar /bin/

$ cd /bin/
$ sudo ls -l | grep sbt

$ sudo vi sbt
# /bin/sbt 実行権限付与
$ cd /bin/
$ sudo chmod 755 sbt
$ sudo chmod 755 sbt-launch.jar
$ sudo ls -l | grep sbt
-rwxr-xr-x  1 root root     120  4月 29 20:14 2013 sbt
-rwxr-xr-x  1 root root 1105354  4月 29 20:02 2013 sbt-launch.jar

アプリの雛形を作る

$ cd ~/workspace
$ play new helloworld
       _            _
 _ __ | | __ _ _  _| |
| '_ \| |/ _' | || |_|
|  __/|_|\____|\__ (_)
|_|            |__/

play! 2.1.0 (using Java 1.6.0_24 and Scala 2.10.0), http://www.playframework.org

The new application will be created in /home/ryota/workspace/helloworld

What is the application name? [helloworld]
>

Which template do you want to use for this new application?

  1             - Create a simple Scala application
  2             - Create a simple Java application

> 2
OK, application helloworld is created.

Have fun!

$ ls helloworld
README  app  conf  project  public  test

$ cd helloworld
$ sbt
[info] Loading project definition from ~/workspace/helloworld/project
[info] Set current project to helloworld (in build file:~/workspace/helloworld/)

[helloworld] $ reload
[helloworld] $ update
[helloworld] $ compile
[success] Total time: 37 s, completed ごにょごにょ

ApacheとPlay!のNettyを連携

vhost使って、
domain/play
にアクセスしたときにhelloworldアプリに飛ぶように設定する。別にこの設定しなくても細かいこと気にしない人はiptablesの9000番port開ければいいと思ふ。
# インクルードするconfigファイルを置くディレクトリを作る
$ sudo mkdir /etc/httpd/conf/extras

# play用のエラーログ・ファイルを作る
$ sudo touch /var/log/play-error_log

# インクルードするファイルを作る
$ sudo vi /etc/httpd/conf/extras/httpd-play.conf
httpd-play.conf

    ServerAdmin foo@foo.com
    DocumentRoot "/var/www/html"
    ServerName play.foo.com
    Errorlog "/var/log/play-error_log"

        ProxyPass /play http://127.0.0.1:9000
        ProxyPassReverse /play http://127.0.0.1:9000
        RequestHeader unset Authorization

        
            Order allow,deny
            Allow from all
        

Apache本体のconfigファイルで追加configファイルをインクルードするようにごにょごにょ。
/etc/httpd/conf/httpd.conf
### added begin
## Include /etc/httpd/conf/extras/*.conf 
Include conf/extras/*.conf
### added end
Apacheの再起動
$ sudo service httpd restart
Stopping httpd:     [  OK  ]
Starting httpd:      [  OK  ]
helloworldアプリの起動
$ cd ~/workspace/helloworld
$ sbt
[helloworld] run

--- (Running the application from SBT, auto-reloading is enabled) ---

[info] play - Listening for HTTP on /0:0:0:0:0:0:0:0:9000

(Server started, use Ctrl+D to stop and go back to the console...)
ブラウザで
http://your-domain-here/play
にアクセスして、Welcome to Play 2.1.0 見たいページ出ればおk。

2013年1月28日月曜日

CentOSにおけるjettyのdaemon化

以前のエントリ(CentOSにjettyを導入する)
の続き.

参考にしたサイトは
nobukatsu.jp#jettyのデーモン化
VINELINUX#chkconfigコマンドによる自動起動の設定
UNIX LINUX コマンド・シェルスクリプト リファレンス#if文とtestコマンド

では,早速

 /etc/init.d/以下にjettyファイルを作成する
$ sudo vim /etc/init.d/jetty
作成するファイルは以下の通り
↑のファイルの/usr/local/jettyの部分は自分の環境に合わせる.

 /etc/init.d/jettyに実行権限追加
$ sudo chmod 755 /etc/init.d/jetty
$ ls -l /etc/init.d/jetty
-rwxr-xr-x XXX XXXX XXXX 日付とか /etc/init.d/jetty
nobukatsu.jp#jettyのデーモン化 で紹介されているのと違う点は,bashコマンドが使えない環境でも,daemonが動く,という点.

作成したjettyファイル内の
if [ -z `/usr/bin/pgrep -f "java -jar start.jar"` ];
の部分だが,このバッククォート「`」でくくられている部分を,
if [ -z $(/usr/bin/pgrep -f "java -jar start.jar") ];
のように書くと,bashコマンドがデフォルトで使えないようなSolarisでは動かないという指摘を先輩エンジニアから受けました.
 bashコマンドがないような環境を使用しない人にとってはあまり関係のない話です.今回は古の技術を尊重してやってみました.

 ちなみに,Centでshとbashの関係を調べてみると,
$ ls -alF /bin/sh
/bin/sh -> bash*
という風になっていて,shにはbashのシンボリックが貼られていることがわかる.
ついでにMacOS Xでは
$ ls -alF /bin/sh
/bin/sh*
$ ls -alF /bin/bash
/bin/bash*
てな感じです.微妙に違う…
で,ちょっと脱線しましたが最後にデーモンを動かしてみる.

 daemonを動かす
$ sudo service jetty start

CentOSにjettyを導入する


前提

・CentOSにjdkが入っている
・sudoコマンドが使える

install jetty

 eclipse.orgからjettyをインストール
$ cd ~
$ mkdir workspace
$ cd workspace
$ wget http://download.eclipse.org/jetty/stable-8/dist/jetty-distribution-8.1.8.v20121106.tar.gz
--日付--  http://download.eclipse.org/jetty/stable-8/dist/jetty-distribution-8.1.8.v20121106.tar.gz

いろいろメッセージが表示される

`jetty-distribution-8.1.8.v20121106.tar.gz' に保存中

100%[======================================>] 9,064,609    615K/s 時間 18s     

日付 (494 KB/s) - `jetty-distribution-8.1.8.v20121106.tar.gz' へ保存完了 [9064609/9064609]
 tar展開
$ tar xvzf ./jetty-distribution-8.1.8.v20121106.tar.gz
 jettyを/usr/local/に移動
$ sudo mv ./jetty-distribution-8.1.8.v20121106 /usr/local/jetty-distribution-8.1.8.v20121106

$ cd /usr/local/
$ ls -a
.
..
jetty-distribution-8.1.8.v20121106
 シンボリック作成
$ sudo ln -s /usr/local/jetty-distribution-8.1.8.v20121106/ /usr/local/jetty8
$ ls -a
.
..
jetty8
jetty-distribution-8.1.8.v20121106
 8080port開放
$ sudo vim /etc/sysconfig/iptables
以下を追加
# added begin
-A INPUT -p tcp -m tcp --dport 8080 -j ACCEPT
# added end
 jetty起動
$ cd /usr/local/jetty8/
$ java -jar start.jar
 起動確認
http://ホストネーム:8080
にアクセスして,jettyのページが表示されればおk.

 強制停止
$ sudo kill -9 `pgrep -f "java -jar start.jar"`

あとはApacheの連携とか,daemon化とか…

2012年7月29日日曜日

CentOS 6.2 Java環境構築メモ

  • 開発環境
さくらVPS
OS:CentOS 6.2 x86_64
jdk 1.7.0_05


  • 前提
sudoコマンドが使える (参考:アカベコマイリ - さくらのVPS を改めて使いはじめる 2 – sudo と SSH ポート変更)

ホスト名XXX
ユーザ名gari
作業用ディレクトリ~/workspace

・作業用ディレクトリ作成
[gari@XXX ~]$ mkdir workspace
[gari@XXX ~]$ ls -l
drwxrwxr-x 2 gari gari  xxxx Jul 27 15:56 workspace

・WinSCP等で jdk-7u5-linux-x64.rpm をworkspaceに入れておく.
[gari@XXX ~]$ cd workspace
[gari@XXX workspace]$ ls -l
-rw-rw-r-- 1 gari gari xxxxxxxx Jun 18 09:35 jdk-7u5-linux-x64.rpm

・実行権限付与
[gari@XXX workspace]$ chmod +x jdk-7u5-linux-x64.rpm
[gari@XXX workspace]$ ls -l
-rwxrwxr-x 1 gari gari xxxxxxxx Jun 18 09:35 jdk-7u5-linux-x64.rpm

・Javaパッケージをinstall
[gari@XXX workspace]$ sudo rpm -Uvh jdk-7u5-linux-x64.rpm
[sudo] password for gari:
Preparing...                ########################################### [100%]
   1:jdk                    ########################################### [100%]
Unpacking JAR files...
        rt.jar...
        jsse.jar...
        charsets.jar...
        tools.jar...
        localedata.jar...

・バージョン確認
[gari@XXX workspace]$ java -version
java version "1.7.0_05"
Java(TM) SE Runtime Environment (build 1.7.0_05-b05)
Java HotSpot(TM) 64-Bit Server VM (build 23.1-b03, mixed mode)

・環境変数の追加
[gari@XXX workspace]$ sudo vi /etc/profile
[sudo] password for gari:
最終行に以下を追加
export JAVA_HOME=/usr/java/default
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/jre/lib:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar

・環境変数を反映
[gari@XXX workspace]$ source /etc/profile

  • Java動作確認
[gari@XXX workspace]$ vi HelloWorld.java

・Javaファイル作成
HelloWorld.java
public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello World.");
    }
}

・コンパイル
[gari@XXX workspace]$ javac HelloWorld.java
[gari@XXX workspace]$ ls -l
total xxxxx
-rw-rw-r-- 1 gari gari      xxx Jul 27 15:56 HelloWorld.class
-rw-rw-r-- 1 gari gari      xxx Jul 27 15:56 HelloWorld.java
-rwxrwxr-x 1 gari gari xxxxxxxx Jun 18 09:35 jdk-7u5-linux-x64.rpm

・実行
[gari@XXX workspace]$ java HelloWorld
Hello World.


参考Web
Java - オヤジのサーバ構築に挑戦! Wiki* - サーバ構築 Java SDK 導入