วิธีการตั้งค่า 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


UPDATE

ตอนนี้ฉันติดตั้ง Ubuntu Server ใหม่แล้ว 10.10 และดำเนินการตามคำสั่งที่Peter แนะนำพร้อมphp5-suhosinเพิ่มไว้ หลังจากนั้น Nginx ก็ใช้งานได้ดีฉันจะแก้ไขไฟล์ confiugration ที่สร้างขึ้นเพื่อเป็นด้านล่าง หลังจากโหลดไฟล์ปรับแต่งใหม่แล้ว 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 Castro

@Jorge: นี่ไม่ใช่คำตอบฉันแค่แสดงแฟ้มการกำหนดค่าของฉันที่ไม่ได้ทำงาน Peter Smit โพสต์คำตอบที่ถูกต้องรวมกับความคิดเห็นและฉันยอมรับว่ามันเป็นคำตอบ
Jonas

ความผิดพลาดของฉัน
Jorge Castro

คำตอบ:


8

เริ่มต้นจาก Ubuntu 10.10 นี่เป็นเรื่องเล็กน้อยกับแพ็คเกจ php5-fpm ใหม่

แพ็คเกจต่อไปนี้ทำทุกสิ่งที่คุณต้องการ

  • nginx - เว็บเซิร์ฟเวอร์
  • php5-fpm - เซิร์ฟเวอร์ php Fast-CGI
  • 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

@ Jonas อาจเป็นไปได้ว่า nginx และ php5-fpm ยังไม่ได้เริ่ม ในกรณีนั้นsudo service nginx startและsudo service php5-fpm startควรทำผลงาน นอกหลักสูตรให้ระวังข้อผิดพลาดที่อาจเกิดขึ้น
Peter Smit

@Jonas บันทึกข้อผิดพลาดของคุณไม่ควรมี favicon.ico อย่างน้อยไม่ใช่ถ้าคุณคัดลอกส่วน empty_gif จากโซลูชันของฉัน นอกจากนี้อย่าลืมรีสตาร์ททุกครั้งหลังจากการเปลี่ยนแปลง ( sudo service nginx reload) หากสิ่งอื่นล้มเหลวคุณอาจเพิ่มไฟล์กำหนดค่าของคุณลงในคำถามของคุณ
Peter Smit

ฉันได้อัปเดตคำถามด้วยไฟล์การกำหนดค่าของฉันสำหรับ Nginx ดูเหมือนว่ามีบางอย่างผิดปกติกับการตั้งค่า PHP หลังจากเพิ่มบรรทัดของคุณเกี่ยวกับ favicon ลงในไฟล์กำหนดค่าของฉันฉันจะไม่ได้รับข้อผิดพลาดในบันทึกข้อผิดพลาดของ Nginx อีกต่อไป Nginx ทำงานได้กับ.htmlไฟล์ แต่มันไม่ทำงานสำหรับ.phpไฟล์
Jonas

1
@Jonas หน้าเว็บที่ช่วยให้ฉันสร้างไฟล์กำหนดค่า 'สะอาด' คือwiki.nginx.org/Pitfallsแต่อย่าเพิกเฉยต่อคำเตือนเกี่ยวกับการใช้การเปลี่ยนแปลงที่คุณไม่เข้าใจ
Peter Smit
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.