Cara Menginstal Nginx, MariaDB 10, PHP 7 (LEMP Stack) di 16.10/16.04


Tumpukan LEMP adalah akronim yang mewakili sekelompok paket (OS Linux, server web Nginx, database MySQL\MariaDB, dan bahasa pemrograman dinamis sisi server PHP) yang digunakan untuk menyebarkan aplikasi web dinamis dan Halaman web.

Tutorial ini akan memandu Anda tentang cara memasang tumpukan LEMP dengan Dukungan MariaDB 10, PHP 7 dan HTTP 2.0 untuk Nginx pada edisi server/desktop Ubuntu 16.10 dan Ubuntu 16.04.

Persyaratan

  1. Instalasi Ubuntu 16.04 Server Edition [instruksi juga dapat digunakan pada Ubuntu 16.10]

Langkah 1: Instal Server Web Nginx

1. Nginx adalah server web modern dan hemat sumber daya yang digunakan untuk menampilkan halaman web kepada pengunjung di internet. Kami akan mulai dengan menginstal server web Nginx dari repositori resmi Ubuntu dengan menggunakan baris perintah apt.

sudo apt-get install nginx

2. Selanjutnya, jalankan perintah netstat dan systemctl untuk mengonfirmasi apakah Nginx dimulai dan terikat pada port 80.

netstat -tlpn

sudo systemctl status nginx.service

Setelah Anda mendapat konfirmasi bahwa server telah dimulai, Anda dapat membuka browser dan menavigasi ke alamat IP server atau catatan DNS Anda menggunakan protokol HTTP untuk mengunjungi halaman web default Nginx.

http://IP-Address

Langkah 2: Aktifkan Protokol Nginx HTTP/2.0

3. Protokol HTTP/2.0 yang dibuat secara default pada rilis terbaru binari Nginx di Ubuntu 16.04 hanya berfungsi jika digabungkan dengan SSL dan menjanjikan peningkatan kecepatan yang sangat besar dalam memuat halaman web SSL.

Untuk mengaktifkan protokol di Nginx di Ubuntu 16.04, pertama-tama navigasikan ke file konfigurasi situs Nginx yang tersedia dan buat cadangan file konfigurasi default dengan mengeluarkan perintah di bawah ini.

cd /etc/nginx/sites-available/
sudo mv default default.backup

4. Kemudian, menggunakan editor teks, buat halaman default baru dengan petunjuk di bawah ini:

server {
        listen 443 ssl http2 default_server;
        listen [::]:443 ssl http2 default_server;

        root /var/www/html;

        index index.html index.htm index.php;

        server_name 192.168.1.13;

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

        ssl_certificate /etc/nginx/ssl/nginx.crt;
        ssl_certificate_key /etc/nginx/ssl/nginx.key;

        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
        ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
        ssl_dhparam  /etc/nginx/ssl/dhparam.pem;
        ssl_session_cache shared:SSL:20m;
        ssl_session_timeout 180m;
        resolver 8.8.8.8 8.8.4.4;
        add_header Strict-Transport-Security "max-age=31536000;
        #includeSubDomains" always;


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

        location ~ /\.ht {
                deny all;
        }

}

server {
       listen         80;
       listen    [::]:80;
       server_name    192.168.1.13;
       return         301 https://$server_name$request_uri;
}

Cuplikan konfigurasi di atas memungkinkan penggunaan HTTP/2.0 dengan menambahkan parameter http2 ke semua arahan pendengaran SSL.

Selain itu, bagian terakhir dari kutipan yang disertakan dalam arahan server digunakan untuk mengalihkan semua lalu lintas non-SSL ke host default SSL/TLS. Selain itu, ganti direktif server_name agar sesuai dengan alamat IP atau data DNS Anda (sebaiknya FQDN).

5. Setelah Anda selesai mengedit file konfigurasi default Nginx dengan pengaturan di atas, buat dan daftarkan file dan kunci sertifikat SSL dengan menjalankan perintah di bawah ini.

Isi sertifikat dengan pengaturan khusus Anda sendiri dan perhatikan pengaturan Nama Umum agar sesuai dengan data DNS FQDN Anda atau alamat IP server Anda yang akan digunakan untuk mengakses halaman web.

sudo mkdir /etc/nginx/ssl
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/ssl/nginx.key -out /etc/nginx/ssl/nginx.crt
ls /etc/nginx/ssl/

6. Juga, buat DH cypher yang kuat, yang diubah pada file konfigurasi di atas pada baris instruksi ssl_dhparam, dengan mengeluarkan perintah di bawah ini:

sudo openssl dhparam -out /etc/nginx/ssl/dhparam.pem 2048

7. Setelah kunci Diffie-Hellman dibuat, verifikasi apakah file konfigurasi Nginx ditulis dengan benar dan dapat diterapkan oleh server web Nginx dan mulai ulang daemon untuk mencerminkan perubahan dengan menjalankan perintah di bawah ini.

sudo nginx -t
sudo systemctl restart nginx.service

