GNU/Linux >> Belajar Linux >  >> Ubuntu

Menginstal Nginx Dengan PHP5 (Dan PHP-FPM) Dan Dukungan MySQL (LEMP) Di Ubuntu 13.04

Nginx (diucapkan "engine x") adalah server HTTP gratis, open-source, berkinerja tinggi. Nginx dikenal dengan stabilitasnya, rangkaian fitur yang kaya, konfigurasi sederhana, dan konsumsi sumber daya yang rendah. Tutorial ini menunjukkan bagaimana Anda dapat menginstal Nginx di server Ubuntu 13.04 dengan dukungan PHP5 (melalui PHP-FPM) dan dukungan MySQL (LEMP =L inux + nginx (diucapkan "e ngine x") + M ySQL + P HP) .

Saya tidak memberikan jaminan apa pun bahwa ini akan berhasil untuk Anda!

1 Catatan Awal

Dalam tutorial ini saya menggunakan hostname server1.example.com dengan alamat IP 192.168.0.100. Setelan ini mungkin berbeda untuk Anda, jadi Anda harus menggantinya jika perlu.

Saya menjalankan semua langkah dalam tutorial ini dengan hak akses root, jadi pastikan Anda masuk sebagai root:

sudo su

2 Menginstal MySQL 5

Untuk menginstal MySQL, kami menjalankan

apt-get install mysql-server mysql-client

Anda akan diminta untuk memberikan kata sandi untuk pengguna root MySQL - kata sandi ini berlaku untuk pengguna [dilindungi email] serta [dilindungi email], jadi kami tidak perlu menentukan kata sandi root MySQL secara manual nanti:

Kata sandi baru untuk pengguna "root" MySQL:<-- yourrootsqlpassword
Ulangi kata sandi untuk pengguna "root" MySQL:<-- yourrootsqlpassword

3 Menginstal Nginx

Nginx tersedia sebagai paket untuk Ubuntu 13.04 yang dapat kita instal sebagai berikut:

apt-get install nginx

Mulai nginx setelahnya:

/etc/init.d/nginx start

