カテゴリー別アーカイブ: サイト運営

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 モジュールは無効にしてあります
続きを読む

EC2 インスタンス起動時に自動で EIP をセットする (AWS Advent Calendar 2012 20日目)

12/1からクリスマスまで、1人ずつリレー形式でブログ記事を書く AWS Advent Calendar 2012 の20日目です。
去年・一昨年は、WordPres Advent Calendar 2011PHP Advent Calendar 2010 に参加しましたが、今年は AWS Advent Calendar に参加します。

さて EC2 インスタンスに EIP (固定IP)を設定して運用するケースって多いと思うんですよ。
しかし EC2 のインスタンスでは、一度停止した後再起動すると EIP が外れてしまいます。
一時的にスケールアップしたくて、インスタンス停止して再起動とかいうオペレーションは、まま有ると思います。
その時に EIP を associate し忘れて「あら、サイトに繋がらないわ」なんてうっかりミスをすることも多いと思います。
そんな、うっかりさんのために EC2 インスタンス起動時に自動で EIP を設定するための方法を解説したいと思います。
続きを読む

Nginx + memcached で WordPress をキャッシングしてみる

nginxNginx + memcached が気になったので試してみました。元ネタは、下記です。
CakePHPとnginx+memcachedで手軽にキャッシュを活用する – Shin x blog

Nginx では、HttpMemcachedModule を用いることで memcached にキャッシュがあれば、それをそのままレスポンスとして返すことができます。
ただし memcached に保存するキャッシュデータは、アプリケーション側で生成してやらなければなりません。

一方、WordPress では advanced-cache.php というドロップインを作成することでキャッシュデータの制御を行うことができるので、これを作って url をキーとしたキャッシュデータを memcached に保存し、これを Nginx の HttpMemcachedModule に使わせてみました。
続きを読む

WordPress on PHP5.4.0 RC4 + APC

明けましておめでとうございます。本年も、よろしくお願いいたします。

スクリーンショット(2012-01-03 11.15.50)さて、パフォーマンスアップしたと噂の PHP 5.4 系。
WordPress も、ちゃんと動くんかいな?と思って試してみました。
使用しているプラグインによっては問題が出てくるかもですが、とりあえずデフォルト状態の WordPress 3.3 + TwentyEleven では問題なさそうです。
あと、このサイトで使ってるプラグインでも問題は発生しなかったようです。

ちなみにこのサイトで使ってるプラグインの一覧は以下の URL で見ることができます。
https://dogmap.jp/plugins/3/
続きを読む

WordPress をとにかく速くする (WordPress Advent Calendar 2011 20日目)

12月25日まで毎日ブログをつないでいく WordPress Advent Calendar 2011、20日目担当 @wokamoto です。
@mypacecreator さんに引き継いでいただきました!ドキドキ。
そんな、@mypacecreator さんのエントリはこちら。
3大「WordPressに慣れていない人がやってしまいがちだけど、こっちのほうがいいのになぁ」って思うこと

去年は PHP Advent Calendar に参加して「匿名関数と無名関数 (PHP Advent Calendar 2010 16日目)」って記事を書いたんですが、今年は WordPress Advent Calendar に参加します!

そんなわけで、(一部の)みんな大好き WordPress のハイパフォーマンスチューニングの話題。
このサイト dogmap.jp で行っている施策について書きますね。
続きを読む

Amazon EC2 マイクロインスタンスに移行

仕事で Amazon EC2 使うことが増えてきたこともあって、このサイトのサーバも Amazon EC2 のマイクロインスタンスに移行しました。
移行作業自体は、簡単。

  • 新サーバに Nginx, PHP, MySQL をインストール
  • 現行サーバから rsync で WordPress フォルダの内容を全て新サーバにコピー
  • 現行サーバの MySQL でテーブルをロックしてから /var/lib/mysql/ 以下を全部 tar で固めて、新サーバにコピー
  • /etc/my.cnf, /etc/php.ini, /etc/nginx/ 等の設定ファイルをコピー
  • ローカルPCの hosts 変更して確認取れたら DNS 変更

の5ステップです。
以下、メモがてら作業ログを書いておきます。
VPS – VPS 間での WordPress のお引越しの参考になれば幸いです。 続きを読む

percona

Percona MySQL をさくらのVPSで使う

percona別にさくらのVPSじゃなくても良いんですが

MySQL の派生プロダクトとして Percona MySQL というモノがあります。
これは、MySQL Performance Blog を書いてる Percona 社が提供してくれているプロダクトで、MySQL からの公式ビルドには含まれていない人気のあるパッチを追加したものです。
高負荷時の InnoDB のパフォーマンスを向上してくれるパッチなんかも含まれます。

Percona 社さんが yum のリポジトリを提供してくれてるのでインストールも簡単です。
とりあえず、どんなもんか確かめてみたかったので、さくらのVPS 512 (CentOS 64bit) にインストールして、MySQL 用のベンチマークソフト super-smack で、ベンチを取ってみました。
続きを読む

Nginx に cache purge モジュールを追加する

Nginx をリバースプロキシとして使用する場合、キャッシュされたページを削除したくなることがあります。
しかし、素の Nginx ではキャッシュを削除するには、キャッシュディレクトリ配下の全ファイルをすべて削除するしか方法はありません。
(もしくは、設定時間が経過して自動削除されるのを待つか)

ページ単位で Nginx リバースプロキシのキャッシュを削除するには、ngx_cache_purge というモジュールを追加することで実現できます。
この ngx_cache_purge モジュールを組み込んだ rpm パッケージを作成する方法を説明します。

rpm パッケージの作成方法については、以前書いたエントリ「nginx 1.0.0 が出てます」を参考にしてください。
このエントリでは、ここまでの作業が終わっているものとして解説します。
続きを読む

Nginx で www 付きの URL を www 無しにリダイレクト

facebookfacebook のコメント欄とかで URL をシェアすると、ドメイン名の頭に勝手に www. 付けてくれたりして、非常に不愉快です。
例えば、こんな url をコメント欄に書くと
https://dogmap.jp/2011/10/27/ssh_config/
プレビューの所の URL を、こんな風にかきかえてくれやがります。
http://www.dogmap.jp/2011/10/27/ssh_config/
なんで、こんなことするのか謎なのですが、相手は天下の facebook 様なので、こちらで対処してやるしかないですね。
続きを読む