Як налаштувати 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;
    }

}

Будь ласка, дайте цю відповідь, а потім прийміть її, таким чином ми зможемо проголосувати за обох разом як за комбіноване рішення.
Хорхе Кастро

@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щоб уникнути, щоб апаш і nginx змагалися за порт 80.

Зауважте також, що стандарт xdebug також хоче використовувати порт 9000, як і php5-fpm. Отже, якщо ви використовуєте xdebug, змініть цей порт, наприклад, на 9001

І як бонус - приклад конфігурації nginx (розмістіть її в / etc / nginx / available-sites і символізуйте її у / etc / nginx / включеному сайтах)

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 з мого рішення. Крім того, не забудьте перезавантажити завжди після зміни (the sudo service nginx reload). Якщо все інше не вдасться, можливо, ви можете додати свій файл конфігурації до свого питання.
Пітер Сміт

Я оновив питання зі своїм файлом конфігурації для Nginx, здається, що з програмою PHP щось не так. Після додавання ваших рядків про favicon до мого файлу конфігурації я більше не отримую помилок у журналі помилок Nginx. Nginx працює з .htmlфайлами, але він не працює для .phpфайлів.
Йонас

1
@Jonas Сторінка, яка допомогла мені зробити «чисті» файли конфігурації, - це wiki.nginx.org/Pitfalls , але не ігноруйте попередження про впровадження змін, які ви не розумієте.
Пітер Сміт
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.