Apa cara termudah untuk mengaktifkan PHP di nginx?

130

Apa cara termudah untuk mengaktifkan PHP di nginx di Ubuntu 12.04?

Solusi terbaik adalah yang meminta pekerjaan minimal, idealnya hanya instalasi paket :)

Sorin
sumber

Jawaban:

141

Metode berikut ini akan membantu Anda memulai dengan cepat di Ubuntu 12.04:

Instal ketergantungan:

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

Instal nginx:

sudo apt-get install nginx

Mulai nginx:

sudo service nginx start

Uji apakah itu berfungsi (seharusnya lihat "Selamat datang di nginx!")

sudo service nginx stop

Di konfigurasi situs nginx Anda (/ etc / nginx / sites-available / default), ubah baris di bagian server {}

index index.html index.htmuntuk index index.php index.html index.htm.

Batalkan komentar baris di bagian server {} yang dimulai dengan

listen untuk ipv4 / ipv6 keduanya.

Gulir ke bawah ke tempat dikatakan "location ~ .php {" dan hapus tanda komentar baris sehingga terlihat seperti ini:

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

Root web default Anda terletak di / usr / share / nginx / www (per file konfigurasi). (Lihatroot /usr/share/nginx/www;

(Catatan: Untuk Ubuntu 12.10 atau yang lebih baru, Anda harus mengganti fastcgi_pass 127.0.0.1:9000;baris dengan ini untuk membuatnya bekerja fastcgi_pass unix:/var/run/php5-fpm.sock;:)

papashou
sumber
1
Sebagai catatan tambahan, Anda dapat membuat 12,04 menggunakan soket UNIX seperti 12.10+ dengan mengedit /etc/php5/fpm/pool.d/www.confdan mengubah jalur mendengarkan listen = /var/run/php5-fpm.sock, lalu menggunakan baris @ThomasW. tersebut.
Powerlord
@Powerlord, pengaturan standar NGINX memiliki kedua baris dan menjelaskan perbedaan di antara keduanya, daripada harus mengubah cara PHP berjalan, Anda cukup mengubah baris konfigurasi di NGINX lebih cepat, dan semua berfungsi.
Thomas Ward
@ Thomas. Deskripsi pengaturan default NGINX untuk kedua baris juga salah dalam 12.04. php5-fpm memerlukan metode pertama karena cara php5-fpm dikonfigurasi dalam 12.04. Itu tidak berubah ke metode kedua sampai pukul 12.10. Agar php5-fpm berfungsi dengan nginx seperti yang didokumentasikan, Anda harus memodifikasi www.conf fpm seperti yang disebutkan dalam pesan saya sebelumnya.
Powerlord
@ Powerlord Anda benar itu masalah, yang bisa diperbaiki dengan mengubah dokumentasi di file konfigurasi default. Lihat bug ini yang saya buat pada masalah ini . Saya belum punya kesempatan untuk mengusulkan perbaikan bug.
Thomas Ward
1
Ini tidak berfungsi untuk saya di ubuntu 14.04. nginx mengatakan "Terjadi kesalahan, halaman yang Anda cari tidak ditemukan", apa yang harus dilakukan?
user3459110
46

EDIT: Seperti yang ditunjukkan oleh Matt Browne, Anda mungkin tertarik dengan posting yang lebih baru ini:
Cara Menginstal Linux, Nginx, MySQL, PHP (tumpukan LEMP) di Ubuntu 16.04


Jawaban papashou benar di Ubuntu 12.04 lama. Sejak Ubuntu 12.10, konfigurasinya sedikit berbeda. Inilah yang saya lakukan:

Pasang

sudo apt-get install nginx php5-fpm

Aktifkan PHP

Batalkan komentar pada baris berikut dalam file konfigurasi /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;
}

Mulai (atau mulai ulang)

sudo service php5-fpm restart
sudo service nginx restart

Uji nginx

Membuka tautan ini http://localhostakan menampilkan "Selamat datang di nginx!"

Uji php

Buat file php:

  • Jalur target adalah output dari

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

    misalnya /usr/share/nginx/www

  • Tulis info.phpfile dengan:

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

    atau sebagai one-liner

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

Pembukaan http://localhost/info.phpharus menampilkan halaman informasi PHP.

olibre
sumber
3
Terima kasih untuk ini. Berikut tautan bermanfaat lainnya: digitalocean.com/community/tutorials/… . Dan perhatikan bahwa jika Anda ingin menginstal MySQL, Anda juga harus menjalankan apt-get install php5-mysql(selain menginstal MySQL itu sendiri).
Matt Browne
1
Ada versi baru dari artikel di atas untuk Ubuntu 16: digitalocean.com/community/tutorials/…
Matt Browne