Dotdeb から最新のnginxをインストールする
Dotdeb から最新のnginxをインストールするために、以下に簡単な手順を解説しておきます。
( Debian (Ubuntu 12) で Dotdeb から最新のPHP , MySQL をインストールする の手順と同じです。既に設定済なら、Dotdeb から最新のnginxをインストールするへ進みましょう。 )
Dotdebのサイトをパッケージダウンロード先として登録する
いわゆるリポジトリの登録です。/etc/apt/sources.list の末尾に以下を追記します。
...
deb http://packages.dotdeb.org squeeze all
deb-src http://packages.dotdeb.org squeeze all
|
sources.list の書式
- バイナリパッケージの書式:
deb URL Distribution [component1] [component2]…
- ソースパッケージの書式:
deb-src URL Distribution [component1] [component2]…
現在(2012.8)では、nginx 1.2.3 が最新版としてリリースされています。
Dotdeb のリポジトリでは、安定(stable)版 の最新版のみが提供されています。
もし、別のバージョンが欲しい場合(例えば開発(Develop)版など)は、nginxの公式サイトでソースコードの入手からはじめる必要があります。
Dotdebのサイトから、パッケージの公開鍵をダウンロードし、apt-keyで追加する
Debian / Ubuntu では、ダウンロードするパッケージが安全か否かを判断するための公開キーを追加する必要があります。
$ wget http://www.dotdeb.org/dotdeb.gpg
...
$ apt-key add dotdeb.gpg
OK
|
apt-get でキャッシュならびシステムの更新を行う
ダウンロード先の登録などを行った場合は、キャッシュ情報など更新のために apt-get (aptitudeでも可) でアップデートを行います。
$ apt-get update
...
Reading package lists... Done
|
apt-get (aptitudeでも可) で最新のnginxをインストールする
$ apt-get -y install nginx
...
Reading package lists... Done
|
一応、インストールを終えたら、バージョンを確認してみましょう。
$ nginx -v
nginx version: nginx/1.2.3
|
現在(2012.8.31)では、Debian本家のリポジトリが、nginx 1.2.1 に対して 一応、Dotdebが nginx 1.2.3 を提供していますから、上記のように出力されれば、
ちゃんと Dotdeb から最新パッケージをインストールできたことを確認できたことになるでしょう。
( Debian 本家で提供されている nginx は、http://ftp.debian.org/debian/pool/main/n/nginx/ で確認できます。)
nginxとPHPの動作確認を行ってみる
最後にnginxの動作確認とともにPHPの動作確認まで行ってみます。
php fpm を起動します。
nginx で php を実行するための簡単で、効率的、高速な方法の一つとして php fpm は人気です。
ここでは、nginx上でphpを動作させるために php fpm を使います。
まずは、
/etc/php5/fpm/pool.d/www.conf を編集し、
php を nginx で動作させるために fpm の必要最小限の設定 を行います。
...
[www]
...
user = www-data
group = www-data
...
listen = 127.0.0.1:9000
...
listen.owner = www-data
listen.group = www-data
...
|
この文字色箇所が、編集箇所です。
基本的にユーザ、グループをnginxに統一しているだけです。
listen情報は、後でnginxでも設定します。必ずメモで控えておきましょう。
( ここでは、listen情報はデフォルトのまま使用しています。 )
php-fpm サーバーを起動します。
$ /etc/init.d/php5-fpm start
$
|
PHP
FPMとは、
FastCGI
Process
Manager の略で、PHP の FastCGI 実装・管理を行うためのものです。
(バージョン5.3.3以降PHPの公式ディストリビューションにバンドルされています。)
主に高負荷のサイトで有用な追加機能を用意していて、以下のような機能(特徴)があります。
-
異なる uid/gid/chroot/environment でのワーカーの開始、
異なるポートでのリスン、異なる php.ini の使用 (safe_mode の代替)
-
標準出力および標準エラー出力へのログ出力
-
opcode キャッシュが壊れた場合の緊急再起動
-
高速なアップロードのサポート
-
“slowlog” – 実行時間が非常に長いスクリプトの記録
(スクリプト名だけでなく、PHP バックトレースも記録します。バックトレースを取得するために、
ptrace やそれと同等の仕組みを使ってリモートプロセスの execute_data を読みます)
-
fastcgi_finish_request() – リクエストを終わらせてすべてのデータを出力した後で
何か時間のかかる処理 (動画の変換や統計情報の処理など)
をさせるための特殊な関数
-
動的/静的 な子プロセスの起動
-
基本的な SAPI の動作状況 (Apache の mod_status と同等)
-
php.ini ベースの設定ファイル
(出典: php公式サイト http://php.net/manual/ja/install.fpm.php )
nginx を起動します。
まずは、/etc/nginx/nginx.conf を編集し、
php を動作させるための nginxサーバーの必要最小限の設定 を行います。
...
user www-data;
worker_processes 4;
pid /var/run/nginx.pid;
...
|
user を php-fpm で設定しているuser と同じ名前に設定します。
次に デフォルトのサーバーをそのまま使って、phpを動作させるための設定を行います。
デフォルトのウェブサーバーの設定は、nginxのバージョンによって設定ファイルも異なるようです。
いずれのファイルであっても設定する内容は、同じです。
デフォルトのウェブサーバーの設定の server ディレクティブの末尾に、以下のような内容を追記するだけです。
...
server {
...
root /usr/share/nginx/www;
...
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_intercept_errors on;
include fastcgi_params;
}
}
...
|
root で設定しているウェブのルートディレクトリは必ず確認しておきます。
fastcgi_pass で設定する内容は、先の php-fpm で設定した
listen情報をそのまま設定します。
また、
include を使って、
ここで自動的に読み込んでいる
fastcgi_params は、デフォルトのまま使用しています。
もし、/etc/nginx/
fastcgi_params が存在しないなら、以下のような内容のファイルを作成してください。
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param REDIRECT_STATUS 200;
|
次に、nginxサーバーを起動します。
$ /etc/init.d/nginx start
Starting nginx: nginx.
$
|
最後に確認します。
サーバーのIPアドレスでウェブブラウザからアクセスしてみましょう。
以下のような画面が表示されればOKです。
次に、phpが動作するか確認します。
デフォルトのnginx ウェブサーバーのルートディレクトリは、先のデフォルトの設定の中の root 情報になります。(先の例では、 /usr/share/nginx/www になります。 )
ここに、info.php というファイル名で、以下のように phpinfo() を表示してみましょう。
$ echo "<?php echo phpinfo(); ?>" > /usr/share/nginx/www/info.php
$
|
先と同様に
http://サーバーのIPアドレス/info.php
でウェブブラウザからアクセスしてみましょう。
以下のような画面が表示されればOKです。
Server API : FPM/FastCGI となっていれば間違いなく php-fpm でちゃんと動作しています。
この記事は、初心者向けに書いてみました。
どうだったでしょうか?
一応、簡単な設定だけの紹介で、とりあえず nginx 上で php を動作させるだけの設定のみにしてみました。
わかりやすかったかどうかじゃなく、まずは、nginx 上で phpを動かしてみることを最優先に書いてみました。
とあえず動作すれば、後は、ぼちぼちお勉強して知識を増やしていけば、それっぽく動くようになると思います。
まずは、phpinfo() で情報出力までをやってみられてはいかがでしょうか。
コメントを投稿 :