GNU/Linux >> Belajar Linux >  >> Ubuntu

Mengkonfigurasi Apache 2.4 Dengan Fastcgi Di Ubuntu 16.04 – Apa Yang Saya Lakukan Dengan Php7.0-fpm.conf?

Saya telah berhasil membuat FastCGI bekerja dengan Apache 2.4 di Ubuntu 16.04 dengan mengadaptasi instruksi dari utas askubuntu ini, dokumen HowtoForge ini, dan tutorial Digital Ocean ini.

Semua sumber tersebut mengatakan untuk membuat /etc/apache2/conf-available/php7.0-fpm.conf dan memberitahu Anda apa yang harus dimasukkan ke dalamnya. Tapi setelah menginstal php-fpm , saya sudah memiliki file tersebut, dengan isi sebagai berikut:

# Redirect to local php-fpm if mod_php is not available
<IfModule !mod_php7.c>
    # Enable http authorization headers
    SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=$1

    <FilesMatch ".+\.ph(p[3457]?|t|tml)$">
    SetHandler "proxy:unix:/run/php/php7.0-fpm.sock|fcgi://localhost"
    </FilesMatch>
    <FilesMatch ".+\.phps$">
        # Deny access to raw php sources by default
        # To re-enable it's recommended to enable access to the files
        # only in specific virtual host or directory
        Require all denied
    </FilesMatch>
    # Deny access to files without filename (e.g. '.php')
    <FilesMatch "^\.ph(p[3457]?|t|tml|ps)$">
        Require all denied
    </FilesMatch>
</IfModule>

Jadi saya malah membuat conf saya sendiri dan memasukkan kode dari instruksi di dalamnya dan mengaktifkannya.

Apa yang ada php7.0-fpm.conf untuk? Jika saya mengaktifkannya selain conf saya, situs web saya berhenti berfungsi. Saya khawatir saya tidak melakukan ini seperti yang seharusnya dilakukan dan dapat menimbulkan masalah di masa depan. Sangat sulit untuk menemukan dokumentasi terkini yang bagus tentang ini.

Untuk referensi, inilah seluruh prosedur saya:

sudo apt install libapache2-mod-fastcgi php-fpm
sudo a2dismod php7.0 mpm_prefork
sudo a2enmod actions fastcgi alias mpm_worker
sudoedit /etc/apache2/conf-available/custom-fpm.conf

Isi /etc/apache2/conf-available/custom-fpm.conf :

<IfModule mod_fastcgi.c>
    AddHandler php7-fcgi .php
    Action php7-fcgi /php7-fcgi virtual
    Alias /php7-fcgi /usr/lib/cgi-bin/php7-fcgi
    FastCgiExternalServer /usr/lib/cgi-bin/php7-fcgi -socket /var/run/php/php7.0-fpm.sock -pass-header
    <Directory /usr/lib/cgi-bin>
            Require all granted
    </Directory>
</IfModule>

Perintah dilanjutkan:

sudo a2enconf custom-fpm
sudo systemctl restart apache2 && sudo systemctl restart php7.0-fpm

Terima kasih sebelumnya atas bantuan Anda.

Jawaban yang Diterima:

Saya memukul kebingungan yang sama, saya merasakan sakit Anda. Setelah banyak membaca, menjadi jelas bagi saya bahwa sebagian besar artikel sudah ketinggalan zaman dan mengacu pada metode sebelumnya (atau terkadang kombinasi).

Menggunakan PHP-FPM dengan konfigurasi bawaan Ubuntu 16.04, Anda hanya perlu melakukan ini:

sudo a2enconf php7.0-fpm
sudo a2enmod proxy proxy_fcgi

Saya melakukan sebagian besar dari apa yang Anda lakukan, lalu menghapus semuanya, ketika konfigurasi khusus itu tidak masuk akal.

Untuk apa php7.0-fpm.conf yang ada?

Konfigurasi yang Anda temukan diinstal oleh paket adalah untuk menggunakan mod_proxy_fcgi. Ini mengikat file .php melalui mod_proxy_fcgi ke PHP FPM, menggunakan mod_proxy, melalui Unix Domain Socket. Sejauh yang saya tahu ini adalah "resep" paling mutakhir (dari enam yang sekarang tersedia!)

Anda tidak perlu menginstal libapache2-mod-fastcgi itu metode yang berbeda dan lebih tua. Anda tidak perlu menulis konfigurasi itu – itu untuk menggunakan mod_fastcgi secara langsung. Anda tidak perlu menginstal actions fastcgi alias sebagaimana mereka mengkonfigurasi mod_fastcgi.

Terkait:Bagaimana cara mematikan semua proses selain dari yang spesifik?

Saya merasa aneh bahwa tidak ada artikel – bahkan untuk Ubuntu 16 – yang menyebutkan resep baru sudah siap untuk Anda!

Komentar ini menjelaskan sejarah bagi saya:

Metode yang disukai sekarang adalah fastcgi, menggunakan salah satu resep tersebut:

(mod_fastcgi, httpd 2.2) http://wiki.Apache.org/httpd/php-fastcgi

(mod_fcgid, httpd 2.2) http://wiki.Apache.org/httpd/php-fcgid

(mod_proxy_fcgi, httpd 2.4) http://wiki.Apache.org/httpd/PHP-FPM

http://php.net/manual/en/install.unix.debian.php#112544 (2013)

Selanjutnya artikel dari Apache ini, merinci tiga sub-opsi untuk mengonfigurasi mod_proxy_fcgi agar terhubung ke FPM, menggunakan ProxyPassMatch atau SetHandler + UDS. Perhatikan bahwa UDS adalah sejak Apache 2.4.10 per https://httpd.Apache.org/docs/2.4/mod/mod_proxy_fcgi.html sehingga seseorang memerlukan trusty-backports atau yang lebih baru.

https://wiki.Apache.org/httpd/PHP-FPM

Jadi saya datang untuk memvisualisasikan sekarang ada enam cara untuk mengonfigurasinya:

Kira-kira dalam urutan sejarah:

  1. Modul Apache PHP:mod_php (cara lama)

  2. Melalui FastCGI – menggunakan konfigurasi Handler/Action/Alias/FastCgiExternalServer

    sebuah. mod_fastcgi

    b. mod_fcgid

  3. Menggunakan PHP-FPM melalui mod_proxy_fcgi, dikonfigurasi melalui:

    sebuah. Soket TCP (IP dan port) ProxyPassMatch … fcgi://127.0.0.1:9000/path/

    b. Unix domain socket (UDS) ProxyPassMatch … unix:/path/to/socket

    c. (UDS) melalui SetHandler “proxy:unix:ATAU SetHandler”proxy:fcgi:

Penafian:ini semua baru bagi saya, jadi saya mungkin masih memiliki lima hal yang salah dan sepuluh hal untuk dipelajari.


Ubuntu
  1. Cara Menginstal Apache di Ubuntu 18.04

  2. Cara menginstal Apache di Ubuntu 20.04

  3. Amankan Apache dengan Lets Encrypt di Ubuntu 18.04

  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. Cara Menginstal Joomla dengan Apache di Ubuntu 18.04

  1. Amankan Apache dengan Lets Encrypt di Ubuntu 20.04

  2. Cara Menginstal OroCRM dengan Nginx di Ubuntu 16.04 LTS

  3. Cara Mengatur Magento 2 Dengan Varnish dan Apache di Ubuntu 16.04