2012年2月5日日曜日

EC2インスタンスにMySQLを入れてみる

前回から引き続き、AWS関連のネタです。前々回のEclipseに「AWS Toolkit for Eclipse」を入れてみる、前回のAWSのElastic Beanstalkを使ってみると続いて、AWS RDSもしくはAWS SimpleDBを使おうと思いましたが、一旦EC2インスタンス1個だけでもやっていけないかなと思って一旦保留。(そーいう意味では、MySQLと連携するアプリを作れば、第2弾のEC2インスタンスにTomcatを導入してみるでインストールしたTomcatが活きてくるwww)

ということで、今回はEC2インスタンス(Amazon Linux)にMySQLをインストール手順を説明します。基本的にはその他のLinuxと変わらないです。

1. インストール先のEC2インスタンスにSSH接続し、rootユーザになる。


2. MySQLインストール
yumでインストールします。下図はいろいろインストールするものを指定していますが、mysql-serverのみでおkです。(後で気づいたのですが、他は指定しても「利用可能なmysql-clientとmysql-sharedがありません」と出たので。。。)

コマンド打つと、下図のようにいろいろメッセージが出てきます。

いくつかメッセージが出て、1回だけYes/No聞かれたので、Yesと答えて・・・という感じでインストールが行われて最後に「Complete!」が表示されればおkです。コンソール見てると、ファイル名に"amzn"と入っているファイルがいくつか表示されているのでAmazon Linux用のMySQLが用意されているんですね。

3. MySQL設定
インストールしただけではまだ動いていないです。動かす前にMySQLの設定をします。デフォルトの設定ファイルは/etc/my.cnfです。これとは別に環境ごとの設定?がされているファイルが/usr/share/mysql以下にあります。

いくつかcnfファイルがありますが、それぞれの意味はAmazon EC2 (Amazon Linux) での MySQL インストールと設定に書いてあります。今回はmicroインスタンスなので、my-small.cnfを使うことにします。/etc/my.cnfをバックアップしておいて、my-small.cnfを/etc以下に(my.cnfにリネームした上で)置いておきます。

4. MySQL起動
それでは起動します。

下図のようにOKがでればいいです。


5. chkconfig設定
OSが再起動したら自動でMySQLも起動するようにしておきます。

6. MySQLのrootユーザのパスワード設定
MySQLの管理操作ができるユーザのパスワードを設定しておきます。2つのシングルクォートの間に任意のパスワードを入れて登録します。

7. 匿名ユーザとパスワード無しユーザ削除
不正なアクセスを防ぐため、匿名ユーザとパスワード無しユーザを削除します。まずは、rootユーザでMySQLにログインします。下図の*****部分は、6.で設定したパスワードを入れます。

ログインしたら、下図のように打ち込んでユーザをdeleteします。

quit; と打ち込んで終了です。
とりあえず、ここまでくればMySQLを使える状態になりました。

今回はここまでです。

参考サイト:
道はなくても進むのだ。 / Amazon EC2 (Amazon Linux) での MySQL インストールと設定
ken’s room ~技術探求のメモ~ / ■[AWS]Amazon EC2 にてAmazon Linux AMIにMySQLを入れる
Carpe Diem / MySQL の公式 RPM を使おう

2012年2月4日土曜日

AWSのElastic Beanstalkを使ってみる

前回のEclipseに「AWS Toolkit for Eclipse」を入れてみるに続き、第4弾は「Elastic Beanstalk」を使ってみようと思います。

Elastic Beanstalkとは、簡単に言えば、Webアプリの実行環境を構築・管理するPaaSです。大雑把ですが、以下のような特徴があります。

  • コンテナは、Tomcat6 と Tomcat7
    • つまりJavaアプリしか動かせない。いずれはRuby on Railsにも対応するそう。
  • ロードバランサー機能
  • オートスケーリング機能
  • Beanstalk自身の機能は無料で使用可能
    • それ以外のEC2インスタンス、S3などが通常のAWS同様に課金対象


で、今回はサンプルアプリを作って、Beanstalkにデプロイするまでの手順を説明します。前提としては、前回話したEclipseにAWS Toolkit for Eclipseをインストールしていることです。


1. Eclipse起動

2. X509設定
Eclipseのメニューにある「ウィンドウ」→「AWS Tooklit」とクリックします。表示された「AWS Toolkit Preferences」の真ん中のあたりに「Optional configuration」をクリックすると、新たに入力項目が3つ表れます。これらを埋めるためには、「Manage your AWS X.509 certificate」というクリックして取得します。

