Blog Single

14 Apr

Cara Instalasi Linux, Nginx, MySQL, PHP (LEMP) di Ubuntu 16.04

LEMP adalah software yang dapat digunakan untuk menjalankan halaman web dan aplikasi web yang dinamis. Istilah LEMP menjelaskan sistem operasi Linux, dengan server web Nginx. Data backend disimpan dalam database MySQL dan pemrosesan dinamis ditangani oleh PHP.

Dalam panduan ini, kami akan menunjukkan cara menginstal tumpukan LEMP pada server Ubuntu 16.04. Kami akan menjelaskan cara mengaktifkan dan menjalankan komponen lainnya.

Sebelum Anda menyelesaikan tutorial ini, Anda harus memiliki akun pengguna biasa, non-root di server Anda dengan hak akses sudo. Anda dapat mempelajari cara mengatur jenis akun ini dengan menyelesaikan pengaturan awal server Ubuntu 16.04 kami.

Setelah Anda memiliki akun Anda, masuk ke server Anda dengan nama pengguna itu. Anda siap untuk memulai langkah-langkah yang dijelaskan dalam panduan ini.

Langkah 1: Instal Server Web Nginx

Untuk menampilkan halaman web kepada pengunjung situs kami, kami akan menggunakan Nginx, server web modern dan efisien. Semua perangkat lunak yang akan kita gunakan untuk langkah ini akan diunduh dari repositori paket default Ubuntu. Kita dapat menggunakan manajemen paket apt untuk menyelesaikan instalasi.

Karena ini adalah pertama kalinya menggunakan apt untuk sesi ini, anda harus memulai dengan memperbarui indeks paket lokal. Kemudian dapat menginstal server:

 $ sudo apt-get update 
$ sudo apt-get install nginx 

Pada Ubuntu 16.04, Nginx dikonfigurasi untuk mulai berjalan setelah instalasi. Jika Anda menjalankan ufw firewall, seperti yang diuraikan dalam panduan pengaturan awal kami, Anda harus mengizinkan koneksi ke Nginx. Nginx mendaftar sendiri dengan ufw saat instalasi.

Disarankan agar Anda mengaktifkan profil paling ketat yang masih akan memungkinkan lalu lintas yang Anda inginkan. Karena belum mengonfigurasi SSL untuk server, dalam panduan ini, anda hanya perlu mengizinkan lalu lintas di port 80.

Anda dapat mengaktifkan ini dengan mengetik:

$ sudo ufw allow 'Nginx HTTP'

Anda dapat memverifikasi perubahan dengan mengetik:

$ sudo ufw status

Anda akan melihat lalu lintas HTTP diizinkan ditampilkan:

Output
Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere                  
Nginx HTTP                 ALLOW       Anywhere                  
OpenSSH (v6)               ALLOW       Anywhere (v6)             
Nginx HTTP (v6)            ALLOW       Anywhere (v6)

Ketikkan alamat IP anda di browser. Ini akan membawa Anda ke halaman standar Nginx:

Jika Anda melihat halaman di atas, Anda telah berhasil menginstal Nginx.

Langkah 2: Instal MySQL

Sekarang kita memiliki server web, kita perlu menginstal MySQL, sistem manajemen basis data, untuk menyimpan dan mengelola data untuk situs kita.

Anda dapat menginstal ini dengan mudah dengan mengetik:

$ sudo apt-get install mysql-server

Anda akan diminta untuk memberikan kata sandi root (administratif) untuk digunakan dalam sistem MySQL. Perangkat lunak basis data MySQL sekarang diinstal, tetapi konfigurasinya belum sepenuhnya lengkap.

Untuk mengamankan instalasi, kita dapat menjalankan skrip keamanan sederhana yang akan menanyakan apakah kita ingin memodifikasi beberapa default tidak aman. :

Anda akan diminta memasukkan kata sandi akun root MySQL. Selanjutnya, Anda akan ditanya apakah Anda ingin mengkonfigurasi VALIDATE PASSWORD PLUGIN.

Peringatan: Mengaktifkan fitur ini adalah semacam panggilan penilaian. Jika diaktifkan, kata sandi yang tidak cocok dengan kriteria yang ditentukan akan ditolak oleh MySQL dengan kesalahan. Ini akan menimbulkan masalah jika Anda menggunakan kata sandi yang lemah bersama dengan perangkat lunak yang secara otomatis mengkonfigurasi hak pengguna MySQL, seperti paket Ubuntu untuk phpMyAdmin. Aman untuk membiarkan validasi dinonaktifkan, tetapi Anda harus selalu menggunakan kata sandi unik dan kuat untuk keamanan basis data.

Ketik y untuk ya, atau apa pun untuk melanjutkan tanpa mengaktifkan.

VALIDATE PASSWORD PLUGIN can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD plugin?

Press y|Y for Yes, any other key for No:

