ようこそ!浜村拓夫の世界へ

    ブログ内検索

    最近の記事

    ブックマーク数の多い記事

    Blog Translation

    Powered By FC2ブログ

    Powered By FC2ブログ
    ブログやるならFC2ブログ


    FC2ブログ LOGIN

    with Ajax Amazon

    ハイパフォーマンスHTTPサーバ Nginx入門

    このエントリーを含むはてなブックマーク はてなブックマーク - ハイパフォーマンスHTTPサーバ Nginx入門 あとで読む
    Nginx入門を買いました!

    (祝) NginX バージョン1.0 - 浜村拓夫の世界

    さっそくパラパラ眺めてみました。
    結構薄い本なので、すぐ読めるかも。

    ハイパフォーマンスHTTPサーバ Nginx入門ハイパフォーマンスHTTPサーバ Nginx入門
    Clement Nedelcu 長尾高弘

    アスキー・メディアワークス 2011-04-21
    売り上げランキング : 14043

    Amazonで詳しく見る
    by G-Tools


    ・Nginxは、今後Apacheと同様に使えるツールにしたいので、本書で基本知識を仕入れる。
    ・基本知識を押さえたら、その後はネットで必要な知識を補完していく。
    基本知識を押さえるのに、やっぱ本は情報がまとまっていて便利だな~。

    ●著者について

     Clement Nedelcu はフランス生まれでイギリス、フランス、中国の大学で学んだ。現在は、中国南西部の鎮江市の江蘇大学でコンピュータ科学を教えている。
     著者のブログは、http://cnedelcu.net/にあり、Nginxを始めとするWeb開発の記事が掲載されている。



    ●本書の内容

     第1章「作業環境の準備」では、本書を通じて使っていくことになるLinuxコマンドライン環境の基礎を説明する。
     第2章「Nginxのダウンロードとインストール」では、Nginxと必要なファイルをダウンロード、インストールしてシステムをセットアップしていく。
     第3章「Nginxの基本設定」では、Nginxの設定方法の基礎を説明してから、コアモジュールの設定方法を説明する。
     第4章「HTTPの設定」では、最も多くの設定セクションとディレクティブを持つHTTP Coreモジュールの詳細を説明する。
     第5章「各種モジュールの設定」では、Rewrite、SSIなど、Nginxの開発者提供モジュールの多くについて詳細を説明する。
     第6章「PHP、PythonとNginx」では、PHPなどの外部プリプロセッサをFastCGI経由でNginxを連携させて動的コンテンツを提供する方法を説明する。
     第7章「ApacheとNginxの併用」では、Apacheと仕事を分け合うリバースプロキシとしてNginxをセットアップする方法を説明する。
     第8章「ApacheからNginxへ」では、ApacheからNginxへの移行方法について詳しく説明する。
     付録A「ディレクティブ索引」では、すべてのディレクティブをアルファベット順に並べ、説明されている章とともに簡単に説明する。
     付録B「モジュールリファレンス」では、すべてのモジュールをアルファベット順に並べて簡単に説明する。
     付録C「トラブルシューティング」では、Nginxの設定を行う管理者たちが最もよく経験する問題について説明する。



    第6章と第7章が参考になるな~。
    ・FastCGIやPHP-FPMの仕組みを説明してくれている。
    ・ApacheとNginxを併用する方法、リバースプロキシの利点を説明してくれている。

    この著者は、大学で先生をやっているとのことなので、何か教科書っぽいというか、分かりやすい説明を心掛けているのではないだろうか?
    Nginx利用に必要な知識は、この本1冊=ワンストップで吸収できるように説明が組み立てられているかんじ。
    これから、Nginxを利用する予定がある人なら、手元に置いておいて損はないだろう。
    (要らなくなったらヤフオクやAmazonで売り払えば良い。)

    ●本書の対象読者

     本書はNginx初心者とベテランの管理者のどちらの人々にとっても座右の書として役に立つ。初心者のためには、この軽量HTTPサーバをシステムにインストールするまでの完全な手順とさまざまなモジュールをすばやく安全な方法で自在に設定する方法を説明する。ベテラン管理者のためには、さまざまな角度からのアプローチを示して、現在のインフラストラクチャから最大の力を引き出しやすくする。本書は、Nginxのすべてのモジュールとディレクティブを完全に説明する。そして、既存のサーバの代わりにNginxを使うために必要な準備や、既存のサーバのフロントエンドとしてNginxを使うための設定方法なども説明する。



    ApacheとNginxの両方を活用できるようになりたいです。

    ●Nginx入門 目次

    著者について
    査読者について
    序文
     本書の内容
     本書のために必要なもの
     本書の対象読者
     凡例
     読者からのフィードバック
     カスタマサポート
     正誤表
     海賊行為
     質問

    第1章 作業環境の準備
     1.1 端末エミュレータのセットアップ
      1.1.1 PuTTYを探してダウンロード
      1.1.2 セッションの作成
      1.1.3 PuTTYとシェルの操作
     1.2 基本的なシェルコマンド
      1.2.1 ファイルとディレクトリの管理
      1.2.2 ユーザとグループの管理
          スーパーユーザアカウント
          ユーザーアカウント
          グループ管理
      1.2.3 プログラムとプロセス
          アプリケーションの起動
          システムサービス
          プロセス管理
     1.3 Linuxファイルシステム
      1.3.1 ディレクトリ構造
      1.3.2 スペシャルファイルとデバイス
          デバイスタイプ
          疑似デバイス
          ストレージデバイスのマウント
      1.3.3 ファイルとiノード
          EXT3ファイルシステム仕様
          ファイル名
          iノード
          atime、ctime、mtime
          シンボリックリンクとハードリンク
      1.3.4 ファイル操作
          ファイルの読み出し
          ファイルの編集
          圧縮とアーカイブ
     1.4 システム管理ツール
      1.4.1 スーパーユーザとしてのコマンド実行
          suコマンド
          sudoコマンド
      1.4.2 システムのチェックとメンテナンス
          df(Disk Free)ユーティリティ
          du(Disk Usage)ユーティリティ
          freeユーティリティ
      1.4.3 ソフトウェアパッケージ
          パッケージマネージャ
          手作業によるパッケージのダウンロード、インストール
          ソースからのビルド
      1.4.4 ファイルとパーミション
          パーミションとは何か
          ディレクトリのパーミション
          8進表記
          パーミションの変更
          オーナ、グループの変更
     1.5 まとめ

    第2章 Nginxのダウンロードとインストール
     2.1 前提として必要なファイルのセットアップ
      2.1.1 GCC-GNUコンパイラコレクション
      2.1.2 PCREライブラリ
      2.1.3 zlibライブラリ
      2.1.4 OpenSSL
     2.2 Nginxのダウンロード
      2.2.1 Webサイトとリソース
      2.2.2 バージョンの分岐
      2.2.3 機能
      2.2.4 ダウンロードとファイルの展開
     2.3 オプションの設定
      2.3.1 簡単な方法
      2.3.2 パス関連のオプション
      2.3.3 必要ファイル関連のオプション
      2.3.4 モジュール関連のオプション
          デフォルトで有効なモジュール
          デフォルトで無効なモジュール
      2.3.5 その他のオプション
      2.3.6 設定例
          prefixスイッチについて
          普通のHTTP/HTTPSサーバ
          すべてのモジュールが有効
          メールサーバプロキシ
      2.3.7 設定で起きるエラーへの対処
          必要なファイルを揃える
          ディレクトリが存在して書き込み可能かどうか
      2.3.8 コンパイルとインストール
     2.4 Nginxサービスの制御
      2.4.1 デーモンとサービス
      2.4.2 ユーザとグループ
      2.4.3 Nginxのコマンドラインスイッチ
      2.4.4 デーモンの起動と停止
      2.4.5 設定のテスト
      2.4.6 その他のスイッチ
     2.5 Nginxのシステムサービス化
      2.5.1 System Vスクリプト
      2.5.2 initスクリプトとは何か
      2.5.3 Nginxのinitスクリプトを作る
      2.5.4 スクリプトのインストール
          Debian系ディストリビューション
          Red Hat系ディストリビューション
     2.6 まとめ

    第3章 Nginxの基本設定
     3.1 設定ファイルの構文
      3.1.1 設定ディレクティブ
      3.1.2 構造とインクルード
      3.1.3 ディレクティブブロック
      3.1.4 高度な構文規則
          ディレクティブ固有の構文
          ディレクティブの値の中の略記号
          変数
          文字列値
     3.2 コアモジュールのディレクティブ
      3.2.1 コアモジュールとは何か
      3.2.2 Nginxのプロセスアーキテクチャ
      3.2.3 Mainモジュールのディレクティブ
      3.2.4 Eventsモジュール
      3.2.5 Configurationモジュール
     3.3 求めているシステムプロファイルに合わせた設定
      3.3.1 デフォルト設定の詳細
      3.3.2 必要な変更
      3.3.3 ハードウェアに対する適合性
     3.4 サーバのテスト
      3.4.1 テストサーバの作成
      3.4.2 パフォーマンステスト
          httperf
          Autobench
          OpenWebLoad
      3.4.3 Nginxの穏便なアップグレード
     3.5 まとめ

    第4章 HTTPの設定
     4.1 HTTP Coreモジュール
      4.1.1 ブロックによる構造
     4.2 HTTP Coreモジュールのディレクティブ
      4.2.1 ソケットとホストの設定
      4.2.2 パスとドキュメント
      4.2.3 クライアント要求
      4.2.4 MIMEタイプ
      4.2.5 限界、制限
      4.2.6 ファイル処理とキャッシュ
      4.2.7 その他のディレクティブ
     4.3 モジュール変数
      4.3.1 要求ヘッダ
      4.3.2 応答ヘッダ
      4.3.3 Nginxが生成する変数
     4.4 locationブロック
      4.4.1 位置修飾子
      4.4.2 検索の順序と優先順位
          ケース1:第2ブロックが使われる
          ケース2:第1ブロックが使われる
          ケース3:第1ブロックが使われる
     4.5 まとめ

    第5章 各種モジュールの設定
     5.1 Rewriteモジュール
      5.1.1 正規表現の復習
          正規表現を使う目的
          PCREの構文
          量指定子
          キャプチャ
      5.1.2 内部要求
          error_page
          rewrite
          無限ループ
          SSI(サーバサイドインクルード)
      5.1.3 条件構造
      5.1.4 ディレクティブ
      5.1.5 よく使われるrewriteルール
          検索の実行
          ユーザプロファイルページ
          複数の引数
          Wikiepdia風
          ニュースサイトの記事
          会議室
     5.2 SSIモジュール
      5.2.1 ディレクティブと変数
      5.2.2 SSIコマンド
          ファイルのインクルード
          変数の操作
          条件構造
          設定
     5.3 その他のモジュール
      5.3.1 Webサイトのアクセスとログ作成
          Index
          Autoindex
          Random Index
          Log
      5.3.2 制限、制約
          Auth Basic
          Access
          Limit zone
          Limit request
      5.3.3 コンテンツとエンコーディング
          Empty GIF
          FLV
          Headers
          Addition
          Substitution
          Gzipフィルタ
          Gzip Precompression
          Charsetフィルタ
          Memcached
          Image Filter
          XSLT
      5.3.4 ユーザ情報
          Browser
          Map
          Geo
          GeoIP
          User ID
          Referer
          Real IP
      5.3.5 SSLとセキュリティ
          SSL
          SSL証明書とセットアップ
          Secure link
      5.3.6 その他のモジュール
          Stub Status
          Google Perftools
          WebDAV
     5.4 サードパーティモジュール
     5.5 まとめ

    第6章 PHP、PythonとNginx
     6.1 FastCGI入門
      6.1.1 CGIのメカニズム
      6.1.2 Common Gateway Interface(CGI)
      6.1.3 Fast Common Gateway Interface(FastCGI)
      6.1.4 主要なディレクティブ
      6.1.5 FastCGIのキャッシング
      6.1.6 upstreamブロック
          構文
          serverディレクティブ
     6.2 PHPとNginx
      6.2.1 アーキテクチャ
      6.2.2 PHP-FPM
      6.2.3 PHPとPHP-FPMのセットアップ
          ダウンロードと展開
          パッチ
          あらかじめ必要なライブラリ
          PHPのビルド
          インストール後の設定
          実行と制御
      6.2.4 Nginxの設定
     6.3 PythonとNginx
      6.3.1 Django
      6.3.2 PythonとDjangoのセットアップ
          Python
          Django
          FastCGIプロセスマネージャの起動
      6.3.3 Nginxの設定
     6.4 まとめ

    第7章 ApacheとNginxの併用
     7.1 リバースプロキシとしてのNginx
      7.1.1 問題の本質
      7.1.2 リバースプロキシの仕組み
      7.1.3 リバースプロキシの長所と短所
     7.2 NginxのProxyモジュール
      7.2.1 主要なディレクティブ
      7.2.2 キャッシング、バッファリング、一時ファイル
      7.2.3 制限、タイムアウト、エラー
      7.2.4 その他のディレクティブ
      7.2.5 変数
     7.3 ApacheとNginxの設定
      7.3.1 Apacheの設定変更
          作業の概要
          ポート番号の設定変更
          ローカルな要求だけの受け入れ
      7.3.2 Nginxの設定
          プロキシオプションの有効化
          コンテンツの分割
      7.3.3 高度な設定
     7.4 さらに先へ
      7.4.1 正しいIPアドレスの転送
      7.4.2 SSLの問題と解決方法
      7.4.3 サーバコントロールパネルの問題
     7.5 まとめ

    第8章 ApacheからNginxへ
     8.1 Nginx対Apache
      8.1.1 機能
          基本構造
          一般的な機能
      8.1.2 柔軟性とコミュニティ
      8.1.3 パフォーマンス
      8.1.4 利用形態
      8.1.5 結論
     8.2 Apacheの設定の移植
      8.2.1 ディレクティブ
      8.2.2 モジュール
      8.2.3 仮想ホストと設定セクション
          設定セクション
          仮想ホストの作成
      8.2.4 .htaccessファイル
          Apacheの.htaccessファイルについての復習
          Nginxでの同等の機能
     8.3 URL書き換えルール
      8.3.1 一般的な注意点
          位置について
          構文について
          RewriteRule
      8.3.2 WordPress
      8.3.3 MediaWiki
      8.3.4 vBulletin
     8.4 まとめ

    付録A ディレクティブ索引

    付録B モジュールリファレンス

    付録C トラブルシューティング
     C.1 基本チェック事項
      C.1.1 アクセスパーミションのチェック
      C.1.2 設定のテスト
      C.1.3 サービスをロードしたか
      C.1.4 ログのチェック
     C.2 個別の問題のチェック事項
      C.2.1 インストールの問題
      C.2.2 カスタム403エラーページ
      C.2.3 locationブロックの優先順位
      C.2.4 ifブロックの問題
          効率の悪い文
          予想外の動作

    索引



    ●参考リンク
    こちらのブログで紹介されていた書評を見て、買うことにしました。
    Nginx本買ってきた - # watch -d tail /var/log/ngsw.log

    背表紙には「中級技術者向け」とありますが
    初心者こそ買うべき

    第1章 作業環境の準備
    1.1 端末エミュレータのセットアップ
    1.2 基本的なシェルコマンド
    1.3 Linuxファイルシステム
    1.4 システム管理ツール
    1.5 まとめ

    第2章 Nginxのダウンロードとインストール
    2.1 前提として必要なファイルのセットアップ
    2.2 Nginxのダウンロード
    2.2 オプションの設定
    2.4 Nginxサービスの制御
    2.5 Nginxのシステムサービス化
    2.6 まとめ

    ここ汎用性高いのではないか。
    第1章はLinuxの基本だし、第2章はインストールの方法そのもの。
    ここを見ながらNginxをソースインストールしたら、
    他のプログラムもソースインストールできるようになってると思う。
    つまりソースインストール演習「Nginx」という感じでしょうか。
    そんくらい勘所押さえて書いてくれてる。
    「Nginxを普及させるんだ!!」って意志が見えていいなー、って思った。



    Nginx - 軽量高速のWebサーバ - オープンソースコラム

    ■HTTP関連特徴
    ◇ 静的ファイルやインデックスファイル、自動索引作成などの処理をサポート。
    ◇ キャッシュによる高速なリバースプロキシ。シンプルなロードバランス実装。
    ◇ リモートFastCGIキャッシュ機能
    ◇ モジュールアーキテクチャー。gzipやbyte range, XSLT, SSI, chunked responseフィルタ。
    ◇ SSL, TLS SNI サポート

    ■メール・プロキシ・サーバ関連特徴
    ◇ 外部HTTP認証サーバによるバックエンドIMAP/POP3 へのユーザ・リダイレクト
    ◇ HTTP 認証サーバを利用したユーザ認証。バックエンドのインターナルなSMTPへのコレクション・リダイレクト
    ◇ 認証方法
    * POP3: USER/PASS, APOP, AUTH LOGIN/PLAIN/CRAM-MD5
    * IMAP: LOGIN, AUTH LOGIN/PLAIN/CRAM-MD5
    * SMTP: AUTH LOGIN/PLAIN/CRAM-MD5
    ◇ SSL サポート
    ◇ STARTTLS と STLS サポート

    ■その他HTTP特徴
    ◇ 名前・IPベース仮想サーバ
    ◇ keep-alive・pipelinedコレクション・サポート
    ◇ アクセスログ・バッファーログ・ログローテーション
    ◇ 4xx-5xx エラー・コードのリダイレクション
    ◇ rewriteモジュール
    ◇ クライアントのIPアドレスとHTTP Basic認証ベースのアクセス・コントロール
    ◇ PUT, DELETE, MKCOL, COPY, MOVEメソッドサポート
    ◇ FLV ストリーミング
    ◇ スピード制限
    ◇ 指定するアドレスの接続・リクエスト制限



    Nginx のソースからインストール - ARCHIVESDRIVE HD

    Nginx 1.0.0 が出てたので、Nginx 入門を読みながらインストールしてみた。
    めんどくさい人向けにインストール時に利用したコマンド一覧

    # yum install openssl* readline* zlib* gcc pcre*
    # useradd -s /bin/false nginx
    # ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --sbin-path=/usr/local/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --pid-path=/var/run/nginx/nginx.pid --lock-path=/var/lock/subsys/nginx.lock --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_stub_status_module
    # make
    # make install
    # chown -R nginx:nginx /var/run/nginx/
    # vi /etc/init.d/nginx
    # chmod a+x /etc/init.d/nginx

    SSL 通信用のモジュールが「オプションのHTTPモジュール」に分類されてるのが注意する点かなあ。

    起動スクリプト

    configureで色々細かく設定しててうざいと思ったかもしれませんが、オフィシャルの wiki に記述してある RHEL 向けの起動スクリプト使いたかっただけなんやな。とりあえず nginx バイナリへのパスが「/usr/local/sbin/nginx」なのと、pid ファイルへのパスが「/var/run/nginx/nginx.pid」になってる所、あとは nginx.lock になってる事を注意すれば、書き換えは大丈夫かな?とりあえず本家へのリンクと書き換え版の自家スクリプトをおいときますね。


    本書のp.88にある「2.5.3 Nginxのinitスクリプトを作る」でサンプルのシェルスクリプトがあり、それをカスタマイズした事例と。

    nginx で ssl 設定をする - dogmap.jp

    nginx で SSL 設定をするのは、スゴイ簡単です。
    サーバ証明書と秘密鍵がすでにあるなら、/etc/nginx/nginx.conf に以下の設定を追加するだけでおっけ。


    やっぱ管理者画面だけでも、SSLにしておきたいです。><

    nginxのmimeタイプの設定 - 武蔵の日記

    Apacheからnginxに移行したタイミングで RSS ファイルを識別できなくなっていました。原因を調べてみたら、nginx だと rdf ファイルの mime タイプの指定がされていないことが原因でした。

    結果としては以下のように /etc/nginx/mime.type に追記して、 nginx をリロードしてあげれば、期待した動作をしてくれました:


    さくらのVPSでNginxをお使いですな!

    Nginx + PHP-FPM + symfony – オレオレPHP環境

    前までPHPの環境といえば、Apache + mod_phpだったわけですが、Apacheとかどデカいwebサーバーってはたして必要なの?ってことで、最近だとwebサーバーだけならNginx だけでいいのではという結論に達しまして。Nginxはリバプロとして使われている企業が多いと聞きますが、PHPの場合、PHP5.3からPHP- FPMがデフォルトで取り込まれたってことで、Nginx(webサーバー) + PHP-FPM(FastCGI)構成に移行してしまいました。



    さくらのVPS1.5Gで、Nginx+PHP5-fpmで安定的に運用する方法 - それでも地球はまわっている
    さくらのVPS4Gに移行したよ! - それでも地球はまわっている

    6. 1.5GBでも辛いので、Apache2+mod_phpから ngixn + php5-fpm に移行
    7. ngixn + php5-fpm使用時にCodeIgniterの致命的バグ発見。対応できず。


    Nginx+CodeIgniterでエラー発生とのこと。
    うーん、それは困るな~。
    ↓↓↓
    [質問] CI2で welcome 以外のコントローラーが動かない (Codeigniter-users) - CodeIgniter日本語化 - SourceForge.JP

    uri_protocol は、REQUEST_URI にしてます。


    php-fpmを使ってCodeIgniterを動かしてみたメモ - 黒羊工房はてな版
    setting up codeigniter on nginx,, | CodeIgniter Forums
    CodeIgniter NGINX Rewrite Rules - far IN space WEB+
    動くんか?
    Nginx+CodeIgniterの設定例は、検索するとたくさんヒットするので使えるみたいだけど、どうなんだろう?

    本書のp.238によると、NginxはApacheの「.htaccess」ファイルと同等の機能を持っていないので、URL書き換えルールは別の場所で設定しなければいけない、とのこと。
    =設定が足りていないのかな?

    とりあえず、後で試してみたいと思います。
    関連記事

    コメント

    コメントの投稿


    管理者にだけ表示を許可する

    トラックバック

    トラックバックURL:
    http://hamamuratakuo.blog61.fc2.com/tb.php/649-e337e414

    FC2Ad