Penangan php berbasis Fastcgi
Mod_fastcgi adalah modul apache yang memungkinkan apache untuk berbicara dengan aplikasi yang mendukung fastcgi. Ini dapat digunakan untuk menjalankan kode php melalui fastcgi melalui biner php-cgi yang diaktifkan fastcgi.
Fastcgi memiliki banyak peningkatan dibandingkan model cgi tradisional dalam mengeksekusi program eksternal di dalam server web. Dengan fastcgi beberapa proses tetap hidup dan setiap proses digunakan kembali untuk melayani beberapa permintaan satu demi satu. Ada pengaturan untuk mengontrol jumlah maksimum permintaan yang dapat dilayani suatu proses, setelah itu proses dihentikan dan yang baru dimulai.
Instal paket
Hal pertama yang harus dilakukan adalah menginstal paket-paket yang diperlukan dari sinaptik. Kita perlu menginstal server apache, mod_fastcgi, mpm worker dan php bersama dengan biner cgi. Perhatikan bahwa jika Anda sudah menginstal php dengan mpm prefork dan mod-php maka php akan dihapus setelah menginstal paket-paket ini
$ sudo apt-get install apache2 libapache2-mod-fastcgi apache2-mpm-worker php5 php5-cgi
Di ubuntu file konfigurasi apache terletak di
/etc/apache2/sites-enabled/000-default
Biner php cgi terletak di /usr/bin/php-cgi.
Konfigurasikan fastcgi
Setelah menginstal paket, saatnya untuk mengkonfigurasi apache menggunakan mod_fastcgi untuk menjalankan skrip php. Seperti cgi, fastcgi juga akan menjalankan proses php menggunakan biner php-cgi.
Pertama aktifkan modul fastcgi dengan perintah a2enmod
$ sudo a2enmod fastcgi
Perintah a2enmod menyalin file konfigurasi modul dari /etc/Apache2/mods-available ke direktori /etc/Apache2/mods-enabled . File konfigurasi dalam hal ini adalah fastcgi.conf. Ini terlihat seperti ini
<IfModule mod_fastcgi.c> AddHandler fastcgi-script .fcgi FastCgiIpcDir /var/lib/apache2/fastcgi </IfModule>
Mod_fastcgi mendaftarkan handler yang disebut fastcgi-script dengan apache. Ini dapat digunakan untuk menentukan program mana yang akan dijalankan melalui mod_fastcgi.
Oke, mari kita lanjutkan. Hal berikutnya adalah mengkonfigurasi vhost yang relevan untuk menjalankan php menggunakan handler fastcgi. Letakkan konfigurasi berikut di dalam blok vhost yang diinginkan di file konfigurasi apache.
<Ifmodule mod_fastcgi.c> FastCgiServer /usr/local/bin/php-fastcgi-wrapper -processes 10 -restart-delay 1 -init-start-delay 1 -pass-header HTTP_AUTHORIZATION Alias /binary /usr/local/bin <Location /binary/php-fastcgi-wrapper> Options ExecCGI SetHandler fastcgi-script </Location> AddHandler php-fastcgi .php Action php-fastcgi /binary/php-fastcgi-wrapper </IfModule>
FastCgiServer mendaftarkan /usr/local/bin/php-fastcgi-wrapper sebagai aplikasi fastcgi dengan berbagai pilihan.
Perhatikan bahwa ini adalah skrip shell yang akan meluncurkan biner php-cgi dengan berbagai pengaturan. Perhatikan bahwa kami meminta FastCgiServer untuk membuat dan mengelola 10 proses.
Baris AddHandler mendeklarasikan handler baru untuk file ".php" yang disebut php-fastcgi. Ini dapat dinamai apa pun yang Anda suka.
Baris Action memberitahu apache untuk menangani file php-fastcgi menggunakan program cgi /cgi-bin/php-fastcgi-wrapper.
Sekarang lokasi /cgi-bin/php-fastcgi-wrapper bukan yang asli. Untuk membuatnya menunjuk ke lokasi sebenarnya dari skrip pembungkus, arahan Alias digunakan. Ini menunjuk /cgi-bin ke /usr/local/bin.
Skrip pembungkus
Kini hadir script wrapper yang akan digunakan fastcgi untuk menjalankan php.
#!/bin/sh # Set desired PHP_FCGI_* environment variables. # Example: # PHP FastCGI processes exit after 500 requests by default. PHP_FCGI_MAX_REQUESTS=10000 export PHP_FCGI_MAX_REQUESTS PHP_FCGI_CHILDREN=5 export PHP_FCGI_CHILDREN # Replace with the path to your FastCGI-enabled PHP executable exec /usr/bin/php-cgi
Perhatikan pengaturan PHP_FCGI_CHILDREN. Ini menetapkan bahwa setiap proses php harus lebih jauh lagi dan mengelola 5 proses php anak lainnya. Jadi tadi fastcgi disuruh buat 10 proses. Totalnya adalah 10*5 =50 proses. Ada 2 tingkat manajemen proses yang terjadi. Mod_fastcgi mengelola 10 proses php dan setiap proses php selanjutnya mengelola masing-masing 5 proses.
File ini disimpan di jalur berikut
/usr/local/bin/php-fastcgi-wrapper
Pastikan file tersebut dapat dieksekusi. Lakukan chmod di atasnya
/usr/local/bin# chmod +x php-fastcgi-wrapper
Lokasi file tidak masalah. Skrip wrapper diperlukan agar berbagai opsi seperti PHP_FCGI_MAX_REQUESTS dapat diteruskan ke proses php.
Sekarang restart Apache dan uji pengaturan dengan membuka skrip php di browser. Lihat konten variabel $_SERVER di php. Itu harus berisi [FCGI_ROLE] => RESPONDER . Ini menunjukkan bahwa fastcgi sedang beraksi.
Periksa juga tabel proses menggunakan htop atau System Monitor. Anda akan melihat 50 proses php-cgi berjalan.
Sumber daya
http://www.fastcgi.com/drupal/node/25
http://www.opensource.apple.com/source/Apache_mod_php/Apache_mod_php-12/php/sapi/cgi/README.FastCGI