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
9 Tautan
- 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/