nginx+php-fpm(ISPConfig3)でExpiresとDeflateを有効にする方法
nginx+php-fpm環境(ISPConfig3利用)でのキャッシュ有効期限(Expires)の設定とgzip圧縮転送(Deflate)の設定はデフォルトでは有効になっていません。
これらを有効にする方法は簡単です。
バージョン情報
nginx | 1.1.19 |
php5-fpm | 5.3.10 |
ISPConfig | 3.0.5.3 |
nginx+php-fpm環境(ISPConfig3利用)でのキャッシュ有効期限(Expires)の設定とgzip圧縮転送(Deflate)の設定はデフォルトでは有効になっていません。
これらを有効にする方法は簡単です。
nginx | 1.1.19 |
php5-fpm | 5.3.10 |
ISPConfig | 3.0.5.3 |
クラウドというとまずAmazonWebService(AWS)をまず思い浮かべます。私も現在利用しています。
これを自前のサーバーで構築するためのオープンソースのクラウドがいくつかありますが、OpenStackはそのうちの1つです。
現在は2013/10/17リリースのHavana(約400の新機能)が最新となっています。
OpenStackは6ヶ月ごとのリリースサイクルをとっているので次は2014/04の予定
OpenStackのWeb管理画面はAWSに似てるのでAWS利用者には分かり易く取っ付きやすくなってます。
しかし、私がテストした環境では複数のVMを起動し外部との通信もでき、ロードバランサでhttpを振り分けるといったような動作をできるところまで構築するには至りませんでした。
主にネットワーク周りの自動構築が不完全なようで、まだまだ発展途上で敷居が高いように感じます。
ロードバランサを使わないで良い環境なら、高機能なネットワーク機能のneutronを使わないで、単純なネットワーク機能のnova-networkを使う方法なら複数のVMを起動し外部との通信も問題なく動作しました。この記事ではこの方法を解説します。
テスト環境は1台のサーバーへオールインワンで構築します。NICは2枚のっています。管理サーバーとなるためここではマネージメントサーバーと呼びます。
HP ProLiant DL380 G5 (発売時期:2010/09) | |
CPU | XEON L5420 2.5GHz * 2 (2P/8C) |
MEMORY | 16GB (2GB*8) |
HDD | 146GB(SAS72*2 RAID0) |
NIC | gigabit*2 (NetXtreme II BCM5708) |
消費電力 | 280w/待機時22w (ワットチェッカーにて計測) |
nginx+php-fpm環境(ISPConfig3利用)では、GeeklogのURLリライトをONにする(コンフィギュレーション>サイト>URLリライトを「はい」)と、記事などのURLが http://[domain]/article.php/welcome のようなURLになりますが、この記事をクリックしてアクセスしようとすると「404 Not Found」エラーになります。
URLリライトの設定を「いいえ」に戻せばまた記事にアクセスできます。
Apache2+fcgidで動いてた既存サイトをnginx+php-fpm環境へ移行した際にこの現象がでて焦りました
調べてみると、nginxではApacheのAcceptPathInfoによる$_SERVER['PATH_INFO']が作成されないようなので自分でPATH_INFOを作って設定してやる必要があるようです。
この文章はapache2+fcgidの環境で動いているGeeklog1.7のサイトをnginx+php-fpmの環境へ移行した際の調査を元に記事を書いてます。
最新のGeeklog2.0では違うかもしれません。
nginx | 1.1.19 |
php5-fpm | 5.3.10 |
Geeklog | 1.7.1sr1 |
※nginx[えんじんえっくす]と読むようです。
コンフィギュレーションの保存や記事の作成などなにか保存をする作業において毎回セッションが切れてますと出てログインIDとパスワードの入力を求められ、正しく入力しても内容が保存されていない問題が発生しました。
LinuxサーバーのHDDやSSDのI/Oベンチマークを計測するのに hdparm を使っていましたが単純な計測なので、Windowsでは毎回お世話になっている CrystalDiskMark のようなお手軽簡単でいて比較しやすい計測がしたくて探してみたらありました。
そのベンチマークツールの名をfioと言います。
ディレクトリ指定ができるのでNFSを指定すればネットワーク越しの計測ができたり、マルチプロセス/マルチスレッド対応、I/Oエンジンを変えて同期I/Oや非同期I/Oやら選べて、jobという負荷シナリオを作成してベンチマークできたり、これがあればI/Oベンチマークはなんでもこいって感じです!
2011/1/25 にバージョン1.50がでています。
1.50のリリース情報
-----
サポートは、Windowsに追加されました。クリーンアップOSの一般的なサポート。新たにblktrace再生機能。減速バグがposixaioエンジンで修正されています。 I / Oはエンジンが追加されていますbinject。トリム/ DISCARDの操作をサポートしています。 I / Oの検証がより死後の分析のために失敗した場合は良い面と悪い面のデータをダンプするために拡張されています。様々な高速化と最適化。無名の多くのバグが発見され、固定されている。
(参考:http://sourceforge.jp/projects/freshmeat_fio/releases/204407/)
まずはfio-1.50をインストールします。(インストールはdebian5.0とdebian6.0へ行いました)
※squeezeでは1.38のバイナリーが提供されていますが、かなりバージョンアップしているので1.50をコンパイルしました。
aptitude update && aptitude safe-upgrade
aptitude libaio-devel
mkdir /usr/local/src/fio
cd /usr/local/src/fio
wget http://freshmeat.net/urls/3aa21b8c106cab742bf1f20d60629e3f -O fio-1.50.tar.gz
tar zxvf fio-1.50.tar.gz
cd fio-1.50
make
make install
これでインストール完了です。
さっそくコマンドラインからfioをテスト実行してみます。