検索
ホームページバックエンド開発PHPチュートリアルDebian 6 上の Nginx と PHP-FastCGI (Squeeze)

Debian 6 上の Nginx と PHP-FastCGI (Squeeze)

公開日: 2011 年 5 月 9 日月曜日、Phil Paradis による

nginx Web サーバーは、低トラフィック Web サイトと高トラフィック Web サイトの両方のニーズを効率的に処理するように設計された高速で軽量のサーバーです。一般的には静的コンテンツを提供するために使用されますが、動的ページも処理することができます。このガイドは、Debian 6 (Squeeze) Linux VPS 上で FastCGI 経由で PHP を使用して nginx を起動して実行するのに役立ちます。

スタート ガイドに記載されている手順にすでに従っていることを前提としています。これらの手順は、SSH 経由で Linode VPS に root ログインして実行する必要があります。

目次

ホスト名の設定 必要なパッケージのインストール 仮想ホスティングの構成 FastCGI を使用した PHP のテスト ディレクトリの作成 UNIX ソケットの構成例 TCP ソケットの構成例 セキュリティに関する重要な考慮事項 サービスの有効化と開始詳細

ホスト名を設定する

このガイドで説明されているコンポーネントのインストールと構成を開始する前に、ホスト名の設定手順に従っていることを確認してください。次のコマンドを発行して、正しく設定されていることを確認します。

hostname
hostname -f 

最初のコマンドでは短いホスト名が表示され、2 番目のコマンドでは完全修飾ドメイン名 (FQDN) が表示されます。

必要なパッケージをインストールする

次のコマンドを発行しますシステムを更新し、nginx Web サーバー、PHP、およびコンパイラ ツールをインストールするには:

apt-get update
apt-get upgrade
apt-get install nginx php5-cli php5-cgi spawn-fcgi 

仮想ホスティングを構成する

ディレクトリを作成する

このガイドでは、ドメイン "example.com" がサンプル サイトとして使用されます。次の構成手順では、独自のドメイン名を置き換える必要があります。まず、コンテンツとログ ファイルを保持するディレクトリを作成します。

mkdir -p /srv/www/www.example.com/public_html
mkdir /srv/www/www.example.com/logs
chown -R www-data:www-data /srv/www/www.example.com 

UNIX ソケットの構成例

次に、サイトの仮想ホスト ファイルを定義する必要があります。この例では、UNIX ソケットを使用して fcgiwrap に接続します。 「example.com」のすべてのインスタンスを必ずドメイン名に変更してください。

ファイル:/etc/nginx/sites-available/www.example.com

server {
  server_name www.example.comexample.com; 
  access_log /srv/www/www.example.com/logs/access.log; 
  error_log /srv/www/www.example.com/logs/error.log;
  root /srv/www/www.example.com/public_html;
  location / {
    index index.htmlindex.htm;
  }
  location ~ \.php$ {
    include /etc/nginx/fastcgi_params;
    fastcgi_passunix:/var/run/php-fastcgi/php-fastcgi.socket;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME /srv/www/www.example.com/public_html$fastcgi_script_name;
  }
} 

次の内容を含む /usr/bin/php-fastcgi という名前のファイルを作成します:

File:/usr/bin/php-fastcgi

#!/bin/bash
FASTCGI_USER=www-data
FASTCGI_GROUP=www-data
SOCKET=/var/run/php-fastcgi/php-fastcgi.socket
PIDFILE=/var/run/php-fastcgi/php-fastcgi.pid
CHILDREN=6 PHP5=/usr/bin/php5-cgi
/usr/bin/spawn-fcgi -s $SOCKET -P $PIDFILE -C $CHILDREN -u $FASTCGI_USER -g $FASTCGI_GROUP -f $PHP5

次のコマンド:

chmod +x /usr/bin/php-fastcgi 

TCP ソケットの設定例

あるいは、代わりに TCP ソケットを使用することもできます。その場合は、nginx 仮想ホスト構成ファイルを次の例のように変更します。繰り返しますが、「example.com」のすべてのインスタンスをドメイン名に置き換えてください。

File:/etc/nginx/sites-available/www.example.com

server {
  server_name www.example.com example.com; 
  access_log /srv/www/www.example.com/logs/access.log;
  error_log /srv/www/www.example.com/logs/error.log;
  root /srv/www/www.example.com/public_html;
  location / {
    index  index.html index.htm;
  }
  location ~ \.php$ {
    include /etc/nginx/fastcgi_params;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME /srv/www/www.example.com/public_html$fastcgi_script_name;
  }
} 

次の内容を含む /usr/bin/php-fastcgi という名前のファイルを作成します:

File:/usr/bin/php-fastcgi

