GNU/Linux >> Belajar Linux >  >> Debian

Instal dan konfigurasi Apache dan php dengan mod fastcgi di Ubuntu/Debian

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


Debian
  1. Instal dan Konfigurasi PHP OPcache di Ubuntu 20.04

  2. Instal dan Konfigurasi Apache Spark di Ubuntu 20.04

  3. Instal dan konfigurasikan Apache dan PHP dengan cgi di Ubuntu atau Debian

  1. Cara Menginstal dan Mengonfigurasi Nextcloud dengan Apache di Ubuntu 18.04

  2. Cara Menginstal dan Mengkonfigurasi ownCloud dengan Apache di Ubuntu 18.04

  3. Setup Apache dan Php dengan mod_fcgid di Ubuntu/Debian

  1. Cara Instal Drupal 8 dengan Apache, MySQL dan SSL di Ubuntu 15.10

  2. Cara Menginstal dan Mengkonfigurasi Drupal dengan Apache di Debian 9

  3. Cara Menginstal dan Mengonfigurasi Modul mod_pagespeed dengan Apache di Ubuntu 18.04 LTS