2014年10月24日金曜日

history コマンド実行履歴を表示

■コマンド履歴を表示する
------------------------------------------------------
[root@xxxxxxxxx ~]# history
    1  cd share/
    2  ls -l
    3  cd files
~~中略~~~~~~~
[root@xxxxxxxxx ~]# echo ${HISTTIMEFORMAT}
[root@dti-vps-srv741 ~]#
------------------------------------------------------
■コマンド履歴を日付時刻付で表示する
環境変数HISTTIMEFORMATに日付フォーマットを設定すると
historyコマンドの実行結果に日付時刻も記録するようになる
------------------------------------------------------
[xxxxxx@xxxxxxxx ~]$ history
    1  2014-10-24 10:32:05 /etc/init.d/tomcat5 start
    2  2014-10-24 10:32:05 vi /etc/init.d/tomcat5
    3  2014-10-24 10:32:05 EXIT
~~中略~~~~~~~
[xxxxxx@xxxxxxxx ~]$ echo ${HISTTIMEFORMAT}
%F %T
[xxxxxx@xxxxxxxx ~]$
------------------------------------------------------


■コマンド履歴を削除する
------------------------------------------------------
[xxxxxx@xxxxxxxx ~]$ history -c[xxxxxx@xxxxxxxx ~]$ history    1  2014-10-24 10:58:43 history[xxxxxx@xxxxxxxx ~]$

------------------------------------------------------

2014年10月21日火曜日

個人事業主メモ 退職 切り替え 個人事業主 SE

必要な手続き
http://egsguide.com/owner.php

退職届フォーマット
http://www.template.usefulful.net/down/syanai16_2.lzh


就職、社内文書

2014年9月30日火曜日

bash の脆弱性  SehllShock (CVE-2014-6721)

対応
yumつかってるなら
yum update bashで9月26日にだされた修正パッチをあてればよい


実際どのような箇所が問題なのか詳しく説明してくれているサイト様、すごいよくわかる・・!
http://moro-archive.hatenablog.com/entry/2014/09/27/200553



root@xxxxxx]# env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
vulnerable  ←コイツがでるとアウト
this is a test

上記のようになると脆弱性ありありなので
yum update bashを実行
その後

[root@xxxxxx]# env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
this is a test

デナクナッター


----  仕事にて古いredhatの対応もせねばならなくなりそうなので色々まとめ     ------

■redhat or centosなら下記コマンドを実行してOSversionを確認する
cat /etc/redhat-release


■通常のredhat4は既にサポート切れ(2012/02/29)だが、延長契約をしてれば2015/02/29までredhatのレポジトリから
bashのアップデートで対応が可能。延長契約しているのかどうかをユーザ様に確認

#RHEL4 ELSは、2005年に出荷開始された「Red Hat Enterprise Linux 4」の7年間の標準サポートに加え、3年間の延長サポートを提供するもの。これにより、2012年2月29日までの標準サポートを最大2015年2月末まで延長が可能となる。

■現状脆弱性確認
[root@xxxxxx]# env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
vulnerable   ←下記のthis is a test以外が表示された場合脆弱性あり
this is a test ←この文字列のみ表示された場合脆弱性なし

■バッシュ対応確認チェックスクリプト
https://github.com/hannob/bashcheck

[root@dti-vps-srv741 ~]# sh bashcheck
Testing /bin/bash ...
Bash version 4.1.2(1)-release

