PHP adalah bahasa scripting tujuan umum. Ini sebagian besar populer untuk pengembangan web. Ini dapat digunakan untuk mengembangkan situs web yang dinamis dan interaktif. Itu adalah salah satu bahasa sisi server pertama yang dapat disematkan ke dalam HTML, membuatnya lebih mudah untuk menambahkan fungsionalitas ke halaman web tanpa perlu memanggil file eksternal untuk data. PHP adalah salah satu bahasa pemrograman yang lebih mudah dipelajari.
Ini terintegrasi dengan sejumlah database populer, termasuk MySQL, PostgreSQL, Oracle, Sybase, Informix, dan Microsoft SQL Server. Banyak CMS dan kerangka kerja populer seperti WordPress, Magento, dan Laravel ditulis dalam PHP.
Pada saat penulisan artikel ini, repositori default Ubuntu 20.04 menyertakan versi PHP 7.4.
Prasyarat
Untuk mengikuti panduan ini, pastikan Anda memiliki yang berikut:
- Memperbarui server Ubuntu 20.04 yang terhubung ke internet
- Akses root ke server atau pengguna dengan akses sudo
- Anda harus nyaman menggunakan terminal Linux untuk menjalankan perintah.
Langkah-langkah untuk menginstal dan dan mengkonfigurasi PHP di Ubuntu 20.04
- Pastikan server sudah diperbarui
- Instal php 7.4 di server
- Menginstal Nginx
- Konfigurasikan Nginx untuk menyajikan file php
1. Pastikan server sudah diperbarui
Sebelum melanjutkan, izinkan kami memastikan bahwa server kami diperbarui. Gunakan perintah ini untuk 1. Perbarui repositori server, 2. Tingkatkan paket server ke rilis terbaru:
# Update repos
sudo apt update
# Upgrade packages
sudo apt -y upgrade
2. Instal php 7.4 di server
Karena repositori default berisi php versi 7.4, mari kita instal dengan perintah ini:
sudo apt install php -y
Konfirmasikan versi yang diinstal dengan perintah php -v
:
~$ php -v
PHP 7.4.3 (cli) (built: Aug 13 2021 05:39:12) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
with Zend OPcache v7.4.3, Copyright (c), by Zend Technologies
Dalam pengaturan ini, kami bermaksud menyajikan file php dengan Nginx. Nginx tidak memiliki dukungan bawaan untuk memproses file PHP. Kami akan menggunakan PHP-FPM ("fastCGI process manager") untuk menangani file PHP.
Nginx tidak akan berfungsi jika Apache diinstal dan dijalankan. Karena kita akan menggunakan Nginx, mari gunakan perintah ini untuk menghapus apache jika sudah terpasang di sistem kita:
$ sudo apt remove apache2 -y
Sekarang mari kita instal php-fpm
dengan perintah ini:
sudo apt install php-fpm -y
Setelah instalasi selesai, layanan FPM akan dimulai secara otomatis. Layanan ditambahkan ke systemd sebagai php7.4-fpm
. Untuk memeriksa status layanan, jalankan:
$ sudo systemctl status php7.4-fpm
● php7.4-fpm.service - The PHP 7.4 FastCGI Process Manager
Loaded: loaded (/lib/systemd/system/php7.4-fpm.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2021-09-28 16:18:41 UTC; 3min 18s ago
Docs: man:php-fpm7.4(8)
Main PID: 56092 (php-fpm7.4)
Status: "Processes active: 0, idle: 2, Requests: 0, slow: 0, Traffic: 0req/sec"
Tasks: 3 (limit: 4710)
Memory: 7.1M
CGroup: /system.slice/php7.4-fpm.service
├─56092 php-fpm: master process (/etc/php/7.4/fpm/php-fpm.conf)
├─56113 php-fpm: pool www
└─56114 php-fpm: pool www
Sep 28 16:18:41 ip-172-26-11-229 systemd[1]: Starting The PHP 7.4 FastCGI Process Manager...
Sep 28 16:18:41 ip-172-26-11-229 systemd[1]: Started The PHP 7.4 FastCGI Process Manager.
Anda akan melihat output seperti di atas.
3. Menginstal Nginx
Sekarang setelah PHP dan php-fpm terinstal di sistem, kita perlu menginstal nginx. Nginx akan memungkinkan kita untuk menyiapkan host virtual yang dapat kita gunakan untuk melayani lalu lintas dari domain.
Instal nginx menggunakan perintah ini:
sudo apt install nginx -y
Setelah instalasi selesai, Nginx akan dimulai secara default. Konfirmasikan bahwa itu berfungsi seperti yang diharapkan dengan memeriksa statusnya. Anda akan melihat output seperti ini:
$ sudo systemctl status nginx
● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2021-09-28 16:28:30 UTC; 1min 2s ago
Docs: man:nginx(8)
Main PID: 56990 (nginx)
Tasks: 3 (limit: 4710)
Memory: 3.7M
CGroup: /system.slice/nginx.service
├─56990 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
├─56991 nginx: worker process
└─56992 nginx: worker process
Sep 28 16:28:30 ip-172-26-11-229 systemd[1]: Starting A high performance web server and a reverse pr>
Sep 28 16:28:30 ip-172-26-11-229 systemd[1]: Started A high performance web server and a reverse pro>
Untuk mengonfirmasi bahwa Nginx benar-benar berjalan dan dapat dijangkau, gunakan perintah ini:
curl http://server_ip/
Dimana server_ip
adalah ip server Anda. Jika karena alasan apa pun Anda tidak mengetahui ip publik server Anda, gunakan ini untuk memeriksa:
curl -4 icanhazip.com
Anda akan melihat halaman default Nginx.
4. Konfigurasi Nginx untuk menyajikan file php
Sekarang kita telah menyiapkan dan menjalankan Nginx di server kita, mari membuatnya melayani file php. Dalam contoh ini kita akan mengkonfigurasi Nginx untuk melayani halaman info php.
Untuk mencapai ini, kita perlu menyiapkan virtual host di Nginx yang melayani lalu lintas untuk domain tertentu (kita akan menggunakan example.citizix.com
). Agar ini berfungsi, Anda perlu memperbarui catatan DNS untuk domain itu di host dns Anda agar memiliki A
catatan menunjuk ke domain atau subdomain itu. Lihat dokumentasi penyedia DNS Anda untuk mengetahui cara melakukannya secara spesifik.
Konfirmasikan bahwa domain dapat diselesaikan dengan benar ke server menggunakan perintah dig:
❯ dig -t A example.citizix.com
; <<>> DiG 9.10.6 <<>> -t A example.citizix.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 10212
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;example.citizix.com. IN A
;; ANSWER SECTION:
example.citizix.com. 300 IN A 172.67.197.11
;; Query time: 828 msec
;; SERVER: 192.168.157.227#53(192.168.157.227)
;; WHEN: Tue Sep 28 20:42:05 EAT 2021
;; MSG SIZE rcvd: 80
Sekarang kita perlu mengikuti langkah-langkah ini agar skrip sederhana kita berfungsi:
- Buat direktori untuk menyimpan konten statis kami (kami akan menggunakan
/var/www/example.citizix.com
)sudo mkdir -p /var/www/example.citizix.com
- Pastikan direktori yang dibuat dapat diakses oleh pengguna Nginx
sudo chown -R www-data:www-data /var/www/example.citizix.com sudo chmod -R 755 /var/www/example.citizix.com
- Tambahkan file indeks
/var/www/example.citizix.com/index.php
dengan konten untuk menampilkan info php ke direktori (/var/www/example.citizix.com
)
Mengedit file:sudo vim /var/www/example.citizix.com/index.php
Tambahkan konten ini:
<?php phpinfo() ?>
Simpan dan tutup file.
- Buat konfigurasi nginx di direktori default nginx
/etc/nginx/conf.d
. 1. Kita akan membuat file/etc/nginx/conf.d/example.citizix.com.conf
dengan konten yang diperlukan.sudo vim /etc/nginx/conf.d/example.citizix.com.conf
Tambahkan konten ini:
server {
listen 80;
server_name example.citizix.com;
root /var/www/example.citizix.com;
index index.php;
location ~ \.php$ {
fastcgi_intercept_errors on;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
}
}
Konfirmasikan bahwa konfigurasi nginx sudah benar dengan perintah ini:
$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Sekarang Anda perlu me-restart nginx dan php-fpm menggunakan perintah ini:
sudo systemctl restart nginx
sudo systemctl restart php7.4-fpm
Konfirmasikan bahwa layanan muncul:
sudo systemctl status nginx
sudo systemctl status php7.4-fpm
Anda akan melihat bahwa layanan berhasil dimulai ulang!
Jika semuanya berjalan dengan baik, Anda akan melihat halaman info php seperti yang ditunjukkan pada tangkapan layar di bawah ini:
Itu saja! Sampai saat ini kami telah dapat menginstal php 7.4 di Ubuntu 20.04 dan menyajikan file sederhana dengan Nginx.