文書の過去の版を表示しています。
目次
nginx
非同期IOで動作する高速なHTTPサーバ。
コンフィギュレーション
configファイルは cong/nginx.conf である。
Basic認証
Apache の htpasswd がそのまま使える。
Ubuntu 10.04では以下のパッケージに htpasswd コマンドが含まれている(Apache本体は不要)
$ sudo aptitude install apache2-utils
/etc/nginx/conf/nginx.conf
http { .. server { .. location / { .. auth_basic "Staff Only"; auth_basic_user_file /etc/nginx/conf/htpasswd; } } }
最大接続数
worker_processes 2; events { worker_connections 1024; }
worker_processes と worker_connections の積、この場合は2048リクエストが最大接続数となる。想定される最大クライアント数×1ページ当たりの平均ファイル数より多少大きい値を設定すると良い。
ファイルディスクリプタの制限
Linuxではユーザが使用可能なリソース数が制限されている。Ubuntuではデフォルトでファイルを1024以上オープンできないが、nginxで同時に大量のリクエスト処理を行うと1024を上回る可能性がある。
worker_rlimit_nofile で nginx プロセスがオープンできるリソースの制限を変更できる。
worker_processes 2; worker_rlimit_nofile 4096; events { worker_connections 1024; }
※ この設定は1 worker_processesあたりの設定? worker_connectionsと同じで良いのか? 仮にそうだとしてkeep aliveやssiを使っていると1コネクションで複数ファイルを開くので、その場合はconnectionより大きい値を指定しないといけない? 要調査。
passenger
nginx + passenger でrailsアプリを起動する。
Ubuntu 10.04では以下のライブラリをインストールする
$ sudo aptitude install build-essential $ sudo aptitude install libcurl4-openssl-dev
rubyやgem、rails等のインストール後、gemでpassengerをインストール。ここではバージョンを明示しているが、特に指定せず最新版を入れると良い。
$ sudo gem install -v=3.0.7 passenger --no-rdoc --no-ri $ sudo /var/lib/gems/1.8/gems/passenger-3.0.7/bin/passenger-install-nginx-module
とりあえず起動と停止
$ sudo /opt/nginx/sbin/nginx $ sudo /opt/nginx/sbin/nginx -s stop
Railsアプリの実行ユーザはAapche版と同じく environment.rb の所有ユーザとなる。
nginx.confに設定を追加
Rubyの設定(これはビルドすると最初から設定済み)
http { # ... passenger_root /var/lib/gems/1.8/gems/passenger-3.0.8; passenger_ruby /usr/bin/ruby1.8; # ... }
Rails(Rack)の設定
http { # ... server { listen 80; server_name rails.paulownia.jp; root /var/www/rails.paulownia.jp/app/public; passenger_enabled on; } }
Railsの特定のパス以下にbasic認証をかけたい場合は、basic認証をかけるフォルダでも passenger_enabled on を設定する。
http { # ... server { listen 80; server_name rails.paulownia.jp; root /var/www/rails.paulownia.jp/app/public; location / { passenger_enabled on; } location /auth/ { passenger_enabled on; auth_basic "Authentication Required"; auth_basic_user_file "/var/www/rails.paulownia.jp/app/htpasswd"; } } }
PHP
FastCGIでphpを動作させる。php-fpmまたはspawn-fcgiを使う。
php-fpm
PHP-FPM(PHP FastCGI Process Manager)はPHP5.3から導入されたFCGIのプロセス管理ツール。
Ubuntu 10.04の標準aptリポジトリには無い。nginxチームが作成したリポジトリにパッケージがある。
$ sudo aptitude install python-software-properties $ sudo add-apt-repository ppa:nginx/php5 $ sudo aptitude update $ sudo aptitude install php5-fpm
起動スクリプトも作成される。デフォルトでは9000番ポートでFCGIが起動する。
起動と停止
$ sudo service php5-fpm start $ sudo service php5-fpm stop
spawn-fcgi
$ sudo aptitude install php5-cgi $ sudo aptitude install spawn-fcgi
起動スクリプトが無いので自分で作る。/etc/init.d/php5-fastcgi ファイルを作成
#!/bin/bash PID_FILE="/var/run/php5-fcgi.pid" FCGI_EXEC="/usr/bin/spawn-fcgi" FCGI_OPTS="-a 127.0.0.1 -p 9000 -u www-data -g www-data -f /usr/bin/php5-cgi -C 3 -P $PID_FILE" RETVAL=0 start_fcgi() { $FCGI_EXEC $FCGI_OPTS } stop_fcgi() { kill $(cat $PID_FILE) } case "$1" in start) start_fcgi RETVAL=$? ;; stop) stop_fcgi RETVAL=$? ;; restart) stop_fcgi start_fcgi RETVAL=$? ;; *) echo "Usage: php5-fastcgi {start|stop|restart}" exit 1 ;; esac exit $RETVAL
デーモンとして設定
$ sudo update-rc.d php5-fastcgi defaults
起動と停止
$ sudo service php5-fastcgi start $ sudo service php5-fastcgi stop
nginx.conf
spawn-fcgiでもphp-fpmでも同じ
server { listen 80; server_name sample.paulownia.jp root /var/www/sites/sample.paulownia.jp/htdocs; index index.html index.php location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }