dorayakiBlog

Java servlet をAWS Amazon EC2 にアップロードする流れ

個々の方法ではなく大まかな流れです。

※今回は絵とは関係ないログになります。

レンタルサーバで Java に対応している所が少ない。
自宅サーバではコストがかかる。
という点を発端として。
何よりCGI より高速であるという点
(メモリは食うものの)。

少し前のこと、
PHP や Java script を学んだ後、
Java servlet を、ローカル環境だけでなく公開用のサーバで使いたかったのだが、レンタルしているサーバが対応していなかったので、はてどうしたものか考えていた。他のレンタルサーバ会社でもほぼ同じで対応してないようだった、特に大手では。もちろん無いわけではないのだろうが。

となると自分でサーバをたてる必要がある、という事は何となくは知っていた。
とはいえ、技術や知識はもちろんだが、サーバにするパソコンとOS、一日中稼働させる電気代や空調費も必要と知った。知識や技術はなんとかするにしても無い袖は振れない。
(企業レベルでは管理する専門家の人件費やらサーバの為の空間の家賃や空調費など、もっとコストがかかるようだが。しかもそれが数台から数百台となると。)

なので、専用サーバを借りる手もあるが、もう少しコストを抑える為にクラウドやVPS などの仮想のサーバが適していると考えた。
その時たまたま、クラウドであるAmazonのAWS が、低いスペックタイプであれば初年度無料のようなキャンペーンをやっていたのでAmazon仕様のLinuxタイプの仮想サーバを借りた。サーバの費用は基本従量制のよう。

サーバはこれで良いとして、

とりあえず Servlet を動かす為には、

①AWS の管理画面からサーバのインスタンスを起動する。

②ファイル転送ソフトFTP クライアントと、自身のWindows などのマシン上でシェルからコマンドでサーバを操作する為のSSH をWeb上からダウンロードする。
最も著名な、前者は FFFTP 、後者はTera term を使わせて頂いた。

③AWS 管理画面の機能から、SSH に接続する為の公開鍵と秘密鍵のファイルを作る。

④SSH を起動し鍵でログインして、FTP をサーバに接続させる為に必要なユーザとパスワードをコマンドで追加・設定しておく。

⑤FTP ソフトを起動し、自身の仮想サーバに接続する設定をする。

⑥FTP ソフトで自身のマシンのローカル環境から、リモート環境である自身の仮想サーバのホームディレクトリへ公開したいファイルをコピーする。

⑦SSH で
ダウンロードしてきたWebサーバソフト(Tomcat など)を解凍し、任意の場所に置き、起動する。
この時点で自身のAWS のURL でアクセスするとWebサーバソフトのデフォルトの初期画面が出る。
自身のサイトやWebアプリを公開するには、Webサーバソフトの特定のディレクトリへHTML ファイルやプログラムなどのファイルを配置する。
ホームディレクトリにコピーしたファイルを
Tomcat のディレクトリの中の
/webapps/自分で作ったディレクトリ/
のディレクトリ内に。
ユーザーとその権限の追加・変更や、環境変数の設定などが必要となる。
実行環境としてJRE かJDK がインストールされている必要がある。既にインストールされていたが。
servlet はプロジェクトごとに、web.xml やコンパイルしたファイルなどを各ディレクトリや各ファイルに分けて、ひとつのディレクトリに構成する必要がある。

開通してしまえば何てことはない、Linuxサーバの仕組みと操作がつかめれば。

サイトやWebアプリ公開までの流れは大まかにはこの通りである。
その後色々学んでみたところ、ファイルの転送は他にも方法がありそうで、この流れ以外にもあるようだ。

各ソフトウェアやAWSの機能などの設定や詳しい説明は、諸々の書籍やWebサイトに私などよりも遥かに優れた使い手の方達の確実な一手が説明されているので、書店や検索などでそちらをご参照ください。

対応しているレンタルのサーバが少ないという事自体への対応と、
ブログシステムや、AWS のS3 というWebストレージを通しての公開ではなく、 サーバであるEC2 上に、WebサイトやWebアプリのファイルをアップロードする流れがよく分からなかったが、開通出来たので、全体の流れをメモとしても書いておきたい。
もちろんサーバ関係に詳しい方なら迷う事などないのだろうが、初学者には断片的にしか情報がなかったので。

とはいえ、基本は実物のパソコンのサーバでの作業と変わらない。

セキュリティ面の事を考えると、もう少しこの方面の技術を他のデザインやプログラミングと併せて学んでいこう、と考えている。

※Google app engine も検討したが、そちらは一部GAE 独自のシステムを Java で扱う必要があるようで、それはそれで便利そうだが、 他のクラウドに移行しても運営可能にする為に標準の操作を覚えたく、そちらは現段階では保留にさせて頂いた。