Ketik alamat IP atau nama host server web Anda ke dalam browser (mis. http://192.168.0.100), dan Anda akan melihat halaman berikut:

Akar dokumen nginx default di Ubuntu 13.04 adalah /usr/share/nginx/html.

4 Menginstal PHP5

Kita dapat membuat PHP5 bekerja di nginx melalui PHP-FPM (PHP-FPM (FastCGI Process Manager) adalah implementasi PHP FastCGI alternatif dengan beberapa fitur tambahan yang berguna untuk situs dari berbagai ukuran, terutama situs yang lebih sibuk) yang kami instal sebagai berikut:

apt-get install php5-fpm

PHP-FPM adalah proses daemon (dengan skrip init /etc/init.d/php5-fpm) yang menjalankan server FastCGI pada soket /var/run/php5-fpm.sock.

5 Konfigurasi nginx

Konfigurasi nginx ada di /etc/nginx/nginx.conf yang kita buka sekarang:

vi /etc/nginx/nginx.conf

Konfigurasinya mudah dipahami (Anda dapat mempelajarinya lebih lanjut di sini:http://wiki.nginx.org/NginxFullExample dan di sini:http://wiki.nginx.org/NginxFullExample2)

Pertama (ini opsional) sesuaikan jumlah proses pekerja dan setel keepalive_timeout ke nilai yang wajar:

[...]worker_processes 4;[...] keepalive_timeout 2;[...]

Host virtual didefinisikan dalam kontainer {} server. Vhost default didefinisikan dalam file /etc/nginx/sites-available/default - mari kita ubah sebagai berikut:

vi /etc/nginx/sites-available/default
[...]server { mendengarkan 80; dengarkan [::]:80 default_server ipv6only=on; root /usr/share/nginx/html; indeks index.php index.html index.htm; # Jadikan situs dapat diakses dari http://localhost/ server_name _; location / { # Upaya pertama untuk melayani permintaan sebagai file, kemudian # sebagai direktori, lalu kembali menampilkan 404. try_files $uri $uri/ /index.html; # Batalkan komentar untuk mengaktifkan naxsi di lokasi ini # include /etc/nginx/naxsi.rules } location /doc/ { alias /usr/share/doc/; indeks otomatis aktif; izinkan 127.0.0.1; izinkan ::1; menyangkal semua; } # Hanya untuk nginx-naxsi yang digunakan dengan nginx-naxsi-ui :proses ditolak permintaan #location /RequestDenied { # proxy_pass http://127.0.0.1:8080; #} #error_page 404 /404.html; # redirect halaman error server ke halaman statis /50x.html # error_page 500 502 503 504 /50x.html; lokasi =/50x.html { root /usr/share/nginx/html; } # meneruskan skrip PHP ke server FastCGI yang mendengarkan di 127.0.0.1:9000 # lokasi ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; # CATATAN:Anda harus memiliki "cgi.fix_pathinfo =0;" di php.ini # Dengan php5-cgi saja:#fastcgi_pass 127.0.0.1:9000; # Dengan php5-fpm:fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; termasuk fastcgi_params; } # menolak akses ke file .htaccess, jika root dokumen Apache # setuju dengan satu # lokasi nginx ~ /\.ht { tolak semua; }}[...]

Batalkan komentar pada kedua baris pendengar untuk membuat nginx mendengarkan pada port 80 IPv4 dan IPv6.

nama server _; menjadikannya vhost catchall default (tentu saja, Anda juga dapat menentukan nama host di sini seperti www.example.com).

Saya telah menambahkan index.php ke baris indeks. root /usr/share/nginx/html; berarti root dokumen adalah direktori /usr/share/nginx/html.

Bagian penting untuk PHP adalah lokasi ~ \.php$ {} bait. Batalkan komentar untuk mengaktifkannya. Harap perhatikan bahwa saya telah menambahkan baris try_files $uri =404; untuk mencegah eksploitasi zero-day (lihat http://wiki.nginx.org/Pitfalls#Passing_Uncontrolled_Requests_to_PHP dan http://forum.nginx.org/read.php?2,88845,page=3).

Sekarang simpan file dan muat ulang nginx:

/etc/init.d/nginx memuat ulang

Selanjutnya buka /etc/php5/fpm/php.ini...

vi /etc/php5/fpm/php.ini

... dan atur cgi.fix_pathinfo=0:

[...]; cgi.fix_pathinfo memberikan dukungan *real* PATH_INFO/PATH_TRANSLATED untuk CGI. PHP; perilaku sebelumnya adalah menyetel PATH_TRANSLATED ke SCRIPT_FILENAME, dan bukan grok; apa PATH_INFO itu. Untuk informasi lebih lanjut tentang PATH_INFO, lihat spesifikasi cgi. Pengaturan; ini ke 1 akan menyebabkan PHP CGI memperbaiki jalurnya agar sesuai dengan spesifikasi. Sebuah pengaturan; dari nol menyebabkan PHP berperilaku seperti sebelumnya. Standarnya adalah 1. Anda harus memperbaiki skrip Anda; untuk menggunakan SCRIPT_FILENAME daripada PATH_TRANSLATED.; http://php.net/cgi.fix-pathinfocgi.fix_pathinfo=0[...]

Muat ulang PHP-FPM:

/etc/init.d/php5-fpm memuat ulang

Sekarang buat file PHP berikut di root dokumen /usr/share/nginx/html:

vi /usr/share/nginx/html/info.php

Sekarang kita memanggil file itu di browser (mis. http://192.168.0.100/info.php):

Seperti yang Anda lihat, PHP5 bekerja, dan bekerja melalui FPM/FastCGI, seperti yang ditunjukkan pada baris Server API. Jika Anda menggulir lebih jauh ke bawah, Anda akan melihat semua modul yang sudah diaktifkan di PHP5. MySQL tidak terdaftar di sana yang berarti kami belum memiliki dukungan MySQL di PHP5.

6 Mendapatkan Dukungan MySQL Di PHP5

Untuk mendapatkan dukungan MySQL di PHP, kita dapat menginstal paket php5-mysql. Ini adalah ide yang baik untuk menginstal beberapa modul PHP5 lainnya serta Anda mungkin membutuhkannya untuk aplikasi Anda. Anda dapat mencari modul PHP5 yang tersedia seperti ini:

pencarian apt-cache php5

Pilih yang Anda butuhkan dan instal seperti ini:

apt-get install php5-mysql php5-curl php5-gd php5-intl php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-ming php5-ps php5-pspell php5-recode php5-snmp php5 -sqlite php5-rapi php5-xmlrpc php5-xsl

APC adalah cacher opcode PHP gratis dan terbuka untuk menyimpan dan mengoptimalkan kode perantara PHP. Ini mirip dengan cacher opcode PHP lainnya, seperti eAccelerator dan Xcache. Sangat disarankan untuk menginstal salah satu dari ini untuk mempercepat halaman PHP Anda.

APC dapat diinstal sebagai berikut:

apt-get install php-apc

Sekarang muat ulang PHP-FPM:

/etc/init.d/php5-fpm memuat ulang

Sekarang muat ulang http://192.168.0.100/info.php di browser Anda dan gulir ke bawah ke bagian modul lagi. Anda sekarang akan menemukan banyak modul baru di sana, termasuk modul MySQL:

7 Membuat PHP-FPM Menggunakan Koneksi TCP

Secara default PHP-FPM mendengarkan pada soket /var/run/php5-fpm.sock. Dimungkinkan juga untuk membuat PHP-FPM menggunakan koneksi TCP. Untuk melakukannya, buka /etc/php5/fpm/pool.d/www.conf...

vi /etc/php5/fpm/pool.d/www.conf

... dan buat garis dengar terlihat sebagai berikut:

[...];listen =/var/run/php5-fpm.socklisten =127.0.0.1:9000[...] 

Ini akan membuat PHP-FPM mendengarkan pada port 9000 pada IP 127.0.0.1 (localhost). Pastikan Anda menggunakan port yang tidak digunakan di sistem Anda.

Kemudian muat ulang PHP-FPM:

/etc/init.d/php5-fpm memuat ulang

Selanjutnya buka konfigurasi nginx Anda dan semua vhost Anda dan ubah baris fastcgi_pass unix:/var/run/php5-fpm.sock; ke fastcgi_pass 127.0.0.1:9000;, mis. seperti ini:

vi /etc/nginx/sites-available/default
[...] lokasi ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; # CATATAN:Anda harus memiliki "cgi.fix_pathinfo =0;" di php.ini # Dengan php5-cgi saja:fastcgi_pass 127.0.0.1:9000; # Dengan php5-fpm:#fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; termasuk fastcgi_params; }[...]

Akhirnya muat ulang nginx:

/etc/init.d/nginx memuat ulang

8 Skrip CGI/Perl

Jika Anda ingin menyajikan skrip CGI/Perl dengan nginx, silakan baca tutorial ini:Melayani Skrip CGI Dengan Nginx Di Debian Squeeze/Ubuntu 11.04

Cara yang disarankan adalah menggunakan fcgiwrap (bab 4).

  • nginx:http://nginx.net/
  • nginx Wiki:http://wiki.codemongers.com/Main
  • PHP:http://www.php.net/
  • PHP-FPM:http://php-fpm.org/
  • MySQL:http://www.mysql.com/
  • Ubuntu:http://www.ubuntu.com/

Tentang Penulis

Falko Timme adalah pemilik dari Timme Hosting (hosting web nginx ultra-cepat). Dia adalah pengelola utama HowtoForge (sejak 2005) dan salah satu pengembang inti ISPConfig (sejak 2000). Dia juga berkontribusi pada buku O'Reilly "Linux System Administration".


Ubuntu
  1. Menginstal Nginx Dengan PHP5 (Dan PHP-FPM) Dan Dukungan MySQL (LEMP) Di Ubuntu 14.04 LTS

  2. Cara Instal Nginx Dengan PHP5 Dan MySQL Di Ubuntu 11.10

  3. Instal Prosper202 dengan Nginx, MySQL dan PHP-FPM di Ubuntu

  1. Menginstal Apache2 Dengan PHP5 Dan Dukungan MySQL Di Ubuntu 14.04LTS (LAMP)

  2. Menginstal Lighttpd Dengan PHP5 (PHP-FPM) Dan Dukungan MySQL Di Ubuntu 14.04LTS

  3. Menginstal Apache2 Dengan PHP5 Dan Dukungan MySQL Pada OpenSUSE 13.1 (LAMP)

  1. Menginstal Nginx dengan PHP dan MariaDB (sebagai pengganti MySQL) - LEMP -di Ubuntu 15.10 (Wiley Werewolf)

  2. Cara Instal Nginx dengan PHP dan MySQL (LEMP Stack) di Ubuntu 18.04

  3. Menginstal Lighttpd Dengan PHP5 Dan Dukungan MySQL Di Ubuntu 10.04