クラウドインフラ構築記

現在AWSの構築支援に携わっております。今注視しているのは、GKE、BigQuery、Google Dataflowなどサービスを展開しているGoolge Cloud Platformです。

2012年12月7日
から hiruta
SpamAssassinのインストール はコメントを受け付けていません

SpamAssassinのインストール

契約中のさくらのVPS(現ブログも運用)にスパム対策を行うSpamAssassin、postfix MTAと連携できるspamass-milterをインストールしました。

 wget http://spamassassin.emaillab.jp/pub/ja-patch/sa3.3/packages/rhel/spamassassin-3.3.1-5.src.rpm
rpm -ivh spamassassin-3.3.1-5.src.rpm
rpmbuild -ba /rpmbuild/SPECS/spamassassin.spec
 yum install perl-Net-DNS perl-NetAddr-IP
 yum install perl-Encode-Detect perl-IO-Socket-INET6 perl-IO-Socket-SSL perl-Mail-SPF perl-Mail-DKIM
rpm -ivh /root/rpmbuild/RPMS/x86_64/spamassassin-3.3.1-5.el6.x86_64.rpm

最新のルールファイルをダウンロード。

wget http://www.flcl.org/~yoh/user_prefs
cp -pc local.cf{,.orig}
mv user_prefs local.cf

ルールファイルを編集

vi /etc/mail/spamassassin/local.cf

normalize_charsetは日本語のスパムに対応させるものです。スパム判定されたメールの標題を任意に変更できます。

normalize_charset 1
trusted_networks 219.94.254.112
report_safe 0
rewrite_header Subject *****SPAM*****

v3.2で導入されたプラグインで一行追加。

vi /etc/mail/spamassassin/v320.pre

 

loadplugin Mail::SpamAssassin::Plugin::TextCat

spamassassin実行用のユーザを追加

useradd spamd -s /bin/false -d /var/spamd

spamassassinをspamdユーザで実行するようにコンフィグファイルを編集。

vi /etc/sysconfig/spamassassin

 

SPAMDOPTIONS="-d -u spamd -c -m5 -H"

postfixと連携できるように、spamass-milterをインストール

yum install spamass-milter

一部コンフィグを編集。

EXTRA_FLAG="-m -r 2000"

実行スクリプトを編集。

 vi /etc/init.d/spamass-milter

sockファイルをpostfixユーザのオーナにする。これをしないとspmass-milterからのアクセスでパーミッションが怒られてしまう。

        daemon --user ${RUN_AS_USER} /usr/sbin/${prog} ${SOCKET_OPTIONS} -p ${SOCKET} -P ${pidfile} -f ${EXTRA_FLAGS}
        chown postfix.postfix $SOCKET
        chmod 0600 $SOCKET

spamass-milterが一時的にファイルを生成するので、spamdユーザが書き込めるようにする。

chown -R spamd:spamd /var/lib/spamass-milter/.spamassassin

サービス開始。

service spamassassin start
service spamass-milter start

スパムメールを学習。

wget http://www.flcl.org/~yoh/yoh_spam_050102.tar.bz2
tar xvjf yoh_spam_050102.tar.bz2
sa-learn --progress --spam home/yoh/spam/spam/

postfixの設定ファイルに以下を追加。

# milter
milter_default_action = accept
milter_mail_macros = {auth_authen} {auth_author} {auth_type}
smtpd_milters = unix:/var/run/spamass-milter/spamass-milter.sock
non_smtpd_milters = unix:/var/run/spamass-milter/spamass-milter.sock
milter_protocol = 2

CentOS6だとSpamAssassinをインストールに必要なperlモジュールもすんなり入れられて結構スムーズにスパム検知を構築できました。

MTAにqmailを使っている場合、qmail-scannerで連携させるのに、qmail-queue用パッチを適用しないといろいろ大変ですが、postfixだと手軽に構築できます。

qmail-scannerを使わずとも、procmailの振り分け機能を活用すればフィルタすることができます。

2012年12月6日
から hiruta
Dropbox Chooser ~Dropbox のファイルへのアクセス はコメントを受け付けていません

Dropbox Chooser ~Dropbox のファイルへのアクセス

javascriptベースと思われるWEBアプリからDropboxのストレージにアクセスできる便利なDropbox Chooserが公開されています。

これを利用することで、Dropboxと連携させたWEBアプリケーションを簡単に構築できるようになります。Dropbox Chooserで選択したファイル名をWEBアプリのテキストフィールドに挿入することなどが簡単に行うことが可能になります。プレビュー表示も可能かと思われます。

以下よりDropbox Chooserを利用するためのタグは出力されます。

https://www.dropbox.com/developers/chooser

通常HTTPでアップロードする場合、サーバーの制約等により、扱えるファイルの容量に制限を設けざるをえません。近年の動画などの大容量ファイルの配信をするのに、専用サーバーでは不十分。『さくらのクラウド』、『Amazon EC2、S3』をお勧めします。クラウド型だとサービスイン当初は、低スペックでコストを抑えて運用し、利用量に応じてスケールアップができ、効率的なサーバー運用が可能になります。

2012年12月6日
から hiruta
CakePHPでモデル、物理テーブル名を変更する方法について はコメントを受け付けていません

CakePHPでモデル、物理テーブル名を変更する方法について

CakePHPはデフォルトだとコントローラと物理データベーステーブルのネーミングがある。例えばAdminControllerだと物理テーブル名をAdminsにしないといけない。

Authモジュールでモデル名を変更するには、Auth->userModelに利用します。AuthモジュールはデフォルトUsersテーブルを参照するようになっています。あと、cakePHPで生成されるmd5ハッシュ文字がMySQLで出力されるselect md5(‘test’)の結果と違うように思われる。

class AdminController extends AppController {
	public $name = 'Admin';
	public $uses = array('AdminTbl');
	public  $components = array('Auth');

