GNU/Linux >> Belajar Linux >  >> Ubuntu

Menggunakan PHP-FPM dengan Apache di Ubuntu 16.04

Tutorial ini menunjukkan cara menginstal server web Apache di server Ubuntu 16.04 dengan PHP 7 (melalui PHP-FPM) dan dukungan MySQL. 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.

1 Catatan Awal

Dalam tutorial ini, saya akan menggunakan hostname server1.example.com dengan alamat IP 192.168.1.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 atau MariaDB

Ubuntu menyediakan paket MySQL serta MariaDB. MariaDB adalah garpu MySQL yang disediakan oleh pengembang MySQL asli Monty Widenius. Ikuti bab 2.1 atau 2.2 untuk menginstal server database.

2.1 Instal MySQL 5.7

Pertama kita install MySQL 5.7 seperti ini:

apt-get -y 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

Jalankan mysql_secure_installation untuk mengamankan database MySQL dan menonaktifkan akses ke database pengujian.

mysql_secure_installation

Anda akan ditanyai pertanyaan berikut:

Enter current password for root (enter for none): <-- press enter
Set root password? [Y/n] <-- y
New password: <-- Enter the new MariaDB root password here
Re-enter new password: <-- Repeat the password
Remove anonymous users? [Y/n] <-- y
Disallow root login remotely? [Y/n] <-- y
Reload privilege tables now? [Y/n] <-- y

2.2 Instal MariaDB

Jalankan perintah berikut untuk menginstal MariaDB-server dan klien:

apt-get -y install mariadb-server mariadb-client

Sekarang kita menetapkan kata sandi root untuk MariaDB.

mysql_secure_installation

Anda akan ditanyai pertanyaan berikut:

Enter current password for root (enter for none): <-- press enter
Set root password? [Y/n] <-- y
New password: <-- Enter the new MariaDB root password here
Re-enter new password: <-- Repeat the password
Remove anonymous users? [Y/n] <-- y
Disallow root login remotely? [Y/n] <-- y
Reload privilege tables now? [Y/n] <-- y

3 Menginstal Apache

Apache 2.4 tersedia sebagai paket Ubuntu. Kami membutuhkan paket apache2 yang dapat kami instal seperti ini:

apt-get -y install apache2

Sekarang arahkan browser Anda ke http://192.168.1.100, dan Anda akan melihat halaman placeholder Apache (Berhasil!):

Akar dokumen default Apache adalah /var/www/html di Ubuntu, dan file konfigurasinya adalah /etc/apache2/apache2.conf. Konfigurasi tambahan disimpan dalam subdirektori dari direktori /etc/apache2 seperti /etc/apache2/mods-enabled (untuk modul Apache), /etc/apache2/sites-enabled (untuk virtual host), dan /etc/apache2/conf .d.

4 Menginstal PHP 7

Kita dapat membuat PHP 7 bekerja di Apache2 melalui PHP-FPM dan modul mod_fastcgi Apache yang kita instal sebagai berikut:

apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.0

PHP-FPM adalah proses daemon (dengan unit sistem php7.0-fpm.service) yang menjalankan server FastCGI pada soket /var/run/php/php7.0-fpm.sock.

Selanjutnya, aktifkan modul Apache berikut...

a2enmod actions fastcgi alias

... dan mulai ulang Apache:

systemctl restart apache2.service

5 Konfigurasi Apache

Untuk membuat Apache bekerja dengan PHP-FPM, kita memerlukan konfigurasi berikut:

        <IfModule mod_fastcgi.c>
                AddHandler php7-fcgi .php
                Action php7-fcgi /php7-fcgi
                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 Authorization
        </IfModule>

Anda dapat meletakkannya di konfigurasi Apache global (jadi diaktifkan untuk semua vhosts), misalnya di /etc/Apache2/conf.d/php7.0-fpm.conf (file ini tidak ada, jadi Anda harus membuatnya) , atau Anda dapat menempatkannya di setiap vhost yang seharusnya menggunakan PHP-FPM. Saya ingin menggunakan PHP-FPM dengan vhost default jadi saya membuka file konfigurasi vhost /etc/apache2/sites-available/000-default.conf.

nano /etc/apache2/sites-available/000-default.conf

... dan letakkan bagian berikut di antara :

        <Directory /usr/lib/cgi-bin>
Require all granted
</Directory>
<IfModule mod_fastcgi.c> SetHandler 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 Authorization </IfModule>

Mulai ulang Apache setelahnya:

