クラウドインフラ構築記

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

2012年12月11日
から hiruta
WYSIWYGエディタ ckeditorの導入 はコメントを受け付けていません

WYSIWYGエディタ ckeditorの導入

ckeditorを使うことで、WYSIWYGエディタをWEBアプリに手軽に導入できます。ckeditorは日本語化もされており、WYSIWYGエディタの中でももっとも使いやすいと思います。

導入には、

ckeditorのjavascriptをローデング。


<script type="text/javascript" src="../ckeditor/ckeditor.js"></script>

ckeditorで編集したいテキストエリアを以下のようにする。

</pre>
<textarea id="editor1" name="content" style="width:95%; height:300px;">
<script type="text/javascript">
//<![CDATA[

// This call can be placed at any point after the
// <textarea>, or inside a <head><script> in a
// window.onload event handler.
// Replace the <textarea id="editor"> with an CKEditor
// instance, using default configurations.
CKEDITOR.replace( 'editor1' );

//]]>
</script>
<pre>

うまくいけば、以下のようにHTMLエディタが表示されるはず。

なお、ckeditorはオープンソースのショッピングサイト構築ソフトであるEC Cubeの商品説明のエリアに簡単に組み込むことが可能です。

ckeditorは下記から無料ダウンロードできます。 http://ckeditor.com/

2012年12月9日
から hiruta
twitterとの投稿連携でエラーが発生 はコメントを受け付けていません

twitterとの投稿連携でエラーが発生

twitterと連携するWP to twitterプラグインを導入しましたが、twitterの連携ボタンをクリックすると、以下エラーでできませんでしたが、サーバーのコンソール上でも、api.twitter.comの名前解決ができていなかったので、リゾルブの設定を自分自身のサーバーを参照せず、さくらのDNSにみるようにしたら、すんなりtwitterの連携が成功しました。DNSサーバーをセカンダリ以外のサーバとトランスファー許可を制限していることに関係あるのかあ。

Connection Problems? Try switching to http queries.

  • Couldn’t resolve host ‘api.twitter.com’

Your server timezone (should be UTC,GMT,Europe/London or equivalent):UTC

Note: you will not add your Twitter user information to WP to Twitter; it is not used in this authentication method.

タイムゾーンの設定を、UTC他にしないといけないようなことが書いてありますが、Asia/TokyoでもOKでした。

2012年12月8日
から hiruta
Google Adsense申し込んでみました。 はコメントを受け付けていません

Google Adsense申し込んでみました。

Google Adsenseを申し込んでみました。

一次審査とタグをいれて、二次審査があるようです。一次審査を通ったことを記載したメールは、申し込み後2時間以内に届きました。

その後HTMLタグを入れて、しばらく後広告が表示されました。その後、広告が消えましたが、googleの審査のために出した?

翌朝方二次審査結果OKのメールが届き、広告が表示されるようになりました。

2012年12月8日
から hiruta
振り分けなどのメール処理について はコメントを受け付けていません

振り分けなどのメール処理について

前日のスパムの記事でprocmailを出しましたが、スパム対策はもちろん、メール振り分け、phpなどの外部プログラムへのパイプはprocmailが正規表現により条件をもろもろ設定でき、拡張性の高いメール処理を実現できます。

処理内容をログに書き込むこともできますので、ユーザ単位で処理ログを確認することもできます。.qmail等に外部プログラムへのパイプをすることもできますが、ユーザ単位でmaillogを確認することができないので、ログを確認する場合は特権管理者(root)に依頼するしかない。このような場合、procmailでのメール処理をするのがいいと思われます。

procmailの説明を記載したサイトを載せておきます。

http://www.mediaweb.biz/database/modules/cobalt/article.php?articleid=81

ホスティング業者によってWEBでサーバー管理など行えますが、procmailについてはSSHなどのコンソールで行わないところがほとんど。個人的にはWEB管理よりコンソールの方で行ったほうが効率がいい。

WEB管理を用意するためには、余分のリソース(プロセス)、カスタマイズの制約もでてきてしまうので、最低限の環境だけ提供してもらえばよい。(このことからさくらのVPSは自由度があってよい。)

2012年12月8日
から hiruta
qmail + vpopmail環境でspamassassinフィルタを強制的に通すには はコメントを受け付けていません

qmail + vpopmail環境でspamassassinフィルタを強制的に通すには

qmail + vpopmail環境でspamassassinフィルタを強制的に通す方法です。最善策はqmail-scannerでするが一番です。ただし、queueパッチ適用する必要があり、簡単にパッチ適用できない代用策になります。

/home/vpopmail/xxxx.co.jp/.qmail-xxxx にprocmailへのパイプ処理を記載する。

| /usr/bin/procmail -m ./xxxx/.procmailrc

.procmailrcに以下のように記載する。X-Spam-Statusの次の行に/dev/nullとするとスパムメールを削除してしまうことが可能になります。:0 cと次の行がフィルタを掛けてスルーしたメールを別のメールアドレスに転送する処理になります。

HOME=/home/vpopmail/domains/xxxx.co.jp/xxxx
LOGFILE=$HOME/procmail.log
MAILDIR=$HOME/Maildir/
LOCKFILE=$HOME/.lockmail
DEFAULT=$MAILDIR

:0fw: spamassassin.lock
| /usr/bin/spamc
:0
*^X-Spam-Status: Yes
$MAILDIR/.spam/

:0 c
!xxx@xxx.com

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=&quot;-d -u spamd -c -m5 -H&quot;

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

yum install spamass-milter

一部コンフィグを編集。

EXTRA_FLAG=&quot;-m -r 2000&quot;

実行スクリプトを編集。

 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になっている。