#!/bin/bash 
FASTCGI_USER=www-data 
FASTCGI_GROUP=www-data 
ADDRESS=127.0.0.1 PORT=9000 
PIDFILE=/var/run/php-fastcgi/php-fastcgi.pid 
CHILDREN=6 
PHP5=/usr/bin/php5-cgi  
/usr/bin/spawn-fcgi -a $ADDRESS -p $PORT -P $PIDFILE -C $CHILDREN -u $FASTCGI_USER -g $FASTCGI_GROUP -f $PHP5 

実行可能にする次のコマンドを発行して、次のコマンドを実行します。

chmod +x /usr/bin/php-fastcgi 

セキュリティに関する重要な考慮事項

ファイルのアップロード (画像など) をサポートするアプリケーションを実行する予定がある場合、上記の構成では任意のコードの実行が許可され、セキュリティ リスクにさらされる可能性があります。この動作を簡単に説明すると、「.php」で終わる適切に作成された URI と、実際に有効な PHP を含む悪意のある画像ファイルの組み合わせにより、画像が PHP として処理される可能性があるということです。

この問題を軽減するには、 try_files ディレクティブを含めるように構成を変更することもできます。この修正では、nginx と php-fcgi ワーカーが同じサーバー上に存在する必要があることに注意してください。

location ~ \.php$ {
  try_files $uri =404;
  include /etc/nginx/fastcgi_params;
  fastcgi_pass unix:/var/run/php-fastcgi/php-fastcgi.socket;
  fastcgi_index index.php;
  fastcgi_param SCRIPT_FILENAME /srv/www/www.example.com/public_html$fastcgi_script_name;
} 

さらに、アプリケーションが使用するアップロード ディレクトリを保護することをお勧めします。次の構成の抜粋は、「/images」ディレクトリの保護を示しています。

location ~ \.php$ {
  include /etc/nginx/fastcgi_params;
  if ($uri !~ "^/images/") {
    fastcgi_pass unix:/var/run/php-fastcgi/php-fastcgi.socket;
  }
  fastcgi_index index.php;
  fastcgi_param SCRIPT_FILENAME /srv/www/www.example.com/public_html$fastcgi_script_name;
} 

サービスを有効にして開始する 次のコマンドを発行してサイトを有効にします:

cd /etc/nginx/sites-enabled/
ln -s /etc/nginx/sites-available/www.example.com 

Create a file named /etc/init.d/php-fastcgi with the following contents:

File:/etc/init.d/php-fastcgi

#!/bin/bash
PHP_SCRIPT=/usr/bin/php-fastcgi
FASTCGI_USER=www-data
FASTCGI_GROUP=www-data
PID_DIR=/var/run/php-fastcgi
PID_FILE=/var/run/php-fastcgi/php-fastcgi.pid
RET_VAL=0
case "$1" in
  start)
    if [[ ! -d $PID_DIR ]]
    then
      mkdir $PID_DIR
      chown $FASTCGI_USER:$FASTCGI_GROUP $PID_DIR
      chmod 0770 $PID_DIR
    fi
    if [[ -r $PID_FILE ]]
    then
      echo "php-fastcgi already running with PID `cat $PID_FILE`"
      RET_VAL=1
    else
      $PHP_SCRIPT
      RET_VAL=$?
    fi
  ;;
  stop)
    if [[ -r $PID_FILE ]]
    then
      kill `cat $PID_FILE`
      rm $PID_FILE
      RET_VAL=$?
      else  echo "Could not find PID file $PID_FILE"
      RET_VAL=1
    fi
  ;;
  restart)
    if [[ -r $PID_FILE ]]
    then  kill `cat $PID_FILE`
      rm $PID_FILE
      RET_VAL=$?
    else
      echo "Could not find PID file $PID_FILE"
    fi
    $PHP_SCRIPT
    RET_VAL=$?
  ;;
  status)
    if [[ -r $PID_FILE ]]
    then
      echo "php-fastcgi running with PID `cat $PID_FILE`"
      RET_VAL=$?
    else
      echo "Could not find PID file $PID_FILE, php-fastcgi does not appear to be running"
    fi
  ;;
  *)
    echo "Usage: php-fastcgi {start|stop|restart|status}"
    RET_VAL=1
  ;;
esac
exit $RET_VAL 

Start php-fastcgi and nginx by issuing the following commands:

chmod +x /etc/init.d/php-fastcgi
update-rc.d php-fastcgi defaults
/etc/init.d/php-fastcgi start
/etc/init.d/nginx start 

Test PHP with FastCGI

Create a file called "test.php" in your site's "public_html" directory with the following contents:

File:/srv/www/example.com/public_html/test.php

<?php phpinfo(); ?> 

When you visit http://www.example.com/test.php in your browser, the standard "PHP info" output is shown. Congratulations, you've configured the nginx web server to use PHP-FastCGI for dynamic content!

More Information