	function beforeFilter(){
		Security::setHash('md5');
		$this->Auth->authError = 'あなたはログインしていません。';
		$this->Auth->userModel = 'AdminTbl';
		$this->Auth->fields = array(
			'username'=>'customer_id',
			'password'=>'password'
		);
		//アクセス制限しないアクション
		$this->Auth->allow('login');

		//ログイン後の遷移先を固定
		$this->Auth->loginRedirect = array('controller' => 'program', 'action' => 'index');
	}

モデルに$useTable を設定する必要がある。

class AdminTbl extends AppModel {
	var $name = 'AdminTbl';
	var $useTable = 'admin_tbl';
	var $primaryKey = 'customer_id';
}

2012年12月5日
から hiruta
さくらのVPSでSSDストレージ選択が可能に はコメントを受け付けていません

さくらのVPSでSSDストレージ選択が可能に

12月13日からさくらのVPSでSSDストレージ対応プランが¥1,780からサービスが開始されます。

ストレージ容量は50GBと100GBが用意されます。

VPSを構成する物理ストレージにSSDにすることで提供する模様。SSDにすることで、現行のHDDストレージよりリード、ライトとも速くなることで、高速ストレージへの高速アクセスを必須とするサービスに利用できるのでは。

http://www.sakura.ad.jp/press/2012/1205_vpsssd.html

ディスクIOが高速化するこにより同じ物理サーバーを使っているユーザの影響をより受けなくなることも可能になるようです。

2012年12月4日
から hiruta
Rubyでスマホアプリを開発できるRoSPの環境を構築 はコメントを受け付けていません

Rubyでスマホアプリを開発できるRoSPの環境を構築

Rubyでスマホアプリを開発できるRoSPの環境を構築しました。

http://smph-biz.jp/ を参考に開発環境を構築しました。

何点か上記サイトで公開されている手順が最新のSDKでは異なっています。

・ADT Bundle for Windowsだと、eclipseが同封されており、eclipseからSDK Manager、Android Virtual Device Mangerを起動できます。

・RhoStudioはMotorolaのサイトで、2.1が公開されていますが、2.0を使用する。

windowsでRailsをインストールする際、「file ‘lib’ not fouund」がでるときは、gem install rdocで、RDocをインストールしておきます。

Dropboxと連動したアプリを作成していければと考えています。

http://docs.rhomobile.com/rhodes/install で、gem install rhodesでnative gemが必要なので、https://github.com/oneclick/rubyinstaller/wiki/Development-Kit の手順でDevKitをインストール後、rhodesのインストールに成功。

次は、RhoStudioのeclipse pluginのインストール。

https://sites.google.com/site/centralrbindex/home/tips/android/1/rhostudio1

が、RhoStudioのeclipse pluginがdisabledになっている。

2012年12月2日
から hiruta
Amazon Cloud player試してみました。 はコメントを受け付けていません

Amazon Cloud player試してみました。

Amazon Cloud Player使ってみました。ダウンロードできるのは、MP3なので、オルゴール、カラオケ用音楽が多い印象。

以下はスマホのAndroid版Cloud playerの画面になります。Amazon IDを初回入れれば次回はパスなしでCloud(Amazon S3を利用しているのだろうか。)上からストリーム再生、ダウンロードが可能になります。3G回線でもスムーズに再生できる模様。

プレイヤ自体はすでに端末に入っている音楽についても再生可。アプリ自体は端末がロック状態でも再生、停止などの最低限の操作が行えます。

Cloud Player情報については以下から。

2012年12月2日
から hiruta
Amazon Reloaded for WordPressが動作しません。 はコメントを受け付けていません

Amazon Reloaded for WordPressが動作しません。

Amazon Reloaded for WordPressは最新版においても、AmazonアソシエイトのProduct Advertising API(AWS)のアプリキーとシークレットキーを使うのだが、全く使用することができない。

フォーラムにも、動作しなくなったとの報告があります。AmazonAPIをプラグインからコールしているようですので、AmazonAPIの仕様が変わったことが考えられます。

Amazon Reloaded for WordPressでイメージ画像の取得エラー不具合

現在は、macro Explanderでアソシエイトを埋め込んで対応しています。

2012年12月2日
から hiruta
CakePHPを使ってWEBアプリの開発 はコメントを受け付けていません

CakePHPを使ってWEBアプリの開発

入力チェック、XSS対策、CSRF対策、共通コンポーネント化、DB非依存(ORM)をはかれる基盤技術です。今後はこれを利用してWEBアプリできます。

データベース構造から、モデル、ビュー、コントローラーのコードの自動生成機能(Bake)でアプリのテンプレートが生成できてしまいます。

macro-expander pluginでアフィリエイトのショートコードを入れてみました。

http://wordpress.org/extend/plugins/macro-expander/installation/

2012年12月1日
から hiruta
携帯販売店はインセンティブのある製品を売りたがっている はコメントを受け付けていません

携帯販売店はインセンティブのある製品を売りたがっている

以下の記事をみると、製品の良しにかかわらず、インセンティブ(過去0円携帯とかを実現していた販売奨励金)付きの製品を売ろうとしている。

ほとんどの製品でインセンティブが廃止されている現状の中、iPhoneだけAppleの意向でインセンティブがある。製品を売れればそれだけ店に手数料が入っていく。iPhoneが売れる要因の1つにインセンティブの存在があるよう。キャリアはかなりAppleにかなりの手数料を払っていることが予想される。

http://www.sankeibiz.jp/business/news/121201/bsj1212011000001-n1.htm

2012年12月1日
から hiruta
朝日ネットのDNS書き換えが遅い はコメントを受け付けていません

朝日ネットのDNS書き換えが遅い

朝日ネットのDNS書き換えが遅いことで、ネットで検索してみました。みると朝日ネットのDNSがおかしいとか記事が2点ほど見つかった。

http://haniwa.asablo.jp/blog/2008/04/30/3423802 朝日ネットのDNSがおかしい点

http://selfkleptomaniac.org/archives/62 ヤフオクがみれない、img.yahoo.co.jpの名前解決ができていない

値段が安いというのは、インフラ周りの経費を抑えていることも考えられるので、安いからといって利用するのはどうかと思う。