Bagaimana cara mengatur PHP dengan Nginx, APC dan PostgreSQL?

9

Saya menggunakan Ubuntu Server 10.10 dan saya ingin mengatur lingkungan server web dengan NginX , PHP 5.3.3, PostgreSQL dan lebih disukai APC dan PHP Suhosin.

Saya sudah mengatur PostgreSQL dengan apt-get install postgresqldan Nginx dengan apt-get install nginx.

Tapi bagaimana cara mengatur PHP untuk ini? Dapatkah saya melakukan ini menggunakan apt-get installatau saya harus mengunduh sumber dan kompilasi? Saya lebih suka melakukannya menggunakan apt-get.

Saya ingin menggunakan PHP-FPM untuk Nginx. Sebagian besar tutorial yang saya temukan di Internet sudah tua dan kompilasi PHP, tetapi ini tidak disarankan untuk server produksi.

Bagaimana cara termudah mengatur PHP dengan Nginx, APC dan PostgreSQL? atau setidaknya PHP-FPM + Nginx?


MEMPERBARUI

Saya sekarang telah menginstal Ubuntu Server 10.10 yang baru dan menjalankan perintah yang disarankan Peter dengan php5-suhosinmenambahkan. Setelah itu Nginx berfungsi dengan baik, maka saya edit file confiugration yang dihasilkan menjadi seperti di bawah ini. Setelah memuat ulang file konfigurasi baru, Nginx masih berfungsi dengan baik menggunakan index.htmlfile, tetapi ketika saya menambahkan index.phpfile itu berhenti berfungsi. Saya kira ini ada hubungannya dengan PHP-FPM, APC atau sesuatu yang berhubungan dengan PHP. Tetapi bisa juga file konfigurasi untuk PHP-FPM juga.

Ini adalah file konfigurasi untuk Nginx yang saya gunakan, sebagian besar dihasilkan secara default. Saya telah melewatkan komentar.

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
sumber
Tolong jadikan ini jawaban, lalu terima, dengan begitu kita bisa memilih keduanya sebagai solusi gabungan.
Jorge Castro
@ Jorge: Ini bukan jawaban, saya hanya menunjukkan file konfigurasi saya yang tidak berfungsi . Peter Smit memposting solusi yang benar dikombinasikan dengan komentar dan saya telah menerimanya sebagai jawaban.
Jonas
Ah, kesalahanku, ayolah!
Jorge Castro

Jawaban:

8

Mulai dari Ubuntu 10.10 ini sepele dengan paket php5-fpm baru

Paket-paket berikut melakukan semua yang Anda butuhkan

  • nginx - server web
  • php5-fpm - Server php Fast-CGI
  • php-apc - Paket APC untuk php
  • php5-pgsql - Modul PostgreSQL untuk PHP
  • postgresql - Server database PostgreSQL

Bersama sudo apt-get install nginx php5-fpm php-apc php5-pgsql postgresql

Saya juga menyarankan untuk memeriksa apakah apache2 diinstal. Jika demikian, hapus dengan a sudo apt-get remove apache2untuk menghindari apache dan nginx yang bersaing untuk port 80.

Perhatikan juga bahwa standar xdebug juga ingin menggunakan port 9000, seperti halnya php5-fpm. Jadi jika Anda menggunakan xdebug, ubah port itu misalnya menjadi 9001

Dan sebagai bonus contoh konfigurasi nginx (letakkan di / etc / nginx / sites-available dan symlink ke / 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;
  }
}
Peter Smit
sumber
Saya telah melakukan ini sekarang, dan saya membuat test.phpfile sederhana , tetapi tidak berhasil. Browser saya mengatakan "broken link" dan di log kesalahan Nginx hanya ada entri tentang "favicon.ico". Saya kira ada sesuatu dengan file konfigurasi saya, tetapi saya benar-benar tidak tahu dan cukup sulit untuk menemukan kesalahan.
Jonas
@Jonas Bisa jadi nginx dan php5-fpm belum dimulai. Dalam hal ini, sudo service nginx startdan sudo service php5-fpm startharus melakukan pekerjaan itu. Tentu saja, cari kesalahan yang mungkin mereka berikan.
Peter Smit
@Jonas Log kesalahan Anda tidak boleh berisi favicon.ico, setidaknya tidak jika Anda menyalin bagian empty_gif dari solusi saya. Juga, jangan lupa untuk memulai kembali selalu setelah perubahan sudo service nginx reload. Jika semuanya gagal, mungkin Anda bisa menambahkan file konfigurasi ke pertanyaan Anda.
Peter Smit
Saya telah memperbarui pertanyaan dengan file konfigurasi saya untuk Nginx, sepertinya ada yang salah dengan pengaturan PHP. Setelah menambahkan baris Anda tentang favicon ke file konfigurasi saya, saya tidak lagi mendapatkan kesalahan dalam log kesalahan Nginx. Nginx bekerja dengan .htmlfile tetapi tidak berfungsi untuk .phpfile.
Jonas
1
@Jonas Halaman yang membantu saya membuat file konfigurasi 'bersih' adalah wiki.nginx.org/Pitfalls , tapi jangan abaikan peringatan tentang menerapkan perubahan yang tidak Anda mengerti.
Peter Smit