さくらVPS512で、Yahoo!砲食らっても WordPress を平常運転させるための設定

2010年の年末に、「カイ士伝」のさくらVPSへの引っ越しを手伝ったわけですが、その後も元気にサーバは動き続けているようです。
引っ越し当初は、Web サーバとして lighttpd を導入してたんですけど、僕の個人的な好みがかわって、途中で Nginx に切り替えました。
特に大きなトラブルもなくサクサクと動いてたようですが、昨日突然の Yahoo!砲で、平常時の数倍のアクセスがあったようです。

Yahoo!砲くらったけど月額980円のさくらVPSとチューニングでサーバー落とさず乗り切ったよ – カイ士伝

ただ、アクセスが大量にあった初日(1記事に5.5万PV)にもサーバ負荷が高くなってるとか気付かずに、余波でちょっと多くなってた翌日(1記事に1.3万PV)に気づいたというくらいの平常運転っぷり。
Nginx 痺れますわー。

僕は、カイ士伝の WordPress ダッシュボードにログインする権限もらってないんで、プラグインとかどんなのが入ってるか知りませんので、バックエンドのサーバ環境についてだけ。
たぶん、WP Super Cache とかのキャッシュ系プラグインは使ってないと思うよ。
続きを読む

WordPress サイトに Basic 認証をかけるプラグイン「WP Basic Auth」

WordPress サイトに手軽に Basic 認証でアクセス制限するプラグイン「WP Basic Auth」を公式プラグインディレクトリで公開しました。
WordPress › WP Basic Auth « WordPress Plugins

このプラグインを有効にすると、管理画面と静的ファイル以外を閲覧する時に Basic 認証でアクセス制限がかかります。
Basic 認証で使用するユーザー名/パスワードは、WordPress サイトに登録されているユーザー名・パスワードです。
管理画面にログインしている時は Basic 認証での制限はかかりません。

開発中のサイトで、まだ一般公開したくないけど、クライアントには見せたい時とかに使ってやってください。

S3 にメディアを自動アップロードするプラグイン「絡新婦」

517Y4NYKFPL._SL150_.jpgWordPress のメディアライブラリにアップロードされたファイルを自動的に Amazon S3 にアップロードして、post_content 内のリンクを S3 の URL に変更するプラグイン Nephila clavata (絡新婦) を作成しています。
プラグイン名称の元になったのは、有名な妖怪ですね。

公式プラグインディレクトリには、全く同じ機能を持った「Amazon S3 for WordPress」ってプラグインが登録されているんですが、2009年の1月以降アップデートされていないため、新規に作っちゃいました。
AWS SDK for PHP 2 を使っているので、PHP 5.3 以降のバージョンが必要になります。

そんなわけで S3 バケットの使用方法と、このプラグインの設定方法を解説しますね。
続きを読む

GlusterFS で分散ストレージ環境を手に入れる

さて MariaDB Galera Cluster で DB を冗長化したら、次はファイルも冗長化したくなりますよね?
そこで、使えるのが分散ファイルシステム GlusterFS です。
GlusterFS は UserLand で動作する FS ベースのファイルシステムで、自動復帰・ミラーリング/ストライピングを行うことができます。
サーバからは Glustefs Native Client や NFS でマウントして使用することができます。
GlusterFS でボリューム作っておいて、それを Web サーバでマウントして使えば、簡単に Web サーバをスケールアウトできて、嬉しいことこの上ないですね!

そんなわけで AWS で GlusterFS を試してみたので、やりかたを書いておきます。
続きを読む

MariaDB Galera Cluster による DB サーバの冗長化

さくらインターネット研究所さんの「MariaDB Galera Clusterを試す」という記事を読んで居ても立ってもいられなくなり、さっそく AWS で構築してみました。
上記の記事によれば

簡単にまとめると次のようになります。

  • Galera Replicationが複数のRDBMをレプリケーションするwsrep APIを提供し、同期をとります
  • 完全同期型であるため、すべてのノードがアクティブかつマスターとなります
  • クラスターノードのどれに対してもリード/ライトが可能です
  • ノードの追加/削除は自動で行えます
  • クライアント接続は通常のMySQLとなんら変わりなく使えます

via. MariaDB Galera Clusterを試す (1) « さくらインターネット研究所

おー!スレーブ/マスター形式のレプリケーションよりも、断然使いやすそうやんか!
ってわけで AWS の ELB 配下に複数台 MariaDB Galera Cluster を配置する方法を解説します。
続きを読む

WordPress サイトの永代供養

イベント用に立ち上げた WordPress サイトとか、もう将来にわたって更新する可能性の無いサイトって一つや二つありますよね。
もう要らないからと言ってドメインを手放したりすると、中古ドメイン屋に買われ風俗サイトにリニューアルされたりするので、できればそのままにしておきたいです。
しかし WordPress のバージョンアップをせずに放置していると、これまた最悪の場合脆弱性をつかれて乗っ取られたとかってことにもなりかねません。
また、月々のサーバ代もバカにならないですよね