8. Untuk menguji apakah Nginx menggunakan protokol HTTP/2.0, jalankan perintah di bawah ini. Kehadiran protokol h2 yang diiklankan mengonfirmasi bahwa Nginx telah berhasil dikonfigurasi untuk menggunakan protokol HTTP/2.0. Semua browser modern terkini harus mendukung protokol ini secara default.

openssl s_client -connect localhost:443 -nextprotoneg ''

Langkah 3: Instal Penerjemah PHP 7

Nginx dapat digunakan dengan penerjemah bahasa pemrosesan dinamis PHP untuk menghasilkan konten web dinamis dengan bantuan manajer proses FastCGI yang diperoleh dengan menginstal paket biner php-fpm dari repositori resmi Ubuntu.

9. Untuk mendapatkan PHP7.0 dan paket tambahan yang memungkinkan PHP berkomunikasi dengan server web Nginx, jalankan perintah di bawah ini pada konsol server Anda:

sudo apt install php7.0 php7.0-fpm 

10. Setelah penerjemah PHP7.0 berhasil diinstal pada mesin Anda, jalankan dan periksa daemon php7.0-fpm dengan menjalankan perintah di bawah ini memerintah:

sudo systemctl start php7.0-fpm
sudo systemctl status php7.0-fpm

11. File konfigurasi Nginx saat ini telah dikonfigurasi untuk menggunakan manajer proses PHP FastCGI untuk server konten dinamis.

Blok server yang memungkinkan Nginx menggunakan interpreter PHP disajikan pada kutipan di bawah ini, sehingga tidak diperlukan modifikasi lebih lanjut pada file konfigurasi default Nginx.

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

Di bawah ini adalah tangkapan layar dari instruksi apa yang Anda perlukan untuk menghapus komentar dan memodifikasi file konfigurasi default Nginx asli.

12. Untuk menguji hubungan server web Nginx dengan manajer proses PHP FastCGI, buat file konfigurasi pengujian PHP info.php dengan mengeluarkan perintah di bawah ini dan verifikasi pengaturan dengan mengunjungi file konfigurasi ini menggunakan alamat di bawah ini: http://IP_or domain/info.php.

sudo su -c 'echo "<?php phpinfo(); ?>" |tee /var/www/html/info.php'

Periksa juga apakah protokol HTTP/2.0 diiklankan oleh server dengan mencari baris $_SERVER['SERVER_PROTOCOL'] pada blok Variabel PHP seperti yang diilustrasikan pada tangkapan layar di bawah.

13. Untuk menginstal modul PHP7.0 tambahan gunakan perintah apt search php7.0 untuk menemukan modul PHP dan menginstalnya.

Selain itu, coba instal modul PHP berikut yang mungkin berguna jika Anda berencana menginstal WordPress atau CMS lainnya.

sudo apt install php7.0-mcrypt php7.0-mbstring

14. Untuk mendaftarkan modul tambahan PHP cukup restart daemon PHP-FPM dengan mengeluarkan perintah di bawah ini.

sudo systemctl restart php7.0-fpm.service

Langkah 4: Instal Basis Data MariaDB

15. Terakhir, untuk melengkapi tumpukan LEMP, kita memerlukan komponen database MariaDB untuk menyimpan dan mengelola data situs web.

Instal sistem manajemen basis data MariaDB dengan menjalankan perintah di bawah ini dan mulai ulang layanan PHP-FPM untuk menggunakan modul MySQL untuk mengakses basis data.

sudo apt install mariadb-server mariadb-client php7.0-mysql
sudo systemctl restart php7.0-fpm.service

16. Untuk mengamankan instalasi MariaDB, jalankan skrip keamanan yang disediakan oleh paket biner dari repositori Ubuntu yang akan meminta Anda mengatur kata sandi root, menghapus pengguna anonim, menonaktifkan login root dari jarak jauh dan menghapus database pengujian.

Jalankan skrip dengan mengeluarkan perintah di bawah ini dan jawab semua pertanyaan dengan ya. Gunakan tangkapan layar di bawah ini sebagai panduan.

sudo mysql_secure_installation

17. Untuk mengonfigurasi MariaDB sehingga pengguna biasa dapat mengakses database tanpa hak istimewa sudo sistem, buka antarmuka baris perintah MySQL dengan hak istimewa root dan jalankan perintah di bawah ini pada penerjemah MySQL:

sudo mysql 
MariaDB> use mysql;
MariaDB> update user set plugin=’‘ where User=’root’;
MariaDB> flush privileges;
MariaDB> exit

Terakhir, login ke database MariaDB dan jalankan perintah arbitrer tanpa hak root dengan menjalankan perintah di bawah ini:

mysql -u root -p -e 'show databases'

Itu saja! Sekarang Anda memiliki tumpukan LEMP yang dikonfigurasi pada server Ubuntu 16.10 dan Ubuntu 16.04 yang memungkinkan Anda menerapkan aplikasi web dinamis kompleks yang dapat berinteraksi dengan database.