2012年1月25日水曜日

EC2インスタンスにTomcatを導入してみる

前回のEC2インスタンスにJREを導入してみるに続き、第2弾として、APサーバであるTomcatを入れてみようと思います。

マシンのスペックは前回のを参照してください。

今回入れるTomcatのバージョンは、7.0.29 (2012年1月25日時点の最新版)です
# Tomcat7使ったこと無いけど・・・

1. Tomcat本体ダウンロード
http://tomcat.apache.org/download-70.cgiにアクセスし、tar.gz版TomcatのURLをコピーします。tar.gzのところを右クリックして「リンクアドレスをコピー」をクリックすればコピーできると思います。ブラウザによって、右クリックメニューが異なるので注意してください(僕は普段はChromeを使っています)

EC2インスタンスにSSH接続し、rootユーザになります。その後、コピーしたURLをターミナルの画面に貼り付けてwgetします。ちなみに、ディレクトリは/usr/localでいいです。なんで/usr/tmpにcdしてwgetしたんだろ・・・



2. apache-tomcat-7.0.25.tar.gz解凍
ダウンロードしたapache-tomcat-7.0.25.tar.gzを/usr/tmp上で解凍します。

3. シンボリックリンク設定
Tomcat本体に/usr/local/tomcatでアクセスできるようにシンボリックリンクを貼ります。

4. Tomcat起動
/usr/local/tomcat/binに移動し、catalina.shをオプションstartで起動します。本来は起動する前に設定変更が必要ですが、とりあえず保留。


実行すると、数行のメッセージが出た後にプロンプトが返ってきます。すぐに立ち上がったようです。tomcatのプロセスが立ち上がっていればOKです。

そして、ブラウザでTomcatの管理コンソールにアクセス・・・おっと、8080ポートを開けないとダメですね。

5. 8080ポート開放
AWS Management Consoleで8080ポートを開放します。
※注意:あくまで一時的に8080ポートを開けます。セキュリティの観点からするとTomcatの管理コンソールにアクセスできてしまうのはよくないからです。

AWS Management Consoleにアクセスし、以下の手順で設定します(画像キャプチャ参照)
①「Amazon EC2」をクリック
②「Security Groups」をクリック
③インスタンス起動時に実行されるSecurity Groupを一覧から選択する。特に何も設定等をしていなければ、「quick-start-1」でよいはず。実際にインスタンスが何のSecurity Groupで実行されているかは、左ペインのInstancesをクリックし、起動しているインスタンスの「Security Group」カラムを見ればよい
④「Inboud」タブをクリック
⑤ドロップボックスの中から「Custom TCP rule」を選択
⑥「Port range」欄に8080を入力
⑦「Add Rule」をクリック。その後、ボタンの下に「Your changes have not been applied yet.」というメッセージが現れる。
⑧「Apply Rule Changes」をクリック

⑧まで行くと、以下のように許可ポート一覧に8080のポートが追加された状態になります。

6. Tomcat管理コンソールにアクセス
ブラウザで、「http://ホスト名:8080/」 でアクセスしてみます。管理コンソールのページが表示されればTomcatが正常に起動していると言えます。


今日はここまで。

参考URL:
https://www.ibm.com/developerworks/mydeveloperworks/blogs/pgmrk/tags/jre?lang=en
https://www.ibm.com/developerworks/mydeveloperworks/blogs/pgmrk/entry/amazon_web_services__e3_81_ae_e7_84_a1_e6_96_99_e3_83_86_e3_82_a3_e3_82_a2_e3_82_92_e4_bd_bf_e3_81_862?lang=ja

2012年1月24日火曜日

EC2インスタンスにJREを導入してみる

このブログ書くの久々だな・・・

今ちょうどEC2インスタンスをお遊びで使っていまして、今はせいぜいApacheサーバを動かして、静的なWebページを置いているだけですが、本格的にAPサーバ(Tomcat)とDB(MySQL?)を入れようかなと思いまして・・・

その第1弾として、Tomcatを動かすためにOracle(旧Sun)のJREをEC2インスタンスに入れてみました。その手順を記します。

