ひとこと

― 今日のひとこと ―
起業しました。
(2024.4.24)

2013年2月3日日曜日

Amazon Web Serviceで仮想サーバ構築 No.9 -MySQLインストール-

後々使う可能性が高いので、AWS-EC2で作成した仮想サーバにMySQLをインストールしておく。




1.No.2にメモした方法でインスタンスに接続する。


2.MySQLをインストールする。
$ sudo apt-get install mysql-server
↓の画面でrootアカウントのパスワードを設定



3.デフォルトだと日本語が文字化けするので、文字コードを変更する。
# /etc/mysql/conf.d に.confファイルを作成する。ファイル名は任意(ここではcharset.cnf)
$ sudo nano /etc/mysql/conf.d/charset.cnf

# charset.cnfに以下の内容を記述

[client]
default-character-set=utf8

[mysqld]
character_set_server=utf8
skip-character-set-client-handshake



4.MySQLを再起動
sudo /etc/init.d/mysqld restart



これでおしまい。確認する時は以下のコマンドを実行する。
# MySQLにログイン
$ mysql -u root -p
Enter the password: パスワード入力

# MySQLの設定を確認
$ status

文字コードが正しく変更されていれば↓のようにutf-8が並ぶ!





ついでにinsertとselectだけできるユーザをひとつ作成しておく。
--grant <与える権限> on *.* to <ユーザ名> identified by '<パスワード>' [with grant option];
grant insert,select on *.* to user identified by 'user';

2013年2月2日土曜日

Amazon Web Serviceで仮想サーバ構築 No.8 -TomcatでBASIC認証-

Tomcatサーバのサーブレットプログラムに対するアクセスにBASIC認証を適応する方法。

プログラムの利用者を限定したい場合、No.7で利用可能になったHTTPS通信と併用する事でより安全に通信を行えるようになる。
っていうかBASIC認証で使用する秘密情報は素でネットワークを流れるから暗号通信と併用しないと危険

今回はデフォルトで用意されている「UserDatabaseRealm」を利用する。




1.No.2にメモした方法でインスタンスに接続する。


2.tomcatのtomcat-users.xmlを編集する。
roleに関する部分のコメントを解除し、必要に応じてロールやユーザを追加する。

ここを


こうする


今回はTomcatにアクセスを許可するユーザには「tomcat」というroleを割り当てる。


3.サーブレットのweb.xmlを編集する。

web-appタグにsecurity-constraintタグとlogin-configタグとsecurity-roleタグを追加する。
↓はJava ServletとAWS-SESでメール送信 No.3 で作成したプログラムにBASIC認証を導入した場合の例





    
    
        SendMail
        send.SendMail
      
    
        SendMail
        /SendMail
     

    

    
     
      html
      /*
     
     
      tomcat
     
    
    
    
     BASIC
     UserDatabaseRealm
    
    
  tomcat
    
    



4.Tomcatを再起動する。



これで設定はおしまい。BASIC認証を設定したプログラムにアクセスしてみると・・・


このように認証ウィンドウが開く。



ただ、いまいちよくわかんないんだけど
web-resource-nameタグで指定したhtmlフォルダ以外のプログラムにアクセスしても認証ウィンドウが出てくるんだよね。
まぁ自分の場合はメール送信プログラムの実行前に認証できてればよかったから別にいいけど。
この辺はきっと未来の自分がなんとかしてくれるだろう。。


追記(2013/02/03_17:22):web-resource-collectionタグ内の記述について
web-resource-nameタグに記述するのは「リソース名」ではなく、
「アクセス制限ルールを適用するリソースに対する任意の名称」です。つまり何でもいいようです。
また、url-patternタグに記述するのは「web-resource-nameで指定したリソースからのパス」ではなく、
単純に「アクセスを制限するリソースのURL」でした。servlet-mappingタグでのurl-patternの指定と同じ記法です。

たとえば、「http://xxx.xxx.xxx.xxx/SendMail/html/」以下のプログラムに対するアクセスに認証を設ける場合は、
     
      まろ最高
      /html/*
     
 
とするのが正解です。


貴重なアドバイスを下さった越冬老師様に、大変感謝いたします。


2013年2月1日金曜日

Amazon Web Serviceで仮想サーバ構築 No.7 -TomcatでHTTPS通信-

TomcatサーバとHTTPS通信できるようにする方法をメモする。

今回もこれまでにAWS-EC2で作成した仮想サーバを使用している(Ubuntu12/Tomcat7)




1.No.2にメモした方法でインスタンスに接続する。

2.No.4で設定したTomcatの所有ユーザ(自分の場合はmaro)のホームディレクトリへ移動する
cd /home/maro

3.SSL/TLS通信で必要となるキーストアを作成する。
keytool -genkey -alias tomcat -keyalg RSA

#以下の質問に答えていく(全てアルファベット)

Enter keystore password: キーストアのパスワードを入力

What is your first and last name?
  [Unknown]:  ①TomcatサーバのFQDNを入力

What is the name of your organizational unit?
  [Unknown]: ②組織単位名を入力

What is the name of your organization?
  [Unknown]:  ③組織名を入力

What is the name of your City or Locality?
  [Unknown]:  ④都市名または地域名を入力

What is the name of your State or Province?
  [Unknown]:  ⑤都道府県を入力

What is the two-letter country code for this unit?
  [Unknown]:  ⑥国番号を入力(日本ならJP)

  ちなみに、僕の場合は⑥以外は全てmaroだかmaro.comだか、とにかくてきとーに入力した。
  Elastic IPのサービスを受けていないからドメイン名など持ってない!とにかく暗号化できればいい。


4.server.xmlを編集する。

  No.6でポート番号の設定を変更したConnecterタグの少し下に、コメント化されたSSL/TLSに関するConnecterタグがある。
  そのコメントを解除して、以下の2行を追加する。
keystoreFile="キーストアの指定"
keystorePass="キーストアのパスワード"
  ついでにHTTPSのポート番号(Tomcatデフォルト値8443)をウェルノウンポートに合わせる場合は、
  「port="8443"」を「port="443"」に変更する。



5.Tomcatを再起動して変更を反映させる。




これでおわり。
実際にアクセスしてみると・・・

警告が表示される。まぁてきとーにドメイン指定された自前の証明書を使ってるわけだから当然よね。

例外として承認すれば接続できるわけだけど

散々な言われ様だな・・・


結果

URIスキームに注目。「https://」になってるのが確認できる。





次回はBASIC認証の導入。

Amazon Web Serviceで仮想サーバ構築 No.6 -Tomcatポート変更-

Tomcatのポート番号は8080がデフォルトだから、そのままだとサーバにアクセスする度にいちいち指定しないといけないから面倒。

というわけで、ポート番号をウェルノウンポートに合わせる方法をメモする。


1.tomcatの conf/server.xml を開く。

2.Connecterタグのportの値を変更する。

  これを


  こう


  redirectPortは別に変えなくてもいい。