そんなときは、AWS の S3 でホスティングしてあげましょう。これを「サイトの永代供養」と呼ぶらしいです。
恐ろしいほどコストダウンできますよ。
月額10円~でレンタルサーバーをはじめる方法 | アマゾン ウェブ サービス(AWS)
月額10円〜 – Amazon S3でウェブサイトをホスティングする方法 – Amazon Web Services ブログ

では、WordPress サイトを S3 でホスティングさせる方法について説明します。
続きを読む

Feedback Champuru 0.5.5 リリース

年明けくらいから Topsy API の仕様変更で Twitter コメントを取得できないようになっていたので、Twitter の検索 API を使用するように修正した Feedback Champuru ver.0.5.5 をリリースしました。
WordPress › Feedback Champuru « WordPress Plugins

1年以上ぶりのアップデートですね、すいません。
ほかのプラグインも随時アップデートして行きたいっすなぁ。

Twitter 検索 API の使い方については memo.dogmap.jp の方にサンプルプログラムをあげてあります。
そちらも、あわせてどうぞ。
Twitter Search API の使い方 | memo.dogmap.jp

Nginx で SPDY !

SPDY (スピーディー) は、Googleが提唱し、現在標準化作業が進められている通信プロトコルです。
HTTP の次期バージョン HTTP 2.0 のベースとなる技術の有力候補として SPDY が挙げられてたりもするので要注目ですね。
ブラウザが対応していないと恩恵に預かれませんが、Chrome や Firefox, Opera の最新版であれば問題なく利用できます。IE ? なにそれ?おいしいの?

Wikipedia から、抜粋して引用すると

SPDYは、Googleが提唱し、現在標準化作業が進められている通信プロトコルの一つ。2012年8月現在の最新バージョンはSPDY Protocol – Draft 3(一般には「SPDYv3」と称されることが多い)。

基本的には既存のHTTPを拡張しダウンロードの高速化を目指したプロトコルで、TLS接続の上にセッション層を追加し、単一のSPDYセッションで複数のリクエストを送受信することを可能にしている。それ以外にも以下のような機能がある。

サーバヒント
クライアント側がコンテンツをダウンロードする際に、サーバ側からコンテンツの展開に必要と思われる付属データを提案するもの[3]。
サーバプッシュ
サーバ側からクライアントに対しデータをプッシュ配信する機能。

プロトコル的にはTLSの拡張仕様の一つであるNext Protocol Negotiation(NPN)をベースにしているため、SPDYの使用にはHTTPSの通信が可能な環境であることが必須となる。

2012年現在は独立したプロトコルとして一部のWebブラウザやWebサーバで実装が進んでいるほか、IETFのドラフトも提出されており、標準化作業が進んでいる。さらにHTTPの新バージョンとして現在検討が進められている「HTTP 2.0」のベース技術の一つとしてSPDYが採用されるのではないかという観測もあり、Web技術者の間で注目を集めつつある。

サーバプッシュが可能という点で、類似するプロトコルであるWebSocketと比較されることも多い。

via. SPDY – Wikipedia

そんな SPDY を Nginx 1.3.x に対応させるためのパッチも提供されてます。
http://nginx.org/patches/spdy/README.txt
んっ? WordPress ユーザーには見慣れた会社名が書いてありますね。

This work has been sponsored by Automattic (http://automattic.com/).

さすが WordPress.com で Nginx を使い倒している Automattic さんや!

では、実際に CentOS 6 上の Nginx で SPDY を使う手順について解説します。
続きを読む

Nginx 用 pagespeed モジュール ngx_pagespeed を試してみたよ

Google が提供してくれている高速化モジュール mod_pagespeed ですが、今までは Apache サーバ用のモジュールしかありませんでした。
以前、安定板が出た時に試してみましたが、中々感触が良かったです。
Apache サーバ向け高速化モジュール mod_pagespeed

Nginx 用のモジュールも提供してくれないかなーとか思ってたら出てましたよ!奥さん!
というわけで、とりあえずインストールしてみました。
どんな状況になるかは、このサイトの html ソースを見てみてください。
※:現在 ngx_pagespeed モジュールは無効にしてあります
続きを読む

WordPress on HHVM

Facebook が開発したPHPを超高速で実行する仮想マシン HipHop VM で WordPress が動く!ってことで AWS で試してみました。
詳細は、以下で

最初 t1.micro インスタンス( 613 MiB メモリ )で試したんですが、以下のメッセージが表示されて起動しません。

# /usr/bin/hhvm --user root --config /etc/hhvm.hdf
tcmalloc: large alloc 1210089472 bytes == (nil) @ 
tcmalloc: large alloc 1210089472 bytes == (nil) @ 
could not allocate 1210089471 bytes for translation cache

メモリ不足とのことなので m1.small インスタンス( 1.7 GiB メモリ )で試してみました。
続きを読む