ちなみに、マシンのスペックですが、

  • OS: Amazon Linux AMI
  • Instance Type: Micro(t1.micro)
    • CPU Units: Up to 2 ECUs
    • CPU Cores: 1 Core
    • Memory: 613MB

です。

1. インストールされているJavaの確認
EC2インスタンスにSSH接続し、rootユーザになります。インストールされているJavaを以下のようにコマンドを打って確認します。EC2インスタンス作ってから特にJava周りで設定いじっていなければ、デフォルトとしてOpenJDKが使えるようになっていると思います。そうでない場合は既にOracleのJREが入っているか、何も入っていないかのどちらか(のはず)です。

OpenJDKだったので、OralceのJava(JRE)を入れましょうw

2. OracleのJavaインストーラ入手
ブラウザで、http://java.com/ja/download/manual.jsp にアクセスし、Linux版インストーラ(RPM)のURLをコピーしておきます。おそらく、「Linux x64 RPM」を右クリックして「リンクアドレスをコピー」をクリックすればコピーできると思います。それをターミナルの画面に貼り付けてwgetします。

wgetしたファイルの名前が長すぎるので一応リネームしておきます(jre-6u30-linux-rpm.binに変えます)。


3. インストール実行
jre-6u30-linux-rpm.binに実行権限を付与した上でインストールを実行します。


問題なければ最後に「Done」の文字が現れ、/usr/javaというディレクトリが出来ていると思います。


4. パス設定
いつでもどこでもjavaコマンドが実行できるように、Javaのインストールディレクトリへのパスを設定しておきます。/etc/profileをvi等で開き、下記を追加します。

export JAVA_HOME=/usr/java/latest
export JRE_HOME=$JAVA_HOME
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=./$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar

最後に以下を実行してパス読み込み完了です。

# source /etc/profile

今までrootユーザで実行してきましたが、他のユーザでもOracleのJavaが利用できるようになりました。試しに普段使うユーザーで以下を実行してみてください。

$ java -version


以上です。次はTomcatを入れるぞい。


参考URL:
https://www.ibm.com/developerworks/mydeveloperworks/blogs/pgmrk/tags/jre?lang=en

2011年7月16日土曜日

Eclipseの起動時に作成したプラグインの設定をしたい場合

Eclipseプラグインは普通はEclipseを起動後に設定ウィンドウを出して設定するものだが、
Eclipse起動時にいろんな状態(例えば、ファイルパスとか)を見て即座に設定したい場合がある。
そのようなプラグインを作る際のやり方を説明する。


1. AbstractUIPluginクラスを継承(extends)、IStartupクラスを実装(implements)するクラスを作る。
2. public void earlyStartup()をオーバーライドし、その中に起動時にやりたい処理を実装する。
3. プラグインプロジェクトのplugin.xml編集
1. Eclipseでplugins.xmlを開き、「拡張」タブクリック
2. 「拡張」画面にある「追加」ボタンをクリック
3. 「拡張ポイント」一覧が現れるので、「org.eclipse.ui.startup」を選択し、「完了」をクリックする。
4. 「拡張」画面に現れた「org.eclipse.ui.startup」の左についている△印をクリックして展開し、出てきた
ものをクリックする。
5. すると右側に「拡張要素詳細」が現れるので、「参照」ボタンを押し、1.~2.で作ったクラスを選択する。
4. 後はプラグインとしてプロジェクトをExportすればよい

以上です。

※参考
Eclipse起動時のプラグイン活性化

相対パスだったら絶対パスに直す

そのやり方について。

文字列が絶対パスかどうか判定して、もし相対パスだったらgetCanonicalPath()で絶対パス取得する。


File file = new File(str); // パスを引数に入れてFileインスタンス生成
if (!file.isAbsolute()) {  // 絶対パスの判定にisAbsolute()を使う
    try {
        str = file.getCanonicalPath(); // getCanonicalPath()で絶対パスを取得する
    } catch (IOException e) {  // getCanonicalPath()は例外をthrowするのでcatchする
        e.printStackTrace();
    }
}

基本だけど、ちゃんと記録しておこうと思って書きました。