Cara Install Linux, Nginx, MySQL, PHP (LEMP stack) di Ubuntu 18.04 - Halo teman-teman semuanya, pada kesempatan kali ini kita semua akan belajar bagaimana cara mempersiapkan server baru untuk menjalankan sebuah website.
Pada artikel kali ini kita akan belajar bagaimana cara install Nginx, MySQL dan juga PHP. Langsung saja kita mulai mulai dari menginstall Web Server Nginx.
Langkah 1 - Menginstal Server Web Nginx
Pada artikel kali ini kita akan belajar dengan menggunakan Web Server Nginx atau biasanya disebut Engine-X, Web Server Nginx banyak sekali digunakan oleh perusahaan-perusahaan dan startup untuk memanajemen server mereka.
Sebelum menginstall Nginx, silahkan jalankan perintah dibawah ini untuk memperbarui paket-paket pada Ubuntu
sudo apt update
Install Nginx
sudo apt install nginx
Setelah installasi selesai, ada yang perlu kita ketahui bersama, bahwa Nginx akan otomatis berjalan setelah installasi selesai.
Jika teman-teman menjalankan firewall ufw
. Kita juga harus mendaftarkan Nginx ke firewall ufw
tersebut, jadi prosedurnya sangat mudah sekali.
Silahkan jalankan perintah di bawah ini :
sudo ufw allow 'Nginx HTTP'
Setelah berhasil, kita bisa melihat perubahannya dengan mengetikkan perintah :
sudo ufw status
Output perintah diatas akan menunjukkan bahwa HTTP
diizinkan, kurang lebih hasilnya seperti berikut ini :
Output
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Nginx HTTP ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Nginx HTTP (v6) ALLOW Anywhere (v6)
Dengan menambahkan aturan firewall baru, sekarang teman-teman bisa menguji apakah Web Server Nginx kita sudah berjalan. Untuk melihatnya silahkan ketik alamat domain atau alamat IP Publik di web browser.
http://server_domain_or_IP
Jika berhasil, teman-teman akan melihat kurang lebih tampilannya seperti berikut ini :
Langkah 2 - Menginstal MySQL
Setelah kita berhasil menginstall Web Server Nginx, pada tahap ini kita akan belajar bagaimana cara menginstall MySQL di Ubuntu atau di Server kita.
Jalankan Perintah di bawah ini untuk menginstall MySQL :
sudo apt install mysql-server
Setelah installasi berhasil, kita sekarang sudah memiliki MySQL di Server kita, akan teteapi konfigurasinya belum lengkap.
Untuk mengamankan instalasi, MySQL dilengkapi dengan skrip yang akan menanyakan apakah kita ingin memodifikasi beberapa default yang tidak aman.
Sekarang jalankan perintah di bawah ini untuk membuat keamanan pada installasi MySQL kita :
sudo mysql_secure_installation
Dari perintah di atas, kita akan mendapatkan pertanyaan apakah kita ingin mengkonfigurasi VALIDATE PASSWORD PLUGIN
.
Silahkan teman-teman jawab dengan menekan Y
untuk menyetujui. Setelah itu kita akan dimintai lagi untuk memilih tingkatan keamanan kata sandi.
Disini kita diberikan 3
pilihan, kurang lebih seperti berikut ini :
There are three levels of password validation policy:
LOW Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary file
Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 1
Disini silahkan teman-teman pilih angka 1
saja dan ENTER
untuk memilih level medium.
Ingat! jika kita menggunakan angka 2
untuk level terkuat, maka kita akan menerima kesalahan saat mencoba mengatur kata sandi yang tidak mengandung angka, huruf besar dan kecil, dan karakter khusus.
Selanjutnya, kita akan diminta untuk mengirim dan mengonfirmasi kata sandi root:
Please set the password for root here.
New password:
Re-enter new password:
Untuk sisa pertanyaan, kita tinggal menekan Y
dan ENTER
tombol di setiap prompt. Ini akan menghapus beberapa pengguna anonim dan database pengujian.
Selanjutnya kita akan mencoba merubah kata sani MySQL kita, silahkan jalankan perintah dibawah ini :
sudo mysql
Setelah berhasil masuk ke MySQL, silahkan jalankan perintah berikut ini :
mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;
Maka kurang lebih hasilnya seprti berikut ini :
Output
+------------------+-------------------------------------------+-----------------------+-----------+
| user | authentication_string | plugin | host |
+------------------+-------------------------------------------+-----------------------+-----------+
| root | | auth_socket | localhost |
| mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *CC744277A401A7D25BE1CA89AFF17BF607F876FF | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
4 rows in set (0.00 sec)
Bisa kita lihat dari hasil diatas, kita tidak memiliki default password untuk root dari MySQL kita. Dan kita masih menggunakan plugin auth_socket
yang mana nanti kita akan ubah pluginnya menggunakan mysql_native_password
.
Silahkan konfigurasi akun root untuk mengautentikasi dengan kata sandi, jalankan perintah ALTER USER
. Pastikan untuk mengubah password atau kata sandi yang kita inginkan:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
CATATAN! : Silahkan ganti password
dengan kata sandi yang kita inginkan.
Setelah berhasil, silahkan kita jalankan perintah berikut ini untuk memberi tahu server untuk restart ulang tabel dan menerapkan perubahan baru :
mysql> FLUSH PRIVILEGES;
Setelah itu, coba kita jalankan perintah dibawah ini untuk melihat perubahannya :
mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;
Maka kurang lebih hasilnya seperti berikut ini :
Output
+------------------+-------------------------------------------+-----------------------+-----------+
| user | authentication_string | plugin | host |
+------------------+-------------------------------------------+-----------------------+-----------+
| root | *3636DACC8616D997782ADD0839F92C1571D6D78F | mysql_native_password | localhost |
| mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *CC744277A401A7D25BE1CA89AFF17BF607F876FF | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
4 rows in set (0.00 sec)
Sekarang bisa kita lihat, dari hasil output diatas kita sudah berhasil menambahkan password dan merubah pluginnya yang asalnya auth_socket
menjadi mysql_native_password
.
Silahkan kita bisa keluar dari MySQL dengan cara menjalankan perintah dibawah ini :
mysql> exit
Sebelum lanjut ke tahap selanjutnya, sekarang kita coba masuk ke MySQL kita dengan password yang sudah dikta buat diatas, apakah sudah benar-benar berjalan sesuai dengan keinginan kita. Silahkan jalankan perintah di bawah ini :
mysql -u root -p
Silahkan masukkan password
MySQL teman-teman dan tekan ENTER
, jika berhasil teman-teman akan masuk di prompt dari MySQL.
Langkah 3 - Instalasi PHP dan Konfigurasi Nginx
Dari langkah-langkah di atas, kita sudah berhasil menginstall sebuah Web Server untuk menjalankan website kita nanti dan MySQL untuk menyimpan data website kita. Namun masih ada yang belum, yaitu membuat sesuatu konten yang dinamis dan disinilah PHP berperan.
Pada tahap kali ini kita semua akan belajar menginstall PHP di server kita. Dan sini nanti kita akan menggunakan PHP-FPM
, yang merupakan kependekan dari “fastCGI proses manager
”.
Sebelum kita menginstall PHP, kita akan membuat sebuah repository terlebih dahulu, silahkan jalankan perintah dibawah ini :
sudo add-apt-repository universe
Setelah kita berhasil menambahkan repository baru, sekarang kita bisa menginstall PHP dengan cara menjalankan perintah dibawah ini :
sudo apt install php-fpm php-mysql
Sekarang kita sudah berhasil menginstall semua komponen LEMP yang diperlukan, akan tetapi disini kita juga masih perlu membuat beberapa perubahan konfigurasi untuk memberi tahu NGINX untuk menggunakan PHP sebagai pemrosesan konten dinamis.
Disini kita akan belajaar membuat block server baru di Nginx, sialhkan jalankan perintah dibawah ini untuk membuat block server baru di Nginx :
sudo nano /etc/nginx/sites-available/example.com
CATATAN! : example.com
bisa teman-teman ganti dengan nama domain atau IP Publik.
Silahkan masukkan kode block server dibawah ini ke dalam file yang barusan kita buat :
server {
listen 80;
root /var/www/html;
index index.php index.html index.htm index.nginx-debian.html;
server_name example.com;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}
Dari block server Nginx diatas, berikut penjelasannya lengkapnya :
-
listen
- Menentukan port yang akan digunakan Nginx. Dalam hal ini, ia akan menggunakan pada port 80, port default untuk HTTP.
-
root
- Menentukan adalah tempat file website disimpan.
-
index
- Mengkonfigurasi Nginx untuk memprioritaskan file yang dinamai index.php
ketika file indeks diminta, jika tersedia.
-
server_name
- Menentukan blok server mana yang harus digunakan untuk permintaan yang diberikan ke server kita. Arahkan arahan ini ke nama domain server kita atau alamat IP publik.
-
location /
- Blok lokasi pertama termasuk try_files arahan, yang memeriksa keberadaan file yang cocok dengan permintaan URI. Jika Nginx tidak dapat menemukan file yang sesuai, itu akan mengembalikan kesalahan 404.
-
location ~ \.php$
- Blok lokasi ini menangani pemrosesan PHP yang sebenarnya dengan mengarahkan Nginx ke fastcgi-php.conf
file konfigurasi dan php7.2-fpm.sock
file tersebut, yang menyatakan soket apa yang dikaitkan php-fpm.
-
location ~ /\.ht
- Blok lokasi terakhir berkaitan dengan .htaccess
file, yang tidak diproses Nginx. Dengan menambahkan deny all, jika ada .htaccess
file di dalam root dokumen, mereka tidak akan ditampilkan kepada pengunjung.
Setelah menambahkan block server, simpan dan tutup file. Aktifkan blok server baru kita dengan membuat symlink dari file konfigurasi blok server baru kita (dalam /etc/nginx/sites-available/direktori
) ke /etc/nginx/sites-enabled/direktori
:
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
Uji file konfigurasi baru kita, untuk mengetahui apakah kesalahan sintaks atau tidak yaitu dengan mengetikkan:
sudo nginx -t
Jika semuanya tidak ada masalah, kita bisa memuat ulang atau restart Nginx kita dengan cara mengetikkan perintah berikut ini :
sudo systemctl reload nginx
Langkah 4 - Membuat File PHP untuk Menguji Konfigurasi
Sekarang kita akan menguji dan memvalidasi apakah Nginx kita sudah benar-benar bisa memproses file PHP. sekarang silahkan jalankan perintah dibawah ini untuk membuat file baru dengan nama info.php
:
sudo nano /var/www/html/info.php
Silahkan masukkan kode di bawah ini dan silahkan kalian simpan file info.php
dengan cara menekan CTRL
+ X
dan klik Y
:
<?php
phpinfo();
Sekarang, kita dapat melihat halaman ini di browser web dengan mengunjungi nama domain server kita atau alamat IP publik diikuti oleh /info.php:
http://your_server_domain_or_IP/info.php
Sekarang kita akan melihat halaman web yang dibuat oleh PHP dengan informasi tentang server kita, kurang lebih seperti berikut ini :
Sampai disini pembahasan tentang Installasi Nginx, MySQL, PHP atau LEMP stack di Ubuntu 18.04, jika ada pertanyaan silahkan bisa bertanya melalui kolom komentar di bawah.
sumber : https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mysql-php-lemp-stack-ubuntu-18-04