Cara melakukan instalasi Nginx, MySQL, dan PHP pada Ubuntu 22.04 LTS. Pada tulisan ini kita akan melakukan instalasi Nginx, MySQL 8 Community and PHP 8.1.
Kita juga akan melakukan instalasi ekstensi PHP dan merubah beberapa konfigurasi untuk membuat virtual host serta kita akan memasang sertifikat SSL dari Let’s Encrypt yang bersifat gratis untuk koneksi HTTPS ke server kita.
Petunjuk ini sudah kita implementasikan di mesin EC2 AWS Amazon Web Service, sehingga pada cloud lainnya ataupun mesin virtual seperti virtual box, seharusnya juga sama asalkan menjalankan sistem operasi Ubuntu 22.04.
Syarat Awal
Memiliki akses dengan pengguna root atau dengan pengguna dengan akses sudo.
Memiliki domain atau subdomain untuk kita konfigurasi dengan Let’s Encrypt.
Perbaharui Server
Pertama kita lakukan update dan updgrade paket dari ubuntu server ini sehingga menjadi yang terbaru, menggunakan perintah dibawah ini.
sudo apt update
sudo apt upgrade
Setelah selesai, kita bisa mulai melakukan instalasi LEMP nya.
Instalasi Nginx
Untuk melakukan instalasi Nginx dapat dilakukan dengan perintah.
sudo apt install nginx
Perintah tersebut akan melakukan instalasi nginx
dengan semua dependensi yang dibutuhkan oleh nginx.
Setup Firewall
Kita akan konfigurasi firewall terlebih dahulu, di ubuntu server 22.04 sudah terpasang firewall yang dinamakan Uncomplicated Firewall (UFW). Kita akan mengizinkan nginx dan koneksi SSH kita untuk diakses dari jaringan publik, yakni port 80 dan 443 untuk HTTP dan HTTPS nginx serta port 22 untuk koneksi SSH kita. with Apache to allow public access on default web ports for HTTP
and HTTPS
sudo ufw app list
Kita akan melihat daftar aplikasi yang sudah terpasang di ubuntu server 22.04 ini.
Output
Available applications:
Nginx Full
Nginx HTTP
Nginx HTTPS
OpenSSH
- Nginx: Ini akan membuka port
80
(normal, web trafik yang tidak di enkripsi) - Nginx Full: Ini akan membuka port
80
dan port443
(TLS/SSL trafik yang di enksripsi) - Nginx Secure: Ini akan membuka port
443
(TLS/SSL trafik yang di enksripsi) - OpenSSH: Ini akan membuka port
22
untuk akses SSH.
Jika kita tidak menggunakan koneksi SSL kita bisa mengaktifkan profile Nginx saja.
Di panduan ini kita akan menggunakan Nginx Full.
sudo ufw allow OpenSSH
sudo ufw allow 'Nginx Full'
Kemudian kita aktifkan UFW dengan perintah dibawah ini.
sudo ufw enable
Kita bisa melihat status dari UFW dengan perintah ini.
sudo ufw status
Cek Instalasi Nginx
Kita sudah melakukan instalasi nginx pada langkah sebelumnya, kita bisa cek status dari nginx dengan perintah dibawah ini.
sudo service nginx status
● 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 Fri 2022-05-04 05:36:49 UTC; 44s ago Docs: man:nginx(8) Process: 10272 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCC> Process: 10273 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Main PID: 10274 (nginx) Tasks: 3 (limit: 1151) Memory: 5.3M CPU: 35ms CGroup: /system.slice/nginx.service
Jika belum berjalan, kita bisa menjakankan dengan perintah
sudo service nginx start
Agar apache berjalan saat server kita menyala, kita bisa set dengan perintah
sudo systemctl enable nginx
Melihat versi dari Nginx bisa kita gunakan perintah
sudo nginx -v
Sampai langkah ini, kita sudah berhasil melakukan instalasi nginx dan melakukan konfigurasi firewall dengan UFW.
Instalasi MySQL
Pada Ubuntu 22.04 MySQL 8 sudah dimasukan sebagai versi default di repositori Jammy Jellyfish (nama ubuntu 22.04), jadi kita bisa langsung melakukan instalasi dengan perintah apt install
.
sudo apt install mysql-server
Saat proses instalasi selesai, MySQL akan berjalan dan kita bisa dengan cek dengan perintah dibawah ini.
sudo service mysql status
Hasilnya akan menunjukan bahwa mysql sudah berjalan dan aktif.
● mysql.service - MySQL Community Server Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2022-04-29 00:38:45 UTC; 11s ago Process: 13836 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, statu> Main PID: 13844 (mysqld) Status: "Server is operational" Tasks: 38 (limit: 1151) Memory: 351.4M CPU: 1.043s CGroup: /system.slice/mysql.service └─13844 /usr/sbin/mysqld
Kita bisa melakukan cek versi MySQL dengan perintah.
sudo mysql -V
Output mysql Ver 8.0.28-0ubuntu4 for Linux on x86_64 ((Ubuntu))
Mengamankan MySQL
Instalasi MySQL sudh disertai dengan script yang dinakaman mysql_secure_installation
yang memudahkan kita untuk meningkatkan keamanan dari server MySQL kita.
Namun sebelum itu, kita harus melakukan perubahan pada cara MySQL melakukan authentikasi untuk pengguna root, agar dapat masuk menggunakan kata sandi. Jalankan perintah untuk masuk ke MySQL.
sudo mysql
Kita akan dibawa ke terminal database mysql dengan pengguna root.
mysql >
Masukan perintah SQL berikut ini untuk mengganti methode authentikasi pengguna root pada mysql dengan password.
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'GantiPasswordDisini';
Kemudian ketikan ‘exit‘ untuk keluar dari terminal database mysql.
Selanjutnya kita jalankan perintah dibawah ini.
sudo mysql_secure_installation
Silahkan ikuti langkah-langkah yang sudah disediakan oleh script tersebut sampai dengan selesai.
Instalasi PHP
Secara default Ubuntu 22.04 telah memiliki repositori PHP versi 8.1. Jadi kita bisa langsung melakukan instalasi PHP dengan perintah dibawah ini (kita sekalian melakukan instalasi berbagai librari untuk php).
sudo apt install php8.1-fpm php8.1 php8.1-common php8.1-mysql php8.1-xml php8.1-xmlrpc php8.1-curl php8.1-gd php8.1-imagick php8.1-cli php8.1-imap php8.1-mbstring php8.1-opcache php8.1-soap php8.1-zip php8.1-intl php8.1-bcmath unzip -y
Setelah proses instalasi selesai kita bisa cek versi dari PHP dengan perintah.
php -v
Output
PHP 8.1.5 (cli) (built: Apr 7 2022 17:46:26) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.5, Copyright (c) Zend Technologies
with Zend OPcache v8.1.5, Copyright (c), by Zend Technologies
Konfigurasi PHP
Kita akan melakukan beberapa perubahan konfigurasi pada PHP dengan merubah value yang di file php.ini
.
Untuk PHP 8.1 dengan Apache, file php.ini
berada pada direktori.
sudo nano /etc/php/8.1/fpm/php.ini
Setelah editor nano terbuka, tekan F6
untuk mencari konfigurasi dibawah ini, lakukan perbaris dan ubah nilai nya sesuai yang dibawah ini.
upload_max_filesize = 32M
post_max_size = 48M
memory_limit = 256M
max_execution_time = 600
max_input_vars = 3000
max_input_time = 1000
Setelah melakukan perubahan, silahkan simpan dengan ctrl + x dan ctrl + y. Kemudian lakukan restart pada php-fpm kita untuk melihat perubahan pada web server kita.
sudo service php8.1-fpm restart
Konfigurasi Nginx
Pertama, kita akan men-disable konfigurasi default dari Apache.
sudo rm -rf /etc/nginx/sites-enabled/default
sudo rm -rf /etc/nginx/sites-available/default
Lalu, kita buat folder baru dengan perintah.
sudo mkdir -p /var/www/html/nginx.henri.web.id/public
Kemudian konfigurasi permisi hak akses dan pemilik dari folder tersebut.
sudo chmod -R 755 /var/www/html/nginx.henri.web.id
sudo chown -R www-data:www-data /var/www/html/nginx.henri.web.id
Kemudian kita lanjutkan dengan membuat konfigurasi virtualhost untuk subdomain kita.
sudo nano /etc/nginx/sites-available/nginx.henri.web.id.conf
Silahkan paste konfigurasi dibawah ini.
server {
listen 80;
listen [::]:80;
server_name nginx.henri.web.id;
root /var/www/html/nginx.henri.web.id/public;
index index.html index.php;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ .php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+.php)(/.+)$;
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
Setelah itu simpan dan kita enable konfigurasi apache tersebut dengan membuat softlink.
sudo ln -s /etc/nginx/sites-available/nginx.henri.web.id.conf /etc/nginx/sites-enabled/nginx.henri.web.id.conf
Kemudian kita restart nginx
sudo service nginx restart
Instalasi Let’s Encrypt SSL
HTTPS adalah protokol untuk mengamankan komunikasi antara server (instance) dan client (web browser). Let’s Encrypt menyediakan SSL certificates secara gratis, HTTPS sangat dibutuhkan saat ini untuk semua website untuk meningkatkan kepercayaan pengguna.
Kita langsung bisa instal di ubuntu karena certbot dari let’s encrypt sudah masuk dalam repositori ubuntu server 22.04.
sudo apt install python3-certbot-nginx
Tunggu hingga proses instalasi selesai, selanjutnya kita bisa melakukan generate sertifikat dengan perintah dibawah ini.
sudo certbot --nginx --agree-tos --redirect -m henri@henri.web.id -d nginx.henri.web.id
Perintah diatas akan men-generate sertifikat SSL untuk domain nginx.henri.web.id, juga membuat redirect dari HTTP ke HTTPS untuk domain kita dan melakukan restart nginx web server kita.
Peremajaan Sertifikat SSL
Sertifikat yang disediakan oleh Let’s Encrypt hanya valid dalam waktu 90 hari, jadi kita harus melakuan pembaharuan/renew dari sertifikat tersebut secara berkala.
Kita bisa melakukan pembaharuan dengan perintah
sudo certbot renew --dry-run
Perintah diatas akan melakukan tes kadaluarsa sertifikat dan akan melakukan pembaharuan jika sudah mendekati masa kadaluarsa.
Perpanjangan otomatis dapat dilakukan dengan memasukan perintah tersebut di atas didalam conjob.
sudo crontab -e
Kemudian masukan baris dibawah ini.
10 2 * * * letsencrypt renew >> /var/log/letsencrypt/renew.log
Kita akan menjadwal pembaharuan sertifikat setiap jam 2:10 pagi setiap hari.
Tes Konfigurasi
Selanjutnya kita buat sebuah file php untuk melakukan tes di web browser.
sudo nano /var/www/html/nginx.henri.web.id/public/info.php
Tuliskan kode PHP dibawah ini, untuk menampilkan informasi tentang PHP yang kita install di server ini.
<?php phpinfo();
Kemudian simpan file.
Buka browser dan masukan alamat domain yang sudah kita konfigurasi dan tambahkan info.php
di url (nginx.henri.web.id/info.php
).
Kita akan di redirect dengan koneksi HTTPS dan menampilkan informasi tentang PHP yang ada di server.
Penutup
Demikianlah, kita sudah berhasil melakukan instalasi dan konfigurasi nginx dengan firewall dan SSL let’s encrypt, instalasi MySQL dan PHP pada Ubuntu 22.04.
Terimakasih, Semoga memberikan manfaat. Jika ada permasalahan atau pertanyaan silahkan beri komentar dibawah.
Referensi : CLoudbooklet
Salam Bang Henri,
Jika integrasi dengan PHPMyadmin langkah detilnya bagaimana ya Bang?