Nginx、APC、PostgreSQLでPHPを設定する方法は?


9

Ubuntu Server 10.10を使用していますが、NginX、PHP 5.3.3、PostgreSQL、できればAPCとPHP Suhosin を使用してWebサーバー環境をセットアップたいと考えています。

私はすでにでPostgreSQLをapt-get install postgresql、Nginxでを設定していますapt-get install nginx

しかし、これらのためにPHPを設定するにはどうすればよいですか?これを使用してこれをapt-get install行うことができますか、それともソースをダウンロードしてコンパイルする必要がありますか?私はそれを使ってそれをしたいと思いますapt-get

NginxにはPHP-FPMを使用したいと思います。私がインターネットで見つけたほとんどのチュートリアルは古く、PHPをコンパイルしていますが、これは本番サーバーには推奨されません。

Nginx、APC、PostgreSQLでPHPを最も簡単に設定するにはどうすればよいですか?または少なくともPHP-FPM + Nginx?


更新

これで、新しいUbuntu Server 10.10をインストールし、Peterが提案したコマンドをphp5-suhosin追加で実行しました。Nginxが正常に動作した後、生成された構成ファイルを以下のように編集します。新しい構成ファイルをリロードした後も、Nginxはindex.htmlファイルを使用して正常に機能しindex.phpますが、ファイルを追加すると機能しなくなります。これは、PHP-FPM、APC、またはPHP関連のものに関係していると思います。しかし、これはPHP-FPMの構成ファイルにもなる可能性があります。

これが私が使用しているNginxの設定ファイルです。ほとんどはデフォルトで生成されています。コメントをスキップしました。

server {

    listen 80;
    listen [::]:80 default ipv6only=on;

    server_name localhost;

    access_log /var/log/nginx/localhost.access.log;

    location /favicon.ico {
        empty_gif;
    }

    location / {
        root     /var/www;
        index    index.php index.html index.htm;
    }

    location ~ \.php$ {
        fastcgi_pass 127.0.0.1:9000
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include /etc/nginx/fastcgi_params;
    }

}

これを答えて、それを受け入れてください。そうすれば、両方のソリューションを組み合わせたソリューションとして投票できます。
ホルヘカストロ

@ジョージ:これは答えではありません機能しない設定ファイルを表示してます。ピータースミットはコメントと組み合わせた正しい解決策を投稿し、私はそれを回答として受け入れました。
Jonas

ああ私の間違い、ロックオン!
ホルヘカストロ

回答:


8

Ubuntu 10.10から、これは新しいphp5-fpmパッケージで簡単です

次のパッケージは、必要なすべてを行います

  • nginx -ウェブサーバー
  • php5-fpm -Fast-CGI phpサーバー
  • php-apc -PHPのAPCパッケージ
  • php5-pgsql -PHP用PostgreSQLモジュール
  • postgresql -PostgreSQLデータベースサーバー

すべて一緒に sudo apt-get install nginx php5-fpm php-apc php5-pgsql postgresql

また、apache2がインストールされているかどうかを確認することをお勧めします。その場合は、sudo apt-get remove apache2ApacheとNginxがポート80で競合しないように、それを削除します。

また、xdebug標準もphp5-fpmと同様にポート9000を使用することを望んでいます。したがって、xdebugを使用する場合は、そのポートをたとえば9001に変更します。

そしておまけとして、nginxの設定例(/ etc / nginx / sites-availableに配置し、/ etc / nginx / sites-enabledにシンボリックリンクします)

server {
  listen 80;
  server_name site.com;
  access_log /data/log/www/site.com/access.log;
  error_log /data/log/www/site.com/error.log;

  root /data/www_data/site.com/public;
  index index.php;

  location = /favicon.ico {
    empty_gif;
    #return 204;
  }

  location ~ \.php$ {
    include /etc/nginx/fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_pass 127.0.0.1:9000;
  }
}

私はこれをこれで完了し、単純なtest.phpファイルを作成しましたが、機能しません。ブラウザに「リンク切れ」と表示され、Nginxエラーログには「favicon.ico」に関するエントリしかありません。私の設定ファイルには何かがあると思いますが、私には本当にわからないので、エラーを見つけるのはかなり困難です。
Jonas

@Jonas nginxとphp5-fpmがまだ起動されていない可能性があります。その場合、sudo service nginx startそしてsudo service php5-fpm start仕事をする必要があります。もちろん、彼らが与える可能性のあるエラーに注意してください。
Peter Smit、

@Jonasエラーログにfavicon.icoが含まれていてはいけません。少なくとも、私のソリューションからempty_gifパーツをコピーした場合はそうではありません。また、変更後は常に再起動することを忘れないでください(sudo service nginx reload)。他のすべてが失敗した場合、おそらくあなたの質問に設定ファイルを追加することができます。
Peter Smit、

Nginxの設定ファイルで質問を更新しました。PHPの設定に問題があるようです。faviconに関する行を構成ファイルに追加した後、Nginxエラーログにエラーが記録されなくなりました。Nginxは.htmlファイルで機能しますが、ファイルでは機能しません.php
Jonas

1
@Jonas「クリーン」な設定ファイルを作成するのに役立つページはwiki.nginx.org/Pitfallsですが、理解できない変更の実装に関する警告を無視しないでください。
Peter Smit
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.