GNU/Linux >> Belajar Linux >  >> Debian

Setup Apache dan Php dengan mod_fcgid di Ubuntu/Debian

Mod Fcgid

Mod Fcgid adalah modul apache yang memungkinkannya untuk berbicara dengan aplikasi berkemampuan fastcgi. Ini dapat digunakan untuk mengatur dengan Apache untuk menjalankan php melalui fastcgi. Ini adalah alternatif dari mod_fastcgi lama dan memiliki beberapa perbedaan dengannya.
Dalam posting ini kita akan mengatur apache dengan php menggunakan modul ini. Anda juga dapat mengatur apache + php dengan mod_fastcgi.

Karena fastcgi menjauhkan eksekusi php dari apache, kita bebas menggunakan mpm berbasis thread seperti mpm worker.

Instal

Untuk setup kita membutuhkan apache, php (dengan cgi binary), mod_fcgid, mpm worker. Instal langsung dari commandline.

# sudo apt-get install apache2 libapache2-mod-fcgid apache2-mpm-worker php5 php5-cgi

Aktifkan mod_fcgid

# sudo a2enmod fcgid

Menemukan file konfigurasi

Setelah menginstal paket-paket yang diperlukan, saatnya untuk mengkonfigurasi mod_fcgid. Konfigurasi sebagian besar dilakukan melalui berbagai file konfigurasi. Oleh karena itu penting untuk mengetahui di mana file konfigurasi berada.

File konfigurasi apache di ubuntu/debian terletak di jalur berikut

/etc/apache2/sites-available/default

Untuk mengetahui lokasi file konfigurasi apache untuk distro Anda, gunakan perintah apache2/httpd/apachectl.

# apachectl -S
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:80                   is a NameVirtualHost
         default server 127.0.1.1 (/etc/apache2/sites-enabled/000-default:1)
         port 80 namevhost 127.0.1.1 (/etc/apache2/sites-enabled/000-default:1)
Syntax OK

Jadi file konfigurasinya ada di /etc/apache2/sites-enabled/000-default .

Konfigurasikan Fcgid

Apache perlu dikonfigurasi untuk menggunakan mod_fcgid untuk memproses semua file ".php" dan mod_fcgid perlu diberi tahu lokasi biner php fastcgi, yaitu php-cgi terletak di

/usr/bin/php-cgi

Tambahkan konfigurasi berikut ke bagian direktori root di blok vhost

<Ifmodule mod_fcgid.c>
	# FCGID registers a handler named fcgid-script
	AddHandler fcgid-script .php
	Options +ExecCGI
	FcgidWrapper /usr/local/bin/php-fcgid-wrapper
</IfModule>

Ini memberitahu Apache untuk menggunakan skrip pembungkus untuk meluncurkan proses fastcgi php-cgi. Ini juga memberitahu apache untuk menjalankan file .php menggunakan fcgid handler.

Untuk mengontrol pengaturan fcgid seperti jumlah proses maksimum, tambahkan pengaturan yang relevan di luar blok vhost.

<Ifmodule mod_fcgid.c>
	# Context - server config
	FcgidMaxProcesses 150
	# Otherwise php output shall be buffered
	FcgidOutputBufferSize 0
</IfModule>

Pengaturan ini berlaku untuk konteks server dan karenanya harus berada di luar blok Vhost mana pun.

Skrip pembungkus

Sekarang skrip pembungkus yang digunakan oleh mod_fcgid untuk meluncurkan proses php-cgi.

#!/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

# Replace with the path to your FastCGI-enabled PHP executable
exec /usr/bin/php-cgi

Kami menyimpan skrip wrapper di /usr/local/bin/php-fcgid-wrapper tetapi dapat disimpan di mana saja dan jalurnya harus disebutkan dalam konfigurasi apache.

Jadikan skrip pembungkus dapat dieksekusi menggunakan chmod

/usr/local/bin# chmod +x php-fcgid-wrapper

Jika tidak, Anda mendapatkan kesalahan di log apache Anda seperti ini

[Tue Jun 11 02:53:20 2013] [warn] [client 127.0.0.1] (104)Connection reset by peer: mod_fcgid: error reading data from FastCGI server
[Tue Jun 11 02:53:20 2013] [error] [client 127.0.0.1] Premature end of script headers: server.php

Pastikan juga untuk tidak menggunakan setelan "PHP_FCGI_CHILDREN". Biner php-cgi dapat membayar beberapa proses anak dan mengelolanya, tetapi fcgid tidak akan meneruskan lebih dari satu permintaan ke biner php-cgi pada satu waktu, oleh karena itu proses anak tidak akan digunakan. Ini dijelaskan dalam dokumentasi

PHP child process management (PHP_FCGI_CHILDREN) should always be disabled with mod_fcgid, which will only route one request at a time to application processes it has spawned; thus, any child processes created by PHP will not be used effectively. (Additionally, the PHP child processes may not be terminated properly.) By default, and with the environment variable setting PHP_FCGI_CHILDREN=0, PHP child process management is disabled.

The popular APC opcode cache for PHP cannot share a cache between PHP FastCGI processes unless PHP manages the child processes. Thus, the effectiveness of the cache is limited with mod_fcgid; concurrent PHP requests will use different opcode caches.

Anda juga tidak dapat menggunakan APC dengan fcgid.

Referensi

http://httpd.Apache.org/mod_fcgid/mod/mod_fcgid.html
Debian
  1. Instal dan konfigurasikan Apache dan PHP dengan cgi di Ubuntu atau Debian

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

  3. Cara Mengatur Apache, PHP &MongoDB di Ubuntu 20.04

  1. Percepat Apache dengan mod_pagespeed dan Memcached di Debian 8

  2. Cara Setup IP Failover dengan KeepAlived di Ubuntu &Debian

  3. Cara Setup Opencart dengan LAMP (PHP, Apache, Mariadb) di Ubuntu 20.04

  1. Cara Menginstal Laravel di Ubuntu 18.04 dengan Apache

  2. Cara Setup Opencart dengan LAMP (PHP, Apache, Mariadb) di Debian 11

  3. Setup Apache 2.4 dan Php FPM dengan mod proxy fcgi di Ubuntu 13.10