systemctl restart apache2.service

Sekarang buat file PHP berikut di root dokumen /var/www:

nano /var/www/html/info.php
<?php
phpinfo();

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

Seperti yang Anda lihat, PHP 7 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 PHP. MySQL tidak terdaftar di sana yang berarti kami belum memiliki dukungan MySQL di PHP.

Harap diperhatikan: Jika Anda menginstal modul Apache PHP 7 (mod_php), ini bisa terjadi mis. ketika Anda memulai dengan setup server LAMP dari ISP Anda dan bukan dengan server kosong seperti yang saya lakukan dalam tutorial ini, maka Anda mungkin harus menonaktifkan mod_php seperti yang ditunjukkan di bawah ini.

a2dismod php7.0

dan restart apache:

systemctl restart apache2.service

6 Mendapatkan Dukungan MySQL / MariaDB di PHP 7

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

apt-cache search php7.0

Pilih yang Anda butuhkan dan instal seperti ini:

apt-get install php7.0-mysql php7.0-curl php7.0-gd php7.0-intl php-pear php7.0-imap php7.0-mcrypt php7.0-ps php7.0-pspell php7.0-recode php7.0-snmp php7.0-sqlite php7.0-tidy php7.0-xmlrpc php7.0-xsl

Sekarang muat ulang PHP-FPM:

systemctl reload php7.0-fpm.service

Sekarang muat ulang http://192.168.1.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 MySQLi:

7 phpMyAdmin

phpMyAdmin adalah antarmuka web di mana Anda dapat mengelola database MySQL Anda. Sebaiknya Anda menginstalnya:

apt-get -y install phpmyadmin

Anda akan melihat pertanyaan berikut:

Web server to reconfigure automatically:<-- apache2 
Configure database for phpmyadmin with dbconfig-common? <-- Yes
MySQL application password for phpmyadmin: <-- Press enter

Setelah itu, Anda dapat mengakses phpMyAdmin di http://192.168.1.100/phpmyadmin/

8 Membuat PHP-FPM menggunakan Koneksi TCP (opsional)

CATATAN: Bab ini menunjukkan konfigurasi PHP-FPM melalui TCP. Saya akan menunjukkan ini sebagai contoh konfigurasi dan mungkin ada penyiapan yang Anda perlukan, mis. ketika proses fastcgi berjalan di server kedua, tetapi secara umum lebih cepat menggunakan soket. Jadi, Anda mungkin ingin melewatkan bab ini.

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

nano /etc/php/7.0/fpm/pool.d/www.conf

... dan buat garis dengar terlihat sebagai berikut:

[...]
;listen = /var/run/php/php7.0-fpm.sock
listen = 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:

systemctl reload php7.0-fpm.service

Selanjutnya buka konfigurasi Apache Anda dan semua vhost Anda dan ubah baris FastCgiExternalServer /usr/lib/cgi-bin/php7-fcgi -socket /var/run/php/php7.0-fpm.sock -pass-header Authorization ke FastCgiExternalServer /usr/lib/cgi-bin/php7-fcgi -host 127.0.0.1:9000 -pass-header Otorisasi, mis. seperti ini:

nano /etc/apache2/sites-available/000-default.conf
[...]
 <Directory /usr/lib/cgi-bin>
Require all granted
</Directory>

<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 -host 127.0.0.1:9000 -pass-header Authorization
</IfModule> [...]

Terakhir muat ulang Apache:

systemctl reload apache2.service

  • Apache:http://httpd.apache.org/
  • PHP:http://www.php.net/
  • PHP-FPM:http://php-fpm.org/
  • MySQL:http://www.mysql.com/
  • Ubuntu:http://www.ubuntu.com/
  • phpMyAdmin:http://www.phpmyadmin.net/

Ubuntu
  1. Bagaimana Cara Mengatur Ulang Kata Sandi Ubuntu?

  2. Cara Menginstal PHP-FPM dengan Apache di Ubuntu 20.04

  3. Cara Menginstal PHP-FPM dengan Apache di Ubuntu 22.04

  1. Cara Mengubah Kata Sandi Sudo atau Root di Ubuntu

  2. Menginstal mod_pagespeed dengan Apache di Ubuntu/CentOS

  3. Nonaktifkan Akun Root Di Ubuntu?

  1. Ubuntu 20.04 mengatur ulang kata sandi root

  2. Ubuntu 20.04 WordPress dengan instalasi Apache

  3. Lupa kata sandi server ubuntu?