Làm cách nào để thiết lập PHP với Nginx, APC và PostgreSQL?


9

Tôi sử dụng Ubuntu Server 10.10 và tôi muốn thiết lập môi trường máy chủ web với NginX , PHP 5.3.3, PostgreQuery và tốt nhất là APC và PHP Suhosin.

Tôi đã thiết lập PostgreSQL với apt-get install postgresqlvà Nginx với apt-get install nginx.

Nhưng làm thế nào để tôi thiết lập PHP cho những thứ này? Tôi có thể làm điều này bằng cách sử dụng apt-get installhoặc tôi phải tải xuống các nguồn và biên dịch nó? Tôi muốn làm điều đó bằng cách sử dụng apt-get.

Tôi muốn sử dụng PHP-FPM cho Nginx. Hầu hết các hướng dẫn tôi tìm thấy trên Internet đều cũ và biên dịch PHP, nhưng điều này không được khuyến nghị cho các máy chủ sản xuất.

Làm cách nào để tôi dễ dàng thiết lập PHP nhất với Nginx, APC và PostgreSQL? hoặc ít nhất là PHP-FPM + Nginx?


CẬP NHẬT

Bây giờ tôi đã cài đặt một tươi Ubuntu Server 10.10 và thực hiện lệnh Peter gợi ý với php5-suhosinthêm. Sau đó Nginx hoạt động tốt, sau đó tôi chỉnh sửa tệp xác nhận đã tạo như dưới đây. Sau khi tải lại tệp cấu hình mới, Nginx vẫn hoạt động tốt khi sử dụng index.htmltệp, nhưng khi tôi thêm index.phptệp thì nó dừng hoạt động. Tôi đoán rằng điều này có liên quan đến PHP-FPM, APC hoặc một cái gì đó liên quan đến PHP. Nhưng nó cũng có thể là tệp cấu hình cho PHP-FPM.

Đây là tệp cấu hình cho Nginx mà tôi đang sử dụng, hầu hết được tạo theo mặc định. Tôi đã bỏ qua ý kiến.

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;
    }

}

Vui lòng đặt câu trả lời này và sau đó chấp nhận nó, theo cách đó chúng ta có thể bỏ phiếu cho cả hai cùng nhau làm giải pháp kết hợp.
Jorge Castro

@Jorge: Đây không phải là câu trả lời, tôi chỉ hiển thị tệp cấu hình của mình không hoạt động . Peter Smit đã đăng giải pháp chính xác kết hợp với ý kiến ​​và tôi đã chấp nhận nó như một câu trả lời.
Jonas

Ah sai lầm của tôi, đá trên!
Jorge Castro

Câu trả lời:


8

Bắt đầu từ Ubuntu 10.10, đây là chuyện nhỏ với gói php5-fpm mới

Các gói sau đây làm mọi thứ bạn cần

  • nginx - máy chủ web
  • php5-fpm - Máy chủ php nhanh CGI
  • php-apc - Gói APC cho php
  • php5-pgsql - Mô-đun PostgreSQL cho PHP
  • postgresql - Máy chủ cơ sở dữ liệu PostgreSQL

Tất cả cùng nhau sudo apt-get install nginx php5-fpm php-apc php5-pgsql postgresql

Ngoài ra tôi đề nghị kiểm tra xem apache2 đã được cài đặt chưa. Nếu vậy, hãy xóa nó bằng một sudo apt-get remove apache2để tránh apache và nginx cạnh tranh cho cổng 80.

Cũng lưu ý rằng tiêu chuẩn xdebug cũng muốn sử dụng cổng 9000, giống như php5-fpm. Vì vậy, nếu bạn sử dụng xdebug, hãy thay đổi cổng đó thành 9001

Và như phần thưởng cho một cấu hình nginx ví dụ (đặt nó vào / etc / nginx / site-Available và symlink nó vào / etc / nginx / site-enable)

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;
  }
}

Tôi đã làm điều này bây giờ và tôi đã tạo một test.phptệp đơn giản , nhưng nó không hoạt động. Trình duyệt của tôi nói "liên kết bị hỏng" và trong nhật ký lỗi Nginx chỉ có một mục về "favicon.ico". Tôi đoán có một cái gì đó với tập tin cấu hình của tôi, nhưng tôi thực sự không biết và thật khó để tìm ra lỗi.
Jonas

@Jonas Có thể là nginx và php5-fpm chưa được bắt đầu. Trong trường hợp đó, sudo service nginx startsudo service php5-fpm startnên làm công việc. Dĩ nhiên, xem ra bất kỳ lỗi nào họ có thể đưa ra.
Peter Smit

@Jonas Nhật ký lỗi của bạn không được chứa favicon.ico, ít nhất là không nếu bạn đã sao chép phần blank_gif từ giải pháp của tôi. Ngoài ra, đừng quên khởi động lại luôn sau khi thay đổi ( sudo service nginx reload). Nếu vẫn thất bại, có lẽ bạn có thể thêm tệp cấu hình vào câu hỏi của mình.
Peter Smit

Tôi đã cập nhật câu hỏi với tệp cấu hình của mình cho Nginx, dường như có lỗi gì đó với thiết lập PHP. Sau khi thêm các dòng của bạn về favicon vào tệp cấu hình của tôi, tôi không còn gặp bất kỳ lỗi nào trong nhật ký lỗi Nginx. Nginx hoạt động với .htmlcác tệp nhưng nó không hoạt động đối với .phpcác tệp.
Jonas

1
@Jonas Một trang giúp tôi tạo các tệp cấu hình 'sạch' là wiki.nginx.org/Pit thác , nhưng đừng bỏ qua cảnh báo về việc thực hiện các thay đổi mà bạn không hiểu.
Peter Smit
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.