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