วิธีที่ง่ายที่สุดในการเปิดใช้งาน PHP บน nginx คืออะไร?


130

วิธีที่ง่ายที่สุดในการเปิดใช้งาน PHP บน nginx บน Ubuntu 12.04 คืออะไร?

ทางออกที่ดีที่สุดคือสิ่งที่ขอให้มีการใช้งานน้อยที่สุดเพียงแค่ติดตั้งแพ็คเกจ :)

คำตอบ:


141

วิธีการต่อไปนี้จะทำให้คุณเริ่มต้นอย่างรวดเร็วบน Ubuntu 12.04:

ติดตั้งการพึ่งพา:

sudo apt-get install php5-common php5-cli php5-fpm

ติดตั้ง nginx:

sudo apt-get install nginx

เริ่ม nginx:

sudo service nginx start

ทดสอบว่าใช้งานได้ (ควรดู "ยินดีต้อนรับสู่ nginx!")

sudo service nginx stop

ในการกำหนดค่าไซต์ nginx ของคุณ (/ etc / nginx / sites-available / default) ให้แก้ไขบรรทัดในส่วนเซิร์ฟเวอร์ {}

index index.html index.htmindex index.php index.html index.htmไปยัง

ยกเลิกหมายเหตุบรรทัดในส่วนเซิร์ฟเวอร์ {} ที่ขึ้นต้นด้วย

listen สำหรับ ipv4 / ipv6 ทั้งคู่

เลื่อนลงไปที่ตำแหน่งที่ระบุว่า "location ~ .php {" และไม่ใส่เครื่องหมายบรรทัดดังนั้นจึงมีลักษณะดังนี้:

location ~ \.php$ {
  fastcgi_split_path_info ^(.+\.php)(/.+)$;
  fastcgi_pass 127.0.0.1:9000;
  fastcgi_index index.php;
  include fastcgi_params;
}

sudo service php5-fpm restart sudo service nginx restart

เว็บรูทเริ่มต้นของคุณอยู่ที่ / usr / share / nginx / www (ต่อไฟล์ปรับแต่ง) (ดูroot /usr/share/nginx/www;

(หมายเหตุ: สำหรับ Ubuntu 12.10 หรือใหม่กว่าคุณจะต้องเปลี่ยนfastcgi_pass 127.0.0.1:9000;บรรทัดที่มีนี้จะทำให้การทำงาน: fastcgi_pass unix:/var/run/php5-fpm.sock;)


1
ในฐานะที่เป็นหมายเหตุท้าย ๆ คุณสามารถทำให้ 12.04 ใช้ซ็อกเก็ต UNIX อย่างเช่น 12.10+ โดยการแก้ไข/etc/php5/fpm/pool.d/www.confและเปลี่ยนฟังบรรทัดเป็นlisten = /var/run/php5-fpm.sockจากนั้นใช้บรรทัด @ThomasW กล่าวถึง
Powerlord

@Powerlord การตั้งค่าเริ่มต้นของ NGINX มีทั้งสองบรรทัดและอธิบายความแตกต่างระหว่างทั้งสองแทนที่จะต้องเปลี่ยนวิธีที่ PHP รันคุณสามารถเปลี่ยนบรรทัดการกำหนดค่าใน NGINX ได้เร็วขึ้นและทำงานได้ทั้งหมด
โธมัสวอร์ด

@ThomasW คำอธิบายการตั้งค่าเริ่มต้นของ NGINX ของทั้งสองบรรทัดนั้นผิดเช่นกันใน 12.04 php5-fpm ต้องการวิธีแรกเนื่องจากวิธีกำหนดค่า php5-fpm ใน 12.04 มันไม่เปลี่ยนเป็นวิธีที่สองจนกระทั่ง 12.10 ในการทำให้ php5-fpm ทำงานร่วมกับ nginx ตามที่ระบุไว้ในเอกสารคุณต้องแก้ไข www.conf ของ fpm ตามที่กล่าวไว้ในข้อความก่อนหน้าของฉัน
Powerlord

@ Powerlord คุณพูดถูกมันเป็นปัญหาหนึ่งที่สามารถแก้ไขได้โดยการเปลี่ยนเอกสารในไฟล์ปรับแต่งเริ่มต้น ดูข้อบกพร่องนี้ที่ฉันสร้างขึ้นในปัญหานี้ ฉันยังไม่ได้มีโอกาสเสนอข้อผิดพลาด
โธมัสวอร์ด

1
มันไม่ทำงานสำหรับฉันบน Ubuntu 14.04 nginx พูดว่า "เกิดข้อผิดพลาดหน้าเว็บที่คุณกำลังหาไม่พบ" จะทำอย่างไร?
user3459110

46

แก้ไข:ตามที่ชี้แจงโดยMatt Browneคุณอาจสนใจโพสต์ล่าสุดนี้:
วิธีการติดตั้ง Linux, Nginx, MySQL, PHP (LEMP stack) ใน Ubuntu 16.04


คำตอบ papashou ของถูกต้องเก่า Ubuntu 12.04 ตั้งแต่ Ubuntu 12.10 การกำหนดค่าจะแตกต่างกันเล็กน้อย นี่คือสิ่งที่ฉันทำ:

ติดตั้ง

sudo apt-get install nginx php5-fpm

เปิดใช้งาน PHP

ยกเลิกหมายเหตุบรรทัดต่อไปนี้ในไฟล์กำหนดค่า /etc/nginx/sites-available/default

location ~ \.php$ {
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini

#   # With php5-cgi alone:
#   fastcgi_pass 127.0.0.1:9000;
    # With php5-fpm:
    fastcgi_pass unix:/var/run/php5-fpm.sock;
    fastcgi_index index.php;
    include fastcgi_params;
}

เริ่ม (หรือรีสตาร์ท)

sudo service php5-fpm restart
sudo service nginx restart

ทดสอบ nginx

การเปิดลิงค์นี้http://localhostควรแสดง"ยินดีต้อนรับสู่ nginx!"

ทดสอบ php

สร้างไฟล์ php:

  • เส้นทางเป้าหมายคือผลลัพธ์ของ

    awk -F' |;' '/^[^#]*root/ {print $2}' /etc/nginx/sites-available/default
    

    เช่น /usr/share/nginx/www

  • เขียนinfo.phpไฟล์ด้วย:

    echo '<?php phpinfo(); ?>' | \
        sudo tee /usr/share/nginx/www/info.php
    

    หรือเป็นหนึ่งซับ

    echo '<?php phpinfo(); ?>' | \
        sudo tee "$(awk -F' |;' '/^[^#]*root/ {print $2}' /etc/nginx/sites-available/default)/info.php"
    

การเปิดhttp://localhost/info.phpควรแสดงหน้าข้อมูล PHP


3
ขอบคุณสำหรับสิ่งนี้. นี่เป็นอีกหนึ่งการเชื่อมโยงที่เป็นประโยชน์: digitalocean.com/community/tutorials/... และโปรดทราบว่าหากคุณต้องการติดตั้ง MySQL คุณจะต้องเรียกใช้apt-get install php5-mysql(นอกเหนือจากการติดตั้ง MySQL เอง)
Matt Browne

1
มีเวอร์ชั่นใหม่ของบทความด้านบนสำหรับ Ubuntu 16: digitalocean.com/community/tutorials/…
Matt Browne
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.