Как настроить PHP с Nginx, APC и PostgreSQL?

9

Я использую Ubuntu Server 10.10, и я хотел бы настроить среду веб-сервера с NginX , PHP 5.3.3, PostgreSQL и предпочтительно APC и PHP Suhosin.

Я уже настроил PostgreSQL с apt-get install postgresqlи Nginx с apt-get install nginx.

Но как мне настроить PHP для них? Могу ли я сделать это с помощью apt-get installили мне нужно скачать исходники и скомпилировать их? Я бы предпочел сделать это с помощью apt-get.

Я хотел бы использовать PHP-FPM для Nginx. Большинство учебных пособий, которые я нашел в Интернете, старые и компилируют PHP, но это не рекомендуется для рабочих серверов.

Как мне проще всего настроить PHP с Nginx, APC и PostgreSQL? или хотя бы PHP-FPM + Nginx?


ОБНОВИТЬ

Теперь я установил свежий Ubuntu Server 10.10 и выполнил команду, предложенную Питером с 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
источник
Пожалуйста, ответьте на этот вопрос, а затем примите его, чтобы мы могли голосовать за них обоих одновременно как за объединенное решение.
Хорхе Кастро
@Jorge: Это не ответ, я просто показываю мой конфигурационный файл, который не работает . Питер Смит опубликовал правильное решение в сочетании с комментариями, и я принял его как ответ.
Джонас
Ах, моя ошибка!
Хорхе Кастро

Ответы:

8

Начиная с Ubuntu 10.10 это тривиально с новым пакетом php5-fpm

Следующие пакеты делают все необходимое

  • nginx - веб-сервер
  • php5-fpm - Fast-CGI php сервер
  • php-apc - Пакет APC для php
  • php5-pgsql - модуль PostgreSQL для PHP
  • postgresql - Сервер базы данных PostgreSQL

Все вместе sudo apt-get install nginx php5-fpm php-apc php5-pgsql postgresql

Также предлагаю проверить, установлен ли apache2. Если это так, удалите его, sudo apt-get remove apache2чтобы избежать конкуренции apache и nginx за порт 80.

Также обратите внимание, что стандарт xdebug также хочет использовать порт 9000, как php5-fpm. Поэтому, если вы используете 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 Возможно, nginx и php5-fpm еще не запущены. В таком случае sudo service nginx startи sudo service php5-fpm startнадо делать работу. Конечно, следите за любой ошибкой, которую они могут дать.
Питер Смит
@Jonas Ваш журнал ошибок не должен содержать favicon.ico, по крайней мере, если вы скопировали часть empty_gif из моего решения. Кроме того, не забывайте перезапускать всегда после изменения ( sudo service nginx reload). Если ничего не помогает, возможно, вы могли бы добавить свой файл конфигурации к вашему вопросу.
Питер Смит
Я обновил вопрос с помощью моего файла конфигурации для Nginx, похоже, что-то не так с установкой PHP. После добавления ваших строк о favicon в мой файл конфигурации я больше не получаю никаких ошибок в журнале ошибок Nginx. Nginx работает с .htmlфайлами, но не работает с .phpфайлами.
Джонас
1
@Jonas Страница, которая помогла мне создать «чистые» файлы конфигурации, - это wiki.nginx.org/Pitfalls , но не игнорируйте предупреждение о внесении изменений, которые вы не понимаете.
Питер Смит