まず、「Account Number」については、クリックした先の一番下の「アカウント識別子」というのがありますので、それを入力します。

それ以外の部分については、クリックした先の上のほうにある「アクセス証明書」の「X.509証明書」をクリックします。「新しい証明書を作成する」をクリックすると、X509証明書と秘密鍵の2つが作成されます。その2ファイルをダウンロードします。


Eclipseに戻り、「証明書ファイル」には"cert-"から始まるファイルを指定し、「Private Key File」には"pk-"から始まるファイルを指定してください。その後、「適用」ボタンをクリックして完了です。

3. 領域(リージョン)設定
Elastic Beanstalkは、言い換えればWebアプリ実行環境を備えたEC2インスタンスなのですが、今はなぜか「US East(Virginia)」でしか動かせないので、あらかじめ指定しておきます。他の場所を指定しちゃうアプリデプロイができません。※クラウドなのになんで場所を意識しないといけないんだが(´・ω・`)
「US East(Virginia)」を選んだ後、「適用」をクリックし、「OK」をクリックして設定ダイアログを閉じます。

4. Webアプリ作成
Beanstalkにデプロイするアプリを作ります。まずは、下図のように「New AWS Java Web Projerct...」をクリックします。

プロジェクト作成ダイアログが表示されます。プロジェクト名はお任せします。「Start from」のところではシンプルなアプリ又はAWS提供サンプル(Travel Log)が選べます。とりあえずは、「Basic Java Web Application」にしておきます。
その後、「完了」をクリックしてダイアログを閉じます。すると、Eclipseのエクスプローラ上にプロジェクトが現れます。

5. Beanstalkにデプロイ
それではこのサンプルをさっそくデプロイします(「New AWS Java Web Project」で作ったプロジェクトは特に何もしなくてもそのままデプロイできます)。プロジェクトを右クリックし、「Amazon Web サービス」→「Deploy to AWS Elastic Beanstalk...」をクリックします。
クリックすると、「サーバーで実行」というダイアログが表示されます。「サーバーのタイプを選択」のところでは「Amazon Web サービス」に表示されている「Tomcat 6」か「Tomcat 7」をクリックします。どちらを使うかは要件によって当然異なりますが、今回はとりあえず「Tomcat 7」を選びました。


「次へ」をクリックすると、「Configure Application and Environment」というダイアログが表示されます。

ここでいうApplicationとは、EnvironmentとVersionを内包する空間を指し、デプロイするアプリのことではないので注意です。Elastic Beanstalkでは、Applicationという空間に、複数のEnvironmentとVersionがあり、いわゆるアプリはEnvironmentという場所にデプロイされます。この辺りの説明はAWS Elastic Beanstalk 詳細 -ほぼ週刊AWSマイスターシリーズ第9回-が詳しいです。

なので、ここでは、ApplicationとEnvironmentを新規定義する、ということになります。もちろん、一度作ったApplicationを利用することも可能です。今回は、新規定義なので適当な名前をつけて作ります。

「次へ」をクリックすると、「拡張構成」ダイアログになります。今回は特に何もしない(というか、ここでできることがわからないので無視する)ので、「完了」をクリックしてダイアログを閉じます。

「完了」をクリックすると、「バージョン入力」ダイアログが表示されます。自動で生成された値が入っていますが、自分で決めた値を入力することも出来ます。とりあえず、僕は、vyyyymmddaaaaの形式(yyyyは西暦、mmは月、dd日、aaaaはビルド番号(初回なのでとりあえず0001))にしました。

「OK」をクリックするとデプロイ作業が始まります。ApplicationとEnvironmentを新規定義したので裏ではそれの作成から始まります。ちなみに、「OK」クリック直後の「サーバー」ビューでは以下のように表示されます。

しばらく待つと、デプロイが完了し、Eclipseでは下図のように表示されます。

ちなみに、AWS Management Consoleではどうなっているかと言うと、下図のようになっています。行き方はAWS Management Consoleに行き、上部のメニューにある「AWS Elastic Beanstalk」をクリックすればよいです。

"SampleApp"という名のApplicationがあり、そのEnvironmentの1つである"SampleEnv"が動いている、ということになります。"SampleEnv"にあるURLをクリックするとデプロイしたアプリをブラウザから開けます。

今回はここまでです。

参考サイト:
@IT AWSの自由自在なPaaS「Elastic Beanstalk」とは
悪戦苦闘 Tech memo AWS Elastic BeanstalkでDeployのときのエラー
AWS Elastic Beanstalk 詳細 -ほぼ週刊AWSマイスターシリーズ第9回-