Jika Anda telah mengaktifkan validasi, Anda akan diminta untuk memilih tingkat validasi kata sandi. Ingatlah bahwa jika Anda mengetik 2, untuk level terkuat, Anda akan menerima kesalahan ketika mencoba mengatur kata sandi yang tidak mengandung angka, huruf besar dan kecil, dan karakter khusus, atau yang didasarkan pada kata-kata kamus umum.

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

Jika Anda mengaktifkan validasi kata sandi, Anda akan diperlihatkan kekuatan kata sandi untuk kata sandi root yang ada, dan ditanya apakah Anda ingin mengubah kata sandi itu. Jika Anda senang dengan kata sandi Anda saat ini, masukkan n untuk “tidak” pada prompt:

Using existing password for root.

Estimated strength of the password: 100
Change the password for root ? ((Press y|Y for Yes, any other key for No) : n

Untuk sisa pertanyaan, Anda harus menekan Y dan menekan tombol Enter di setiap prompt. Ini akan menghapus beberapa pengguna anonim dan database pengujian, menonaktifkan login root jarak jauh, dan memuat aturan baru ini sehingga MySQL segera menghargai perubahan yang telah kami buat.

Pada bagian ini, sistem basis data Anda sekarang telah diatur dan kami dapat melanjutkan.

Langkah 3: Instal PHP

Sekarang anda telah menginstal Nginx untuk melayani halaman web dan MySQL untuk menyimpan dan mengelola data. Namun, serverbelum memiliki apa pun yang dapat menghasilkan konten dinamis. Kita bisa menggunakan PHP.

Karena Nginx tidak mengandung pemrosesan PHP asli seperti beberapa server web lain, kita perlu menginstal php-fpm, yang merupakan kependekan dari “fastCGI process manager”. Kami akan memberi tahu Nginx untuk mengirimkan permintaan PHP ke perangkat lunak ini untuk diproses.

Kita dapat menginstal modul ini dan juga akan mengambil paket pembantu tambahan yang akan memungkinkan PHP untuk berkomunikasi dengan backend basis data kami. Instalasi akan menarik file inti PHP yang diperlukan. Lakukan ini dengan mengetik:

$ sudo apt-get install php-fpm php-mysql

Konfigurasikan Prosesor PHP

Anda sudah menginstal komponen PHP, tetapi perlu melakukan sedikit perubahan konfigurasi untuk membuat pengaturan lebih aman.

Buka file konfigurasi php-fpm utama dengan hak akses root:

$ sudo nano /etc/php/7.0/fpm/php.ini

Cari parameter yang menetapkan cgi.fix_pathinfo. Ini akan dikomentari dengan tanda titik koma (;) dan diubah ke “1” secara default.

Ini adalah pengaturan yang sangat tidak aman karena memberitahu PHP untuk mencoba mengeksekusi file terdekat yang dapat ditemukan jika file PHP yang diminta tidak dapat ditemukan. Ini pada dasarnya akan memungkinkan pengguna untuk membuat permintaan PHP dengan cara yang akan memungkinkan mereka untuk mengeksekusi skrip yang seharusnya tidak diizinkan untuk dieksekusi.

Anda harus mengubah kedua kondisi ini dengan menghapus tanda komentar pada baris dan menyetelnya ke “0” seperti ini:

/etc/php/7.0/fpm/php.ini

cgi.fix_pathinfo=0

Simpan dan tutup file ketika selesai.

Sekarang, kita hanya perlu restart PHP dengan mengetik:

$ sudo systemctl restart php7.0-fpm

Langkah 4: Konfigurasikan Nginx untuk Menggunakan PHP

Sekarang, anda sudah menginstal semua komponen yang diperlukan. Satu-satunya perubahan konfigurasi yang masih anda butuhkan adalah memberi tahu Nginx untuk menggunakan prosesor PHP untuk konten dinamis.

$ sudo nano /etc/nginx/sites-available/default

Saat ini, konfigurasi server default Nginx terlihat seperti ini:

/etc/nginx/sites-available/default

server {
    listen 80 default_server;
    listen [::]:80 default_server;

    root /var/www/html;
    index index.html index.htm index.nginx-debian.html;

    server_name _;

    location / {
        try_files $uri $uri/ =404;
    }
}

Anda perlu membuat beberapa perubahan pada file ini.

/etc/nginx/sites-available/default

server {
    listen 80 default_server;
    listen [::]:80 default_server;

    root /var/www/html;
    index index.php index.html index.htm index.nginx-debian.html;

    server_name server_domain_or_IP;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.0-fpm.sock;
    }

    location ~ /\.ht {
        deny all;
    }
}

Uji file konfigurasi Anda untuk kesalahan sintaks dengan mengetik:

$ sudo nginx -t

Bila tidak terdapat kesalahan, lakukan proses restart atau reload nginx :

$ sudo systemctl reload nginx

Langkah 5: Buat File PHP untuk Menguji Konfigurasi

Buat file info.php pada document root seperti dibawah ini :

$ sudo nano /var/www/html/info.php

lalu masukkan :

/var/www/html/info.php

<?php
phpinfo();
?>

kemudian panggil pada browser :

http://server_domain_or_IP/info.php

Related Posts