Variable function parser pre/suffixed [(), redhat], bugs not exploitable
Not vulnerable to CVE-2014-6271 (original shellshock)
Not vulnerable to CVE-2014-7169 (taviso bug)
Not vulnerable to CVE-2014-7186 (redir_stack bug)
Test for CVE-2014-7187 not reliable without address sanitizer
Found non-exploitable CVE-2014-6277 (lcamtuf bug #1)
Not vulnerable to CVE-2014-6278 (lcamtuf bug #2)

上記のように表示されていれば対応完了済
対応できていないwarningやらerrorなどの文字列が含まれた結果が表示されるかと

■update対応
☆redhat 5~などなら
yum update bash-*
のみで対応できる。

☆redhat 4は延長サポートをうけていれば
 up2date -u bash-*
 で対応可能

☆redhat 4は延長サポートをうけていない場合
1・オラクルからでてる修正パッチをwgetで入手
wget https://oss.oracle.com/el4/SRPMS-updates/bash-3.0-27.0.2.el4.src.rpm
2・リビルド
rpmbuild -rebuild bash-3.0-27.0.2.el4.src.rpm
(rpmbuildコマンドが使えない場合使えるようインストールしておくこと)
3・インストール
rpm -Uvh bash-3.0-27.0.3.i386.rpm

■現状脆弱性確認
[root@xxxxxx]# env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
this is a test

上記結果となっていればインストール対応完了


バッシュversion確認
rpm -qa | egrep '^bash'

2014年9月29日月曜日

postfix メモ

■動いてるかもしれないデフォルトのsendmailを止める
/etc/rc.d/init.d/sendmail stop

■postfixインストール
yum -y install postfix

■postfix起動
[root@dti-vps-srv741 trunk]# service postfix restart
Shutting down postfix:                                     [FAILED]
Starting postfix:                                          [  OK  ]

■MTA変更前の設定確認
[root@dti-vps-srv741 trunk]# alternatives --display mta
mta - status is manual.
 link currently points to /usr/sbin/sendmail.sendmail    ←デフォルトはsendmail  

■MTAの切り替え
[root@xxxxx trunk]# alternatives --config mta

There are 2 programs which provide 'mta'.

  Selection    Command
-----------------------------------------------
*+ 1           /usr/sbin/sendmail.sendmail                      ・・・デフォルトはsendmailになってる
   2           /usr/sbin/sendmail.postfix

Enter to keep the current selection[+], or type selection number: 2  ・・postfixは2なので2を入力しエンター

■MTA変更後の設定確認
[root@xxxxx trunk]# alternatives --display mta
mta - status is manual.
 link currently points to /usr/sbin/sendmail.postfix    ←postfixになったことを確認

■メール送信テスト
[[root@xxxxx trunk]# /usr/sbin/sendmail -f <送信元メアド> <送信先メアド> <<EOM
From: <送信元メアド>
To: <送信先メアド>
Subject:テストです
Content-Type:text/plain;charset=UTF-8;
テストでメールを送ってみました。

EOM


送信先メアドで上記の送信テストのメールを受信できたかを確認


2014年9月19日金曜日

linux 権限系コマンドメモ

■現在のディレクトリ配下のroot権限になっているものを探す
find ./ -user root

■現在のディレクトリ配下のroot権限になっているものに対して一括でchown userA.groupAを実行する

find ./ -user root | xargs -i -r chown userA.groupA {}


■SVNの状態を確認する
svn st -u

■ファイルを更新する(SVN)
svn up -r HEAD
※リビジョンはリリースするときにどれを適用するのか決める

2014年9月10日水曜日

手動とcron実行・及び違うサーバで同じシェルスクリプト叩いて実行結果が違った時の確認

実行するときの環境変数の差を疑うべし

実行ユーザでprintenvした環境変数と
cronで実行したprintenvを比べてLANG設定とかちゃんと同じか確認する

# vi /etc/crontab
------------------------------------------------------------------------
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name command to be executed

*/1 * * * * root printenv > /root/printenv.txt
---------------------------------------------------------------

# less /root/printenv.txt
----------------------------------------
MAILTO=root
SHELL=/bin/bash
USER=root
PATH=/sbin:/bin:/usr/sbin:/usr/bin
PWD=/
LANG=ja_JP.UTF-8
SHLVL=1
HOME=/
LOGNAME=root
_=/usr/bin/printenv
----------------------------------------



検証環境と本番環境で違っていたので上記の方法で確認して本番環境に
LANG設定がされてなかったのを確認

2014年7月17日木曜日

MySQL メモ

■カラムの追加と削除
http://www.dbonline.jp/mysql/table/index20.html

2014年7月16日水曜日

置換を行う REPLACE SQL

■テーブルのあるカラムを対象にabcという文字列が存在している場合、abcをdefに置き換えてアップデートする 特定行だけにしたい場合はwhere句をつける

UPDATE テーブル名 SET カラム名=REPLACE(カラム名,'abc','drg') ;

2014年7月15日火曜日

改行コードを入れる SQL

INSERT INTO NANTOKA_TABLE (textbody) VALUES ('改行を' || chr(10) || 'いれます');

chr(13) : CR    chr(10) : LF

2014年7月14日月曜日

MySQL コマンドラインメモ

1■エラーを無視してインポートするMySQLのコマンド( force)
http://nob-log.info/2013/02/15/mysql-force-import/

2■コマンドラインで実行するときのオプション
http://dev.mysql.com/doc/refman/4.1/ja/mysql.html


3■MySQLのコマンドラインで-pオプションを使わずにパスワードを指定する方法
http://heartbeats.jp/hbblog/2010/03/mysql-p.html
これをやらないと毎回
Warning: Using a password on the command line interface can be insecure.
がでてめんどい。


2+3の複合
シェルスクリプトでselect実行結果を変数にいれたいとき
-e  SQL文を渡すためのオプション
B   実行結果の枠線を消す
N   カラム名を表示しない

変数名=`mysql -uユーザ名 DB名 -NBe "select ~~"`

セレクトで得たid群分処理を回したい

ids=`mysql -uユーザ名 DB名 -NBe "select id from xxxxx"`
for i in $ids
do
 echo $i      
done

みたいな感じ ids に 1 2 3 と結果がはいった場合
for分は3回実行され $i は 1 2 3と順次中身がとりだされ実行される

2014年7月4日金曜日

cakePHPメモ

CakePHPの共通のライブラリの作り方

http://ameblo.jp/itboy/entry-11354038711.html

CakePHP:モデル内でコンポーネントを呼び出す

http://mac-studio.info/cakephp%EF%BC%9A%E3%83%A2%E3%83%87%E3%83%AB%E5%86%85%E3%81%A7%E3%82%B3%E3%83%B3%E3%83%9D%E3%83%BC%E3%83%8D%E3%83%B3%E3%83%88%E3%82%92%E5%91%BC%E3%81%B3%E5%87%BA%E3%81%99

CakePHPでコントローラーを複数のディレクトリに整理する方法

http://d.hatena.ne.jp/yandod/20080510/1210416583


[CakePHP2]コンポーネントでloadModelできる便利メソッドを作る

http://www.happyquality.com/2012/08/24/2449.htm

CakePHP2でComponentからHTTPリクエストのクエリパラメータを取得する方法

http://tech.oga-ria.com/get-request-query-parameter-at-component-in-cakephp/

2014年7月1日火曜日

cakephpでユーザ定義定数を読みだす

http://hakomori.net/cakephp-original-constant/

defineだけ記述したものでやりたく上記を参考にしてやってみたが
エラーが発生した・・とほほ


$configを最低でもひとつ定義していないと上記画面になるっぽい
下記のような$configをてきとーに一個かいてみたら上記画面はでなくなり、問題なく動作しました。
$config['test'] = array(
  "test_a"=>"abc",
  "test_b"=>"def",
 "test_c"=>"ghi",
);

2014年6月18日水曜日

Google Maps API V3 逆ジオコーディング

参考
https://developers.google.com/maps/documentation/javascript/geocoding?hl=ja
http://pcrice.blog129.fc2.com/blog-entry-161.html
https://sites.google.com/site/gmapsapi3/Home/services
http://negimemo.net/1860




現在地の緯度・経度を取得してそれを引数に都道府県を特定したかったので
上記を参考に取得確認できるようなものをてけとーにかいたのでメモ

<html>
<body>
<head>
    <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
</head>

<script type="text/javascript">
if (navigator.geolocation) {

    // 現在の位置情報を取得
    navigator.geolocation.getCurrentPosition(

      // (1)位置情報の取得に成功した場合
      function (pos){
        reversegeocoding(pos.coords.latitude,pos.coords.longitude);
      },
      // (2)位置情報の取得に失敗した場合
      function (error) {
        var message = "";

        switch (error.code) {

          // 位置情報が取得できない場合
          case error.POSITION_UNAVAILABLE:
            message = "位置情報の取得ができませんでした。";
            break;

          // Geolocationの使用が許可されない場合
          case error.PERMISSION_DENIED:
            message = "位置情報取得の使用許可がされませんでした。";
            break;

          // タイムアウトした場合
          case error.PERMISSION_DENIED_TIMEOUT:
            message = "位置情報取得中にタイムアウトしました。";
            break;
        }
                window.alert(message);
        }
    );
} else {
    window.alert("本ブラウザではGeolocationが使えません");
}

function reversegeocoding(lat,lng){

    var geocoder;
        alert("id: " + lat); // 緯度
        alert("keido: " + lng); // 経度
        geocoder = new google.maps.Geocoder();
        var latlng = new google.maps.LatLng(lat,lng);

if (geocoder) {
            geocoder.geocode({'latLng': latlng}, function(results, status) {
                if (status == google.maps.GeocoderStatus.OK) {
                        for (var r = 0; r < results.length; r ++) {
                                var end = 0;
                                var address = results[r].address_components;
                                for (var i = 0; i < address.length; i++) {
                                        switch (address[i].types[0]) {
                                                case "administrative_area_level_1":
                                                alert(address[i].long_name);
                                                end = 1;
                                                break;
                                        }
                                }
                                if(end == 1){
                                        break;
                                }
                        }

                }else{
                    alert("Geocoder failed due to: " + status);
                }
                });
        }
}
</script>
</body>
</html>

2014年6月12日木曜日

vi --LinuxCommand


■■ 編集モードへ移る ■■
・現在のカーソル位置から挿入
i

・現在のカーソル位置から置換
R

・現在行の末尾に追加
A

■■ 終了 ■■■■■■■■
・保存
:w

・保存して終了
:wq

・保存せずに終了
:q

・変更した行も保存せずに終了
:q!

■■ 検索 ■■■■■■■■
・前方検索
/正規表現

・後方検索
?正規表現

・次の候補
n

・前の候補
N

■■■■■■■■■■■■■
・行表示
:set number

・指定行に飛ぶ
 517行目に飛ぶ
:517

・範囲選択での削除
  1. 削除範囲の開始行で「ms」と入力します。
  2. 削除範囲の終了行で「me」と入力します。
  3. :'s,'ed」と入力し、エンターを押します。
参考
http://d.hatena.ne.jp/nattou_curry_2/20090915/1253022774#delete


2014年6月9日月曜日

jQuery 値を取得する

http://www.jquerystudy.info/reference/
http://www.jquerystudy.info/reference/manipulation/text.html

・jQuery 選択されているラジオボタンの値を取得する
http://symfoware.blog68.fc2.com/blog-entry-871.html

・jQueryでチェックボックスのチェック状態を調べる
http://d.hatena.ne.jp/replication/20130613/1371137959

・jQueryでチェックされたcheckboxの値を取得して配列に格納する方法、また、配列をcheckboxの値に設定する方法
http://knt45.hatenablog.com/entry/2013/04/15/131531

2014年5月22日木曜日

シンボリックリンクを作成する ln --LinuxCommand

ln -s <参照先> シンボリックリンク名

・/var/www/share配下にproperty_imagesという名のシンボリックリンクを作成
  向き先は/opt/images/public
ln -s /opt/images/public /var/www/share/property_images

2014年5月18日日曜日

apache2.4 mysql5.6 php5.5 linuxインストールメモ

※centos6.4, httpd-2.4.6, MySQL-5.6.14, php-5.5.6
■最新化
yum update
■makeの下準備
yum install gcc gcc-c++ zlib zlib-devel libxml2 libxml2-devel libmcrypt libmcrypt-devel curl curl-devel openssl-devel
■Apache
yum install -y pcre-devel
wget http://archive.apache.org/dist/httpd/httpd-2.4.6.tar.gz
tar zxvf httpd-2.4.6.tar.gz
cd httpd-2.4.6
cd ./srclib/
wget http://ftp.jaist.ac.jp/pub/apache//apr/apr-1.5.1.tar.gz
wget http://ftp.jaist.ac.jp/pub/apache//apr/apr-util-1.5.3.tar.gz
tar zxvf apr-1.5.1.tar.gz
tar zxvf apr-util-1.5.3.tar.gz
mv apr-1.5.0 apr
mv apr-util-1.5.3 apr-util
cd ..
./configure --with-included-apr --enable-mods-shared=all
make
make install
/usr/local/apache2/bin/httpd -v

cp build/rpm/httpd.init /etc/rc.d/init.d/httpd
vim /etc/rc.d/init.d/httpd ← bin,pidのあたりを修正する

ps -aux | grep httpd
kill [process number]

service httpd [start,stop,restart]

vim /etc/hosts ← hostname を追加する

htpasswd -c .htpasswd xxxxxx

/usr/local/apache2/bin/httpd -S -DSSL
/usr/local/apache2/bin/httpd -M
■MySQL
yum install libaio libaio-devel
wget http://dev.mysql.com/get/Downloads/MySQL-5.6/MySQL-5.6.14-1.linux_glibc2.5.x86_64.rpm-bundle.tar
tar xvf MySQL-5.6.14-1.linux_glibc2.5.x86_64.rpm-bundle.tar
rpm -ivh MySQL-shared-5.6.14-1.linux_glibc2.5.x86_64.rpm
rpm -ivh MySQL-client-5.6.14-1.linux_glibc2.5.x86_64.rpm
rpm -ivh MySQL-server-5.6.14-1.linux_glibc2.5.x86_64.rpm
rpm -ivh MySQL-devel-5.6.14-1.linux_glibc2.5.x86_64.rpm

ls /etc/my.cnf
cp /usr/share/mysql/my-default.cnf /etc/my.cnf
vim /etc/my.cnf
service mysql start

view ~/.mysql_secret ← パスワードの確認
mysql -u root -p
SET PASSWORD = PASSWORD('root');
■PHP
wget http://ftp.riken.jp/Linux/fedora/epel/6/i386/epel-release-6-8.noarch.rpm
rpm -Uvh epel-release-6-8.noarch.rpm
vim /etc/yum.repos.d/epel.repo ← enabled=0
yum --enablerepo=epel install libmcrypt-devel
wget http://jp1.php.net/get/php-5.5.6.tar.gz/from/this/mirror
tar zxvf php-5.5.6.tar.gz
cd php-5.5.6
./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs --enable-mbstring --enable-mbregex --with-mcrypt --enable-calendar --with-libdir=lib64 --with-mysql --with-mysqli --with-openssl --with-curl --with-curlwrappers --enable-zip
[20140724]./configure --prefix=/usr/local/php --with-apxs2=/etc/httpd/bin/apxs --enable-mbstring --enable-mbregex --with-mcrypt --enable-calendar --with-libdir=lib64 --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-openssl --with-curl --enable-zip --enable-memcache --with-gd --with-zlibmake
make test
make install

/usr/local/php/bin/php -v
cd /usr/bin
ln -s /usr/local/php/bin/php php
php -r 'phpinfo();'  | grep php.ini
cp php.ini-development /usr/local/php/lib/php.ini
vim /usr/local/php/lib/php.ini ← time.zone = Asia/Tokyo
■SVN
yum install subversion
svn help
svn export https://xxxxxxxx
■phpmadmin
wget http://downloads.sourceforge.net/project/phpmyadmin/phpMyAdmin/4.0.9/phpMyAdmin-4.0.9-all-languages.zip?r=http%3A%2F%2Fwww.phpmyadmin.net%2Fhome_page%2Findex.php&ts=1385817138&use_mirror=jaist
unzip phpMyAdmin-4.0.9-all-languages.zip
mv phpMyAdmin-4.0.9-all-languages phpmyadmin
mv phpMyAdmin-4.0.9-all-languages.zip ./org
cd phpmyadmin/
cp config.sample.inc.php config.inc.php
vim config.inc.php

2014年5月13日火曜日

phpadminインストール メモ linux

■phpadminインストール
cd /root/src
wget http://sourceforge.net/projects/phpmyadmin/files/phpMyAdmin/4.2.0/phpMyAdmin-4.2.0-all-languages.tar.gz/download#
tar xvfz download
mv phpMyAdmin-4.2.0-all-languages /etc/httpd/htdocs/phpmyadmin
cp /etc/httpd/htdocs/phpmyadmin/config.sample.inc.php /etc/httpd/htdocs/phpmyadmin/config.inc.php
chmod 660 /etc/httpd/htdocs/phpmyadmin/config.inc.php
vi /etc/httpd/htdocs/phpmyadmin/config.inc.php

$cfg['blowfish_secret'] = 'denen';
$cfg['Lang'] = 'ja-utf-8';

Basic認証設置
/etc/httpd/bin/htpasswd -c /etc/httpd/htdocs/phpmyadmin/.htpasswd xxxxx  ←xxxはユーザ名
パスワード: xxxxxxx

vi /etc/httpd/htdocs/phpmyadmin/.htaccess

AuthType Basic
AuthName "Please Enter Your Password"
AuthUserFile /etc/httpd/htdocs/phpmyadmin/.htpasswd
Require valid-user

Subversionのインストール・設定

http://www.playstudy.net/wiki/server/subversion-install.html

2014年5月12日月曜日

mysql 5.6.16インストールメモ Linux

yum install libaio libaio-devel
wget http://dev.mysql.com/get/Downloads/MySQL-5.6/MySQL-5.6.16-1.linux_glibc2.5.x86_64.rpm-bundle.tar
tar xvf MySQL-5.6.16-1.linux_glibc2.5.x86_64.rpm-bundle.tar

rpm -ivh MySQL-shared-5.6.16-1.linux_glibc2.5.x86_64.rpm
rpm -ivh MySQL-client-5.6.16-1.linux_glibc2.5.x86_64.rpm
rpm -ivh MySQL-server-5.6.16-1.linux_glibc2.5.x86_64.rpm
rpm -ivh MySQL-devel-5.6.16-1.linux_glibc2.5.x86_64.rpm

ls /usr/my.cnf
cp -p /usr/my.cnf /usr/my.cnf_org
cp /usr/share/mysql/my-default.cnf /usr/my.cnf
vim /usr/my.cnf

cat ~/.mysql_secret パスワード確認
mysql -u root -p
mysql> set password for 'root'@'localhost' = password('root'); パスワード設定



dumpファイルでリストア
mysql -u root -p データベース名 < dumpファイル

・mysql起動/停止
/etc/init.d/mysql start
/etc/init.d/mysql stop
・設定ファイル
/usr/my.cnf

2014年5月8日木曜日

memcachedインストール Linux CentOS6.3

■memcached インストール
yum install -y memcached         インストール
less vi /etc/sysconfig/memcached 設定ファイル確認
/etc/init.d/memcached start   起動
chkconfig memcached on   自動起動設定
chkconfig --list | grep 3:on 自動起動設定確認
telnet localhost 11211   接続
quit                     接続終了

■phpのセッションをmemcachedに変更する
/usr/local/php/bin/pecl install memcache  memcache.soができる
vi /usr/local/php/lib/php.ini                       php設定ファイルのセッション部分を修正する

----------------------------------------------
extension=memcache.so

;session.save_handler = files
session.save_handler = memcache

;session.save_path = "/tmp"
session.save_path = "tcp://localhost:11211"

----------------------------------------------

2014年5月7日水曜日

locate ファイルを高速に検索 LinuxCommand

■はいってなければインストール
[root@xxxxxx xxxxxx]# locate php.ini
bash: locate: コマンドが見つかりません
[root@xxxxxx xxxxxx]# yum install mlocate       
~~インストールログ略~~
[root@xxxxxx xxxxxx]# locate php.ini       ・・・ まだ足りぬ
locate: stat () `'/var/lib/mlocate/mlocate.db' できません: そのようなファイルや ディレクトリはありません  
[root@xxxxxx xxxxxx]# updatedb     ・・・ updatedb
[root@xxxxxx xxxxxx]# locate php.ini             ・・・ コマンド実行できた
/etc/php.ini
/root/php.ini
/usr/local/php/lib/php.ini
/usr/local/src/php-5.5.6/php.ini-development
/usr/local/src/php-5.5.6/php.ini-production
/usr/local/src/php-5.5.8/php.ini-development
/usr/local/src/php-5.5.8/php.ini-production
/usr/share/doc/php-common-5.3.3/php.ini-development
/usr/share/doc/php-common-5.3.3/php.ini-production


要約すると・・
yum install mlocate    ・・インストールして
updatedb          ・・updatedbすれば使える


■使い方
locate <ファイル名>

使用例 php.iniファイルのあるパスを一覧表示
[root@xxxxxx xxxxxx]# locate php.ini
/etc/php.ini
/root/php.ini
/usr/local/php/lib/php.ini
/usr/local/src/php-5.5.6/php.ini-development
/usr/local/src/php-5.5.6/php.ini-production
/usr/local/src/php-5.5.8/php.ini-development
/usr/local/src/php-5.5.8/php.ini-production
/usr/share/doc/php-common-5.3.3/php.ini-development
/usr/share/doc/php-common-5.3.3/php.ini-production

2014年5月6日火曜日

ネットワーク設定

■プライベートIPアドレスを指定する    centOS6.3
vi /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE="eth0"
#BOOTPROTO="dhcp"  ←コメントアウトする
IPADDR=192.168.0.X    ←指定したいIPアドレスを設定する
NETMASK=255.255.255.0
GATEWAY=192.168.0.1     ←デフォルトゲータウェイ
HWADDR="D4:3D:7E:0B:FD:67"
NM_CONTROLLED="yes"
ONBOOT="yes"              ←noだったらyesにしとく
TYPE="Ethernet"



※上記BOOTPROTOのコメントアウトとONBOOTをyesにしておかないと再起動したときに
プライベートIPアドレスがセットされないで127.0.0.1にもどる。するのわすれてリモートで再起動しちゃってつながらくなったのは良い思い出。


■ネットワーク起動/停止/再起動
etc/rc.d/init.d/network restart
etc/rc.d/init.d/network start
etc/rc.d/init.d/network stop

シャットダウン・再起動 shutdown  LinuxCommand

shutdown -r   再起動する
shutdown -h   シャットダウンする
shutdown now すぐにシャットダウン・再起動を行う






■すぐに再起動する
shutdown -r now

2014年4月25日金曜日

Apache Struts2 の脆弱性対策について(CVE-2014-0094)(S2-020)

https://www.ipa.go.jp/security/ciadr/vul/20140417-struts.html
■概要: Apache Struts のバージョン 2.0.0 から 2.3.16 には、ClassLoader を操作される脆弱性が存在(CVE-2014-0094)が存在しますが、同様の脆弱性がApache Struts 1.Xにおいても存在することを確認された。
デフォルト状態のStruts1.X及びStruts1.Xを拡張したフレームワークが本脆弱性の影響を受ける可能性。
過去、Struts2に関する攻撃は脆弱性公表後に早期に行われている傾向がある。
今回のStruts1.Xに対する脆弱性についても、同様に攻撃が行われる可能性があるため、早急な対策を推奨。

■対象となるアプリケーションとバージョン Struts1.X (検証済バージョンはStruts 1.3.8、Struts1.3.10のみですが、他のバージョンも影響を受けると想定される。)

■対策: Struts1.Xはサポート切れの製品であるため修正パッチは提供されない可能性がある。
本脆弱性にはパラメータ名に不正な文字列が含まれる特徴がある。
Struts2では不正なパラメータを遮断する設定機能が提供されていますが、Struts1.Xに同様の機能は存在しないため、設定で回避することが出来ない。
そのため、ServletFilterやWAF等を使用して不正なパラメータ名を含むリクエストを遮断する必要があります。

遮断用文字列の例 (^|\.)[cC]lass\.
※「.Class.」「.class.」「(行頭)Class.」「(行頭)class.」の場合検知するような正規表現となります。
ただ、パラメータ名に前述の文字列を含む リクエストが遮断されるためアプリケーションの正常動作に影響を与える可能性があります。

■想定される被害 (1)サービスの停止 (2)リモートからのファイルの読み込み (3)リモートからのコードの実行
■参考(類似の脆弱性) S2-020 CVE-2014-0094 http://struts.apache.org/release/2.3.x/docs/s2-020.html
http://www.scutum.jp/information/waf_tech_blog/2014/04/waf-blog-036.html

■対策コード
http://www.mbsd.jp/img/testFilter.java


sar CPU・ネットワーク・メモリ・ディスクの情報確認 LinuxCommand

■インストール
CentOS/iostat,sarコマンドのインストール
http://linux.just4fun.biz/CentOS/iostat,sar%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB.html#n7f92f26

■インストールしたけど実行できないとき
http://www.uetyi.mydns.jp/wordpress/linux-server/entry-122.html


以下インストールして実行できず実行できるようになるまでのメモログ。CentOS6.3
[root@xxxxx  ~]# sar
-bash: sar: コマンドが見つかりません
[root@xxxxx ~]# yum install sysstat
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp.iij.ad.jp
 * epel: ftp.kddilabs.jp
 * extras: ftp.iij.ad.jp
 * updates: ftp.iij.ad.jp
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package sysstat.x86_64 0:9.0.4-22.el6 will be installed
--> Processing Dependency: /etc/cron.d for package: sysstat-9.0.4-22.el6.x86_64
--> Running transaction check
---> Package cronie.x86_64 0:1.4.4-12.el6 will be installed
--> Processing Dependency: dailyjobs for package: cronie-1.4.4-12.el6.x86_64
--> Processing Dependency: /usr/sbin/sendmail for package: cronie-1.4.4-12.el6.x86_64
--> Running transaction check
---> Package cronie-anacron.x86_64 0:1.4.4-12.el6 will be installed
--> Processing Dependency: crontabs for package: cronie-anacron-1.4.4-12.el6.x86_64
---> Package exim.x86_64 0:4.72-4.el6 will be installed
--> Running transaction check
---> Package crontabs.noarch 0:1.10-33.el6 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package                Arch           Version               Repository    Size
================================================================================
Installing:
 sysstat                x86_64         9.0.4-22.el6          base         230 k
Installing for dependencies:
 cronie                 x86_64         1.4.4-12.el6          base          73 k
 cronie-anacron         x86_64         1.4.4-12.el6          base          30 k
 crontabs               noarch         1.10-33.el6           base          10 k
 exim                   x86_64         4.72-4.el6            epel         1.2 M

Transaction Summary
================================================================================
Install       5 Package(s)

Total download size: 1.6 M
Installed size: 4.8 M
Is this ok [y/N]: y
Downloading Packages:
(1/5): cronie-1.4.4-12.el6.x86_64.rpm                    |  73 kB     00:00
(2/5): cronie-anacron-1.4.4-12.el6.x86_64.rpm            |  30 kB     00:00
(3/5): crontabs-1.10-33.el6.noarch.rpm                   |  10 kB     00:00
(4/5): exim-4.72-4.el6.x86_64.rpm                        | 1.2 MB     00:00
(5/5): sysstat-9.0.4-22.el6.x86_64.rpm                   | 230 kB     00:00
--------------------------------------------------------------------------------
Total                                           2.5 MB/s | 1.6 MB     00:00
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing : exim-4.72-4.el6.x86_64                                       1/5
  Installing : cronie-1.4.4-12.el6.x86_64                                   2/5
  Installing : crontabs-1.10-33.el6.noarch                                  3/5
  Installing : cronie-anacron-1.4.4-12.el6.x86_64                           4/5
  Installing : sysstat-9.0.4-22.el6.x86_64                                  5/5
  Verifying  : crontabs-1.10-33.el6.noarch                                  1/5
  Verifying  : exim-4.72-4.el6.x86_64                                       2/5
  Verifying  : cronie-anacron-1.4.4-12.el6.x86_64                           3/5
  Verifying  : sysstat-9.0.4-22.el6.x86_64                                  4/5
  Verifying  : cronie-1.4.4-12.el6.x86_64                                   5/5

Installed:
  sysstat.x86_64 0:9.0.4-22.el6

Dependency Installed:
  cronie.x86_64 0:1.4.4-12.el6        cronie-anacron.x86_64 0:1.4.4-12.el6
  crontabs.noarch 0:1.10-33.el6       exim.x86_64 0:4.72-4.el6

Complete!
[root@xxxxx  ~]# sar
/var/log/sa/sa25 を開けません: そのようなファイルやディレクトリはありません


[root@xxxxx ~]#  /etc/init.d/sysstat start
Calling the system activity data collector (sadc)...
[root@buront ~]# sar
Linux 2.6.32-431.el6.x86_64 (buront.localdomain)        2014年04月25日  _x86_64_        (2 CPU)

11時12分23秒       LINUX RESTART
[root@xxxxx ~]#


2014年4月23日水曜日

.htaccess メモ

■有効範囲
適用範囲このファイルを制御をおこないたいディレクトリに置けば、そのディレクトリと下位ディレクトリに設定が反映される。
ただし、下位のディレクトリに別の.htaccessがあった場合はそちらが優先される。
上記のようにOverrideが有効になる範囲が設定されている場合は、許可されている範囲でのみ設定が再定義される。

上位のディレクトリやhttpd.conf(access.conf)には共通の設定を記述し、細かい制御をおこないたいディレクトリで個別の設定をかくとよいだろう。
記述のない項目に関しては、上位ディレクトリの設定が継承されるので、心配ならば明示的に記述しておくほうがよいだろう。

■windowsで.htaccessのファイルを作成するとき
GUI上でやろうとすると弾かれてしまうことぬなる











なのでコマンドプロンプトでやる
適当にファイルを作成したらrenameにて .htaccessとファイル名を修正する

2014年4月22日火曜日

mysql 5.5.32インストールメモ windows

■ダウンロード
http://ftp.ntu.edu.tw/MySQL/Downloads/MySQL-5.5/
上記URLからmysql-5.5.32-win32.msiをダウンロード
















■インストール
ダウンロードしたmysql-5.5.32-win32.msiをクリックし実行
以下下記のようにすすめていく































環境変数 Path の設定
インストールディレクトリ/bin をpathに追加する
C:\Program Files\MySQL\MySQL Server 5.5\bin





コマンドプロンプトにてmysqlに接続できるか確認を行う。
mysql -u root -p

2014年4月18日金曜日

文字列処理と入力チェック


ユーザのパスワードを変更する passwd -- LinuxConfig/LinuxCommand

# passwd xxxxxx ・・ユーザ:xxxxxxのパスワードを変更する
# passwd            ・・ユーザ名を指定しない場合はカレントユーザのパスワード変更となる


※rootで他者のパスワードを変更する際は旧パスワードは聞かれない。
※以前使用していたパスワード、またそれと似ているパスワードは設定できない(下記ログはcentos6.3にて施行したもの)
---------------------------------------------
[root@xxxxxx ~]# passwd xxxxxx
ユーザー xxxxxx のパスワードを変更。
新しいパスワード:
新しいパスワードを再入力してください:
passwd: 全ての認証トークンが正しく更新できました。
[root@xxxxxx ~]# su xxxxxx
[xxxxxx@xxxxxx root]$ passwd
ユーザー xxxxxx のパスワードを変更。
xxxxxx 用にパスワードを変更中
現在のUNIXパスワード: xxxxxxxxxxxx
新しいパスワード:
よくないパスワード: 古いものと似ています
新しいパスワード:
------------------------------------

ssh接続の設定 /etc/ssh/sshd_config  LinuxConfig


# RSA秘密鍵 identityを必須にする( no で“必須”を指定 )
PasswordAuthentication no
# rootでのログインを禁止する
PermitRootLogin no
# パスワード無しのログインを許すか
PermitEmptyPasswords no
# .rhosts等を信用するか(RSA認証付き)
RhostsRSAAuthentication no
# ユーザhogeのみ接続許可をする(不特定多数に接続させない為
AllowUsers hoge

設定内容を修正したら再起動を行い設定を反映させる
# /etc/rc.d/init.d/sshd restart

http://www.miloweb.net/ssh.html
http://fnya.cocolog-nifty.com/blog/2012/03/centos-6aa8.html
http://akiniwa.hatenablog.jp/entry/2013/09/09/080718


ユーザ一覧を確認 /etc/passwd --LinucConfig--

ユーザー名、パスワード、ユーザーID、グループID、コメント,ホームディレクトリ、ログインシェルが記録されている

[root@xxxxxx ~]# cat /etc/passwd

root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
~~

root:x:0:0:root:/root:/bin/bash
上記を左から準備
root:ユーザ名
x:「 x 」という文字か、もしくは暗号化されたパスワード。「 x 」はシャドウパスワードを使用している事を意味します。
0:ユーザーID
0:グループID
root:コメント
/root:ユーザのホームディレクトリ
/bin/bash:ユーザのログインシェル名

パスワードの部分が空白である場合、パスワード無しでログインできる。セキュリティ上よろしくなのにで設定すべし。
パスワード部分の「 x 」を削除すると、パスワード未設定の状態になり、 パスワード無しでログインできる状態にする事ができます( パスワード無しでログインできる環境なら )。

ユーザ一覧のみを出力
[root@buront ~]# cut -d: -f1 /etc/passwd
root
bin
daemon
adm
~~

参考
http://kazmax.zpp.jp/linux_beginner/etc_passwd.html

2014年4月17日木曜日

phpのチューニング 設定

Apache MPM/ prefork or worker  メモ

Apacheは2.0から、起動時にMPM(Multi-Processing Modules)という基本モジュールが選択できるようになった


workerモードでは、「php-mbstring」や「php-mysql」などのPHP拡張機能が使えない感じでした。
mod_phpは非スレッドセーフであるため、MPMはworkerではなくprefork一択となる

どっちの設定になっているか確認する方法
# apachectl -V | grep 'Server MPM'
Server MPM:     Worker
※上記はApache2.0.55ではapachectl -VでServer MPMの項目が表示されないので確認できない

ApacheのMPM、「prefork」と「worker」を切り替える方法
http://blog.flatlabs.net/20110222_232623/
Apache + PHPでloadavgがじわじわ上がっていく現象と対策
http://blog.uu59.org/2012-02-18-prefork-mpm-with-php.html

サバリプレイス時のjava画像認証がエラーで表示されなくなったときの対応メモ

java.lang.UnsatisfiedLinkError: /usr/java/j2sdk1.4.2_13/jre/lib/i386/libawt.so: libXp.so.6: cannot open shared object file: No such file or directory

[root@xxxxx ~]# yum install libXp.so.6
java.lang.UnsatisfiedLinkError: /usr/java/j2sdk1.4.2_13/jre/lib/i386/libawt.so: libXt.so.6: cannot open shared object file: No such file or directory

[root@xxxxx ~]# yum install libXt.so.6
java.lang.UnsatisfiedLinkError: /usr/java/j2sdk1.4.2_13/jre/lib/i386/libawt.so: libXtst.so.6: cannot open shared object file: No such file or directory

[root@xxxxx]# yum install libXtst.so.6

srcを再配備しapa tom再起動後
文字認証が表示されるようになった

imagik

ImagickはPHPからImageMagickを使う際に使うpecl
画像操作/加工系の機能を提供

TCPDF

TCPDF」は、PHP用のライブラリで、PDFファイルを動的に作成するためのライブラリ(クラス)

環境変数の設定 --windows--





Apache+SSL環境構築


eclipseインストール java tomcat設定

Pleiades - Eclipse プラグイン日本語化プラグイン
Pleiades All in One は Windows 向けに開発対象プログラミング言語別でパッケージングした Eclipse 本体と Pleiades および便利なプラグインのセット。
ダウンロードした zip ファイルを解凍 (zip 解凍時の注意) し、eclipse.exe を起動すれば、すぐに日本語化された Eclipse を利用できる。

http://mergedoc.sourceforge.jp/index.html


開発環境にあわせてよく設定変更をする箇所
■javaの設定
ウィンドドウ(W)→設定→Java→インストール済みのJRE
ウィンドドウ(W)→設定→Java→コンパイラー
■tomcatの設定
ウィンドドウ(W)→設定→Tomcat
ウィンドドウ(W)→設定→Tomcat→JVM設定
■antの設定
ウィンドドウ(W)→設定→Ant→ランタイム


※↓はウィンドドウ(W)→設定→Java→インストール済みのJREの設定画面



















■SVN設定
・メニューから「ウィンドウ → パースペクティブを開く → その他 → SVNリポジトリー・エクスプローラー」を選択し、「OK」
・SVNリポジトリー・エクスプローラーで、マウス右クリック → 新規 → リポジトリー・ロケーション
・URL欄に、SVNのアドレスを入力
・ラベル : xxxxxx
・認証 : ログインユーザ名
・パスワード : パスワード
・「終了」をクリック
・「リポジトリ・エクスプローラ」に、SVNの内容が展開されることを確認
 -チェックアウト
・開発対象の案件(リポジトリラベル名)上で、マウス右クリック
・検索/別名チェックアウト
・名前を指定してプロジェクトとしてチェックアウトを選択
・名前の欄を、リポジトリラベル名と同じにする
・「終了」をクリック
・メニューから「ウィンドウ → パースペクティブを開く → リソース」を選択
・入力したプロジェクト名でチェックアウトされていることを確認

2014年4月16日水曜日

Java文字列連結の性能

http://d.hatena.ne.jp/nowokay/20140408#1396924547
http://d.hatena.ne.jp/nowokay/20140409#1397010846
http://d.hatena.ne.jp/nowokay/20140413#1397359039

http://d.hatena.ne.jp/j5ik2o/20110222/1298380551

セキュリティ設定 Linuxメモ

CentOS で行なっておきたいセキュリティ設定
http://fnya.cocolog-nifty.com/blog/2012/03/centos-6aa8.html

鍵交換方式による SSH 接続メモ- PuTTY/teraterm

■PuTTY
http://www.kuins.kyoto-u.ac.jp/news/47/putty-gen.html
■teraterm
http://centos.server-manual.com/centos6_ssh_teraterm_rsa.html

/etc/sysconfig/iptables portの設定 LinuxConfig

プロセスが使用中のファイルを調査 -- lsof -- LinuxComand


外部から接続するための設定 postgreSQL


ExcelからPostgreSQLへODBC接続


eclipse メモ

eclipse3.3
java ~6 ~tomcat6.0
eclipse3.6
java ~6 ~tomcat7.0
eclipse3.7
java ~7 ~tomcat7.0

Antメモ

Antインストール
http://ameblo.jp/developer-yk/entry-11062548252.html


Antのbuild.xmlをEclipseから自動生成
http://www.hitachi.co.jp/Prod/comp/soft1/cosminexus/useful/tips/091204_eclipse-create-buildxml.html

build.xml
http://www.javadrive.jp/ant/buildxml/index1.html

Javaメモ


2014年4月8日火曜日

ファイル/ディレクトリのアクセス権変更 -- chmod -- LinuxCommand

ファイル/ディレクトリのアクセス権を変更する

chmod 777 file-x ・・file-xのアクセス権限を777に変更する
chmod a+x file-x ・・全てユーザ(所有者、グループ、その他のユーザー)のfile-xの実行権限を付与する。
chmod -R 777 directory-x ・・directory-x内のファイル全て及びディレクトリのアクセス権限を777に変更する
chown -Rc user-a directory-x -cをつけることによりアクセス権限が変更されたファイルを詳細情報付きで表示する


数値の意味 左から順に所有者、グループ、その他のユーザーの権限
0 ---
1 --x
2 -w-
3 -wx
4 r--
5 r-x
6 rw-
7 rwx


r 読み込み権限
w 書き込み権限
x 実行権限

u 所有者の権限
g グループの権限
o その他のユーザーの権限
a すべての権限

前回起動方法の確認 PostgreSQL

起動対象のデータディレクトリ内に存在するpostmaster.optsを調べる

less /usr/local/pgsql/data/postmaster.opts
↓下記のように起動時のコマンドが表示される
/usr/local/pgsql/bin/postgres "-D" "/usr/local/pgsql/data"

ファイル/ディレクトリの所有者を変更 - chown - LinuxCommand

ファイル/ディレクトリの所有者を変更する


chown user-a file-x    ・・file-xの所有者をuser-aに変更する 
chown -R user-a directory-x    ・・directory-x内のファイル全て及びディレクトリの所有者をuser-aに変更する 
chown -Rc user-a directory-x  -cをつけることにより所有者が変更されたファイルを詳細情報付きで表示する

2014年4月7日月曜日

号機ごとに違うantターゲットを起動させるときのメモ


hostsの変更反映 Windows config

windows7の場合のhostsファイルは下記
C:\Windows\System32\drivers\etc\hosts

コマンドプロントにて
ipconfig /displaydns
で確認
ipconfig /flushdns で反映
もしくは
net stop dnscache
でDNS Client サービスを停止し
net start dnscache
でDNS Client サービスを起動

/etc/hostsの変更反映 Linux config

# /etc/rc.d/init.d/network resatart
or
# /etc/rc.d/init.d/network reload

ファイル/ディレクトリを検索 -- find -- Linux:command

■ファイル/ディレクトリ/シンボリックリンクなどを検索する

・現位置のディレクトリとその配下にあるすべてより zipとなのつくファイル、ディレクトリを検索し
ひっかかたものをファイル/ディレクトリ名を表示する
find . -name "*zip*" -print

・現位置のディレクトリとその配下にあるすべてより zipとなのつくファイル、ディレクトリを検索し
ひっかかたものをファイル/ディレクトリ名詳細情報つきで表示する
find . -name "*zip*" -ls

・現位置のディレクトリとその配下にあるすべてのシンボリックリンクを表示する
find . -type l

・/var/www/trunk配下にあるすべての .svnとなまえのつく"ディレクトリ"を削除する  
find /var/www/trunk -type d -name '*.svn' | xargs rm -rf
※xargsコマンドは左辺のコマンドの出力結果をxargsの右辺のコマンドに渡す。


・/etc配下にある全てのファイルの中にhogeという文字列が含まれてるか検索し対象ファイル名を表示する
find /etc -type f -print | xargs grep hoge /dev/null

2014年4月4日金曜日

Java jvmのDNSキャッシュ

インフラがドメインのipアドレスを変更して以降javaからの接続でこけるようになった。
javaではipアドレスではなくURLドメイン名で指定してるから問題ねーだろとおもってら
ダメだった。

ググって調べたら
JVMはデフォルトだと一回でも成功しているDNSキャッシュはずっと保持しつづける設定になっている。とのこと
なんでこんな設定になってるのかはDNSリバインディング対策とからしい


インストールされているjavaの中に
/usr/java/j2sdk1.4.2_13/jre/lib/security/java.security
設定ファイルがある

下記行がそのデフォルトを示す設定
#networkaddress.cache.ttl=-1
こいつを下記のように
networkaddress.cache.ttl=0
修正した。

networkaddress.cache.ttl (デフォルト: -1)
java.security で指定して、ネームサービスからの名前の検索に成功した場合のキャッシングポリシーを示します。 指定する値は、成功した検索結果をキャッシュする秒数を示す整数です。-1 の値は、「ずっとキャッシュする」という意味です。

networkaddress.cache.negative.ttl (デフォルト: 10)
java.security で指定して、ネームサービスからの名前の検索に失敗した場合のキャッシングポリシーを示します。 指定する値は、失敗した検索結果をキャッシュする秒数を示す整数です。0 の値は、「キャッシュしない」という意味です。 -1 の値は、「ずっとキャッシュする」という意味です。


■jspで現在どのような状態になっているかも下記内容をいれれば確認できる

<%@ page import="java.net.*,java.security.*,sun.net.*" %>
<%
    InetAddress inetAddress = InetAddress.getByName("www.google.co.jp");
    byte[] address = inetAddress.getAddress();
    out.println("Domain Name : "+inetAddress.getHostName() + "<br>");
    out.println("IP Address : "+inetAddress.getHostAddress() + "<br>");
    out.println("Cache Policy : "+InetAddressCachePolicy.get() + "<br>");    
%>


■参考
http://docs.oracle.com/javase/jp/1.4/guide/net/properties.html
http://dev.classmethod.jp/cloud/apache-tomcat-elb-ttl-1/
http://koteitan.seesaa.net/article/95301330.html