Instal Nginx dengan Ngx_Pagespeed (Optimasi Kecepatan) di Debian dan Ubuntu


Pada artikel terakhir kami, kami menunjukkan cara mempercepat kinerja Nginx dengan Ngx_Pagespeed di CentOS 7. Dalam tutorial ini, kami akan menjelaskan cara menginstal Nginx dengan ngx_pagespeed di sistem Debian dan Ubuntu untuk meningkatkan kinerja situs web Nginx.

Nginx [engine x] adalah server HTTP populer bersumber terbuka dan gratis yang mendukung banyak situs di web: terkenal dengan kinerja dan stabilitasnya yang tinggi. Ia juga berfungsi sebagai proxy terbalik, email generik, dan server proxy TCP/UDP, dan juga dapat digunakan sebagai penyeimbang beban.

Ngx_pagespeed adalah modul Nginx gratis dan sumber terbuka yang dimaksudkan untuk meningkatkan kecepatan situs serta mengurangi waktu buka halaman; ini secara drastis mengurangi waktu yang dibutuhkan pengguna untuk melihat dan berinteraksi dengan konten di situs Anda.

Bacaan yang Disarankan: Instal Mod_Pagespeed untuk Meningkatkan Kinerja Server Apache

Fitur Ngx_pagespeed:

  • Dukungan HTTPS dengan kontrol URL.
  • Pengoptimalan gambar: menghapus metadata, pengubahan ukuran dinamis, kompresi ulang.
  • Minifikasi, penggabungan, penyisipan, dan penguraian CSS dan JavaScript.
  • Sebarisan sumber daya kecil.
  • Menunda pemuatan gambar dan JavaScript.
  • penulisan ulang HTML.
  • Ekstensi seumur hidup cache.
  • Memungkinkan konfigurasi untuk beberapa server dan banyak lainnya.

Langkah 1: Instalasi Nginx dari Sumber

1. Untuk menginstal Nginx dengan ngx_pagespeed dari sumber diperlukan paket berikut untuk diinstal pada sistem.

sudo apt-get install build-essential zlib1g-dev libpcre3 libpcre3-dev unzip

2. Selanjutnya, unduh file sumber Nginx versi terbaru (1.13.2 pada saat penulisan ini) menggunakan perintah wget dan ekstrak file seperti yang ditunjukkan di bawah ini.

mkdir -p ~/make_nginx
cd ~/make_nginx
wget -c https://nginx.org/download/nginx-1.13.2.tar.gz
tar -xzvf nginx-1.13.2.tar.gz

3. Selanjutnya, ambil file sumber ngx_pagespeed dan ekstrak file terkompresi seperti ini.

wget -c https://github.com/pagespeed/ngx_pagespeed/archive/v1.12.34.2-stable.zip
unzip v1.12.34.2-stable.zip

4. Kemudian pindah ke direktori ngx_pagespeed yang telah dibuka ritsletingnya dan unduh pustaka pengoptimalan PageSpeed untuk mengkompilasi Nginx sebagai berikut.

cd ngx_pagespeed-1.12.34.2-stable/
wget -c https://dl.google.com/dl/page-speed/psol/1.12.34.2-x64.tar.gz
tar -xvzf 1.12.34.2-x64.tar.gz

Langkah 2: Konfigurasikan dan Kompilasi Nginx dengan Ngx_Pagespeed

5. Selanjutnya pindah ke direktori nginx-1.13.2, dan konfigurasikan sumber Nginx menggunakan perintah berikut.

cd  ~/make_nginx/nginx-1.13.2
./configure --add-module=$HOME/make_nginx/ngx_pagespeed-1.12.34.2-stable/ ${PS_NGX_EXTRA_FLAGS}

6. Selanjutnya, kompilasi dan instal Nginx sebagai berikut.

make
sudo make install

7. Setelah proses instalasi selesai, jalankan perintah di bawah ini untuk membuat symlink yang diperlukan untuk Nginx.

sudo ln -s /usr/local/nginx/conf/ /etc/nginx
sudo ln -s /usr/local/nginx/sbin/nginx /usr/sbin/nginx

Langkah 3: Membuat File Unit Nginx untuk SystemD

8. Di sini, Anda harus membuat file unit Nginx secara manual karena systemd adalah sistem init pada versi sistem Debian dan Ubuntu yang lebih baru

Pertama, buat file /lib/systemd/system/nginx.service.


sudo vi /lib/systemd/system/nginx.service

Kemudian unduh file layanan sistem NGINX, tempel konfigurasi file unit ke dalam file.

[Unit]
Description=The NGINX HTTP and reverse proxy server
After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/var/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t
ExecStart=/usr/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target

Simpan file dan tutup.

9. Sekarang, jalankan layanan nginx untuk saat ini, dan aktifkan layanan tersebut untuk memulai saat boot sistem dengan menggunakan perintah di bawah ini.

sudo systemctl start nginx
sudo systemctl enable nginx