You may wish to consult the following resources for additional information on this topic. While these are provided in the hope that they will be useful, please note that we cannot vouch for the accuracy or timeliness of externally hosted materials.

 

The nginx Homepage FastCGI Project Homepage PHP Documentation Basic Ngnix Configuration
声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
誇大広告を超えて:今日のPHPの役割の評価誇大広告を超えて:今日のPHPの役割の評価Apr 12, 2025 am 12:17 AM

PHPは、特にWeb開発の分野で、最新のプログラミングで強力で広く使用されているツールのままです。 1)PHPは使いやすく、データベースとシームレスに統合されており、多くの開発者にとって最初の選択肢です。 2)動的コンテンツ生成とオブジェクト指向プログラミングをサポートし、Webサイトを迅速に作成および保守するのに適しています。 3)PHPのパフォーマンスは、データベースクエリをキャッシュおよび最適化することで改善でき、その広範なコミュニティと豊富なエコシステムにより、今日のテクノロジースタックでは依然として重要になります。

PHPの弱い参照は何ですか、そしていつ有用ですか?PHPの弱い参照は何ですか、そしていつ有用ですか?Apr 12, 2025 am 12:13 AM

PHPでは、弱い参照クラスを通じて弱い参照が実装され、ガベージコレクターがオブジェクトの回収を妨げません。弱い参照は、キャッシュシステムやイベントリスナーなどのシナリオに適しています。オブジェクトの生存を保証することはできず、ごみ収集が遅れる可能性があることに注意する必要があります。

PHPで__invoke Magicメソッドを説明してください。PHPで__invoke Magicメソッドを説明してください。Apr 12, 2025 am 12:07 AM

\ _ \ _ Invokeメソッドを使用すると、オブジェクトを関数のように呼び出すことができます。 1。オブジェクトを呼び出すことができるように\ _ \ _呼び出しメソッドを定義します。 2。$ obj(...)構文を使用すると、PHPは\ _ \ _ Invokeメソッドを実行します。 3。ロギングや計算機、コードの柔軟性の向上、読みやすさなどのシナリオに適しています。

同時性については、PHP 8.1の繊維を説明します。同時性については、PHP 8.1の繊維を説明します。Apr 12, 2025 am 12:05 AM

繊維はPhp8.1で導入され、同時処理機能が改善されました。 1)繊維は、コルーチンと同様の軽量の並行性モデルです。 2)開発者がタスクの実行フローを手動で制御できるようにし、I/O集約型タスクの処理に適しています。 3)繊維を使用すると、より効率的で応答性の高いコードを書き込むことができます。

PHPコミュニティ:リソース、サポート、開発PHPコミュニティ:リソース、サポート、開発Apr 12, 2025 am 12:04 AM

PHPコミュニティは、開発者の成長を支援するための豊富なリソースとサポートを提供します。 1)リソースには、公式のドキュメント、チュートリアル、ブログ、LaravelやSymfonyなどのオープンソースプロジェクトが含まれます。 2)StackOverFlow、Reddit、およびSlackチャネルを通じてサポートを取得できます。 3)開発動向は、RFCに従うことで学ぶことができます。 4)コミュニティへの統合は、積極的な参加、コード共有への貢献、および学習共有への貢献を通じて達成できます。

PHP対Python:違いを理解しますPHP対Python:違いを理解しますApr 11, 2025 am 12:15 AM

PHP and Python each have their own advantages, and the choice should be based on project requirements. 1.PHPは、シンプルな構文と高い実行効率を備えたWeb開発に適しています。 2。Pythonは、簡潔な構文とリッチライブラリを備えたデータサイエンスと機械学習に適しています。

PHP:それは死にかけていますか、それとも単に適応していますか?PHP:それは死にかけていますか、それとも単に適応していますか?Apr 11, 2025 am 12:13 AM

PHPは死にかけていませんが、常に適応して進化しています。 1)PHPは、1994年以来、新しいテクノロジーの傾向に適応するために複数のバージョンの反復を受けています。 2)現在、電子商取引、コンテンツ管理システム、その他の分野で広く使用されています。 3)PHP8は、パフォーマンスと近代化を改善するために、JITコンパイラおよびその他の機能を導入します。 4)Opcacheを使用してPSR-12標準に従って、パフォーマンスとコードの品質を最適化します。

PHPの未来:適応と革新PHPの未来:適応と革新Apr 11, 2025 am 12:01 AM

PHPの将来は、新しいテクノロジーの傾向に適応し、革新的な機能を導入することで達成されます。1)クラウドコンピューティング、コンテナ化、マイクロサービスアーキテクチャに適応し、DockerとKubernetesをサポートします。 2)パフォーマンスとデータ処理の効率を改善するために、JITコンパイラと列挙タイプを導入します。 3)パフォーマンスを継続的に最適化し、ベストプラクティスを促進します。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。