Penting: Setelah memulai layanan Nginx, Anda mungkin melihat kesalahan seperti yang ditunjukkan pada cuplikan layar di bawah.

systemd[1]: nginx.service: PID file /run/nginx.pid not readable (yet?) after start: No such file or directory 

Untuk mengatasinya, buka file konfigurasi Nginx /etc/nginx/nginx.conf dan tambahkan baris berikut.

#pid  logs/nginx.pid;
to
pid  /run/nginx.pid;

Terakhir restart kembali layanan nginx.

sudo systemctl daemon-reload
sudo systemctl start nginx
sudo systemctl status nginx

Langkah 4: Konfigurasikan Nginx Dengan Modul Pagespeed

10. Sekarang setelah Nginx terinstal dan berjalan di sistem Anda, Anda perlu mengaktifkan modul Ngx_pagespeed. Pertama buat direktori tempat modul akan menyimpan file untuk situs web Anda dan atur izin yang sesuai pada direktori ini sebagai berikut.

sudo mkdir -p /var/ngx_pagespeed_cache
sudo chown -R nobody:nogroup /var/ngx_pagespeed_cache

11. Untuk mengaktifkan modul Ngx_pagespeed, buka file konfigurasi Nginx.

sudo vi /etc/nginx/nginx.conf

Tambahkan baris konfigurasi Ngx_pagespeed berikut dalam blok server.

Pagespeed main settings

pagespeed on;
pagespeed FileCachePath /var/ngx_pagespeed_cache;


Ensure requests for pagespeed optimized resources go to the pagespeed
handler and no extraneous headers get set.

location ~ "\.pagespeed\.([a-z]\.)?[a-z]{2}\.[^.]{10}\.[^.]+" { add_header "" ""; }
location ~ "^/ngx_pagespeed_static/" { }
location ~ "^/ngx_pagespeed_beacon" { }

Catatan: Jika Anda telah menerapkan host virtual nginx apa pun di server, tambahkan arahan kecepatan halaman di atas ke setiap blok server untuk mengaktifkan Ngx_pagespeed di setiap situs.

Berikut ini adalah contoh kerja file konfigurasi Nginx dengan Ngx_pagespeed diaktifkan di host virtual default.

#user  nobody;
worker_processes  1;
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
pid   /run/nginx.pid;

events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';
    #access_log  logs/access.log  main;
    sendfile        on;
    #tcp_nopush     on;
    #keepalive_timeout  0;
    keepalive_timeout  65;
    #gzip  on;
    server {
        listen       80;
        server_name  localhost;
        #charset koi8-r;
        #access_log  logs/host.access.log  main;
	# Pagespeed main settings
	pagespeed on;
	pagespeed FileCachePath /var/ngx_pagespeed_cache;
	# Ensure requests for pagespeed optimized resources go to the pagespeed
	# handler and no extraneous headers get set.
	location ~ "\.pagespeed\.([a-z]\.)?[a-z]{2}\.[^.]{10}\.[^.]+" { add_header "" ""; }
	location ~ "^/ngx_pagespeed_static/" { }
	location ~ "^/ngx_pagespeed_beacon" { }
	location / {
            root   html;
            index  index.html index.htm;
        }

        #error_page  404              /404.html;
        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}
        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}
        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }
    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;
    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}
    # HTTPS server
    #
    #server {
    #    listen       443 ssl;
    #    server_name  localhost;
    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;

    #    ssl_session_cache    shared:SSL:1m;
    #    ssl_session_timeout  5m;
    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers  on;
    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}
}

Simpan dan tutup file.

12. Kemudian periksa apakah sintaks file konfigurasi Nginx sudah bebas error dengan menjalankan perintah di bawah ini, jika sudah benar maka akan terlihat output seperti di bawah ini:

sudo nginx -t

nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

13. Setelah itu restart server Nginx untuk menerapkan perubahan terkini.

sudo systemctl restart nginx

Langkah 5: Menguji Nginx dengan Ngx_pagespeed

14. Sekarang uji apakah Ngx-pagespeed sekarang berfungsi bersama dengan Nginx menggunakan perintah cURL di bawah.

curl -I -p http://localhost

Jika Anda gagal melihat header di atas, kembali ke langkah 10 dan ikuti petunjuk dengan cermat untuk mengaktifkan Ngx-pagespeed dengan langkah-langkah berturut-turut.

Repositori Github Ngx-pagespeed: https://github.com/pagespeed/ngx_pagespeed

Jika Anda ingin mengamankan server web Nginx, kami sarankan untuk membaca tutorial bermanfaat ini: Panduan Utama untuk Mengamankan, Memperkuat, dan Meningkatkan Kinerja Nginx.

Hanya itu saja! Dalam tutorial ini, kami menjelaskan cara menginstal Nginx dengan ngx_pagespeed di Debian dan Ubuntu. Jika Anda memiliki pertanyaan, kirimkan kepada kami menggunakan formulir komentar kami di bawah.