memasang module pagespeed nginx

Memasang module pagespeed pada Nginx di Linux Centos 8

8 min read

Panduan Memasang module pagespeed pada Nginx di Centos 8 ini saya buat didasari oleh kecenderungan saya yang sering bolak-balik inul (install ulang) vps. Jadi biar saya enggak ribet mengunjungi berbagai macam situs untuk referensi pemasangan module ini, saya buat aja di artikel versi saya sendiri.

Ngx_pagespeed adalah module pagespeed yang didesain khusus untuk web server NGINX, berbeda dengan module pagespeed pada Apache yang sudah ada precompiled binary-nya, untuk memasang module ngx_pagespeed ini harus melalui proses kompilasi melalui kode sumbernya terlebih dahulu.

Module ngx_pagespeed ini sangat bagus untuk mengoptimasi website secara Otomatis, tanpa harus install plugin sana sini, tinggal terapin beberapa kode aja melalui server sudah otomatis teroptimasi. Untuk melihat apa saja fitur yang disediakan oleh module ini silahkan kunjungi halaman disini.

Daftar Isi

  1. Prasyarat
  2. Pemasangan Dependensi
  3. Mengunduh Module Pagespeed
  4. Mengunduh Nginx
  5. Kompilasi Nginx & Pagespeed
  6. Konfigurasi Nginx & Pagespeed

Prasyarat Memasang Module Pagespeed

Panduan ini saya buat menggunakan sistem operasi Distro Linux Centos 8 pada VPS Vultr. Untuk itu pastikan sebelum mengikuti panduan ini, kamu sudah mengikuti prasyarat berikut ini :

  • Memiliki linux server Centos 8
  • Memiliki akses super user / root
  • Mengerti cara menggunakan Nginx
  • Mengerti cara mengoperasikan perintah cli (command line interface) pada Linux.

Catatan: Perlu diketahui jika Kamu memasang Nginx dengan module pagespeed melalui kode sumber dibawah ini. Setiap ada versi terbaru yang keluar, kamu perlu melakukan pemasangan ulang mulai dari langkah 1 hingga langkah terakhir untuk melakukan upgrade dengan patch terbaru.

Langkah 1 : Pemasangan Dependensi Yang Dibutuhkan

Untuk melakukan kompilasi module ngx_pagespeed pada nginx di centos 8, pastikan kita sudah memasang software yang dibutuhkan untuk melakukan kompilasi pada Centos 8 dengan menjalankan perintah dibawah ini.

dnf -y install gcc cmake make unzip wget gcc-c++ pcre-devel zlib-devel libuuid-devel openssl-devel

perintah dibawah berfungsi untuk membuat dummy folder untuk mengumpulkan berkas dan folder ngx_pagespeed & nginx pada satu folder biar terkesan rapi saja.

mkdir -p ~/ngx_pagespeed
cd ~/ngx_pagespeed

Langkah 2 : Mengunduh Module Pagespeed

Untuk memasang module pagespeed kita perlu mengunduhnya terlebih dahulu sebelum melakukan kompilasi pada nginx. Buka terminal dan jalankan perintah berikut ini.

Perintah dibawah ini untuk mendeklarasikan variabel versi ngx_pagespeed guna untuk memudahkan dalam menjalankan perintah lainnya tanpa harus mengetikkan versi module, untuk melihat versi terbaru dari module ngx_pagespeed bisa dilihat disini

VERSI_NPS=1.13.35.2-stable

Setelah variabel dideklarasi, sekarang saatnya mengunduh module ngx_pagespeed dengan perintah

wget https://github.com/apache/incubator-pagespeed-ngx/archive/v${VERSI_NPS}.zip

Kemudian ekstrak filenya dengan perintah

unzip v${VERSI_NPS}.zip

Setelah itu kembali ke folder awal dengan mengetikkan perintah

cd ~

Kemudian jalankan perintah ini untuk mendeklarasikan variabel path untuk folder nps

folder_nps=$(find . -name "*pagespeed-ngx-${VERSI_NPS}" -type d)

Setelah itu, jalankan perintah dibawah untuk masuk ke folder module pagespeed

cd "$folder_nps"

Jika sudah, jalankan perintah dibawah untuk mendeklarasikan versi psol (Pagespeed Optimization Libraries).

NPS_STABLE=${VERSI_NPS/stable/}

Kemudian, kita akan mendeklarasikan variabel link_psol yang akan digunakan untuk mengunduh psol didalam module ngx_pagespeed

link_psol=https://dl.google.com/dl/page-speed/psol/${NPS_STABLE}.tar.gz

lalu jalankan perintah ini

[ -e scripts/format_binary_url.sh ] && link_psol=$(scripts/format_binary_url.sh PSOL_BINARY_URL)

Kemudian jalankan perintah dibawah ini untuk mulai mengunduh psol

wget ${link_psol}

Kemudian ekstrak file psol menggunakan perintah ini

tar -xzvf $(basename ${link_psol})

Sampai disini kita sudah berhasil mengunduh module ngx_pagespeed dan psol yang akan dikompilasi bersama nginx.

Langkah 3 : Mengunduh NGINX

Jalankan perintah dibawah ini untuk memasuki kembali folder dummy

cd ~/ngx_pagespeed

Kemudian kita akan mendeklarasikan variabel untuk versi nginx. Untuk melihat versi terbaru dari nginx klik disini.

VERSI_NGINX=1.18.0

Lalu jalankan perintah dibawah untuk mulai mengunduh nginx

wget http://nginx.org/download/nginx-${VERSI_NGINX}.tar.gz

Ekstrak berkas nginx yang sudah diunduh

tar -xvzf nginx-${VERSI_NGINX}.tar.gz

Nah pada tahap ini kita sudah selesai mengunduh NGINX yang akan dikompilasi dengan module ngx_pagespeed.

Langkah 4 : Kompilasi & Memasang module pagespeed dan nginx

Pada tahap ini kita akan melakukan kompilasi module ngx_pagespeed dengan nginx. Selain itu saya juga menambahkan module http2 dan ssl pada nginx dari kode sumber ini, penambahan fitur tersebut menyebabkan proses kompilasi memakan resource ram lebih tinggi.

Untuk itu, bagi kamu yang memiliki vps server dengan ram dibawah 2GB, saya rekomendasikan untuk mengikuti panduan membuat swap file di linux.

Silahkan masuk ke folder nginx yang sudah di ekstrak tadi

cd ~/ngx_pagespeed/nginx-${VERSI_NGINX}

Kemudian jalankan perintah dibawah ini untuk mempersiapkan module yang akan dikompilasi

./configure --add-module=$HOME/$folder_nps --user=nobody --group= nobody --pid-path=/var/run/nginx.pid --with-http_ssl_module --with-http_v2_module ${PS_NGX_EXTRA_ FLAGS}

Kemudian jalankan perintah dibawah untuk mengkompilasi module pagespeed dan nginx

make

Maka proses kompilasi akan dimulai. Tunggu saja, karena kecepatan proses kompilasi tergantung spesifikasi server yang kamu miliki. Jika sudah selesai, tampilannya akan seperti ini

memasang module pagespeed nginx

Kemudian pasang nginx yang sudah di kompilasi menggunakan perintah

make install

Jika sudah, maka tampilan ketika proses pemasangan selesai akan tampak seperti gambar dibawah ini

memasang module pagespeed nginx

Setelah Nginx berhasil dipasang, kamu perlu melakukan symlink agar bisa menjalankan nginx seperti biasa

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

Lalu buat file baru pada /etc/init.d/nginx, dan isikan dengan baris dibawah ini

#!/bin/sh
#
# nginx - this script starts and stops the nginx daemon
#
# chkconfig:   - 85 15
# description:  NGINX is an HTTP(S) server, HTTP(S) reverse \
#               proxy and IMAP/POP3 proxy server
# processname: nginx
# config:      /etc/nginx/nginx.conf
# config:      /etc/sysconfig/nginx
# pidfile:     /var/run/nginx.pid

# Source function library.
. /etc/rc.d/init.d/functions

# Source networking configuration.
. /etc/sysconfig/network

# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0

nginx="/usr/sbin/nginx"
prog=$(basename $nginx)

NGINX_CONF_FILE="/etc/nginx/nginx.conf"

[ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx

lockfile=/var/lock/subsys/nginx

make_dirs() {
   # make required directories
   user=`$nginx -V 2>&1 | grep "configure arguments:.*--user=" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -`
   if [ -n "$user" ]; then
      if [ -z "`grep $user /etc/passwd`" ]; then
         useradd -M -s /bin/nologin $user
      fi
      options=`$nginx -V 2>&1 | grep 'configure arguments:'`
      for opt in $options; do
          if [ `echo $opt | grep '.*-temp-path'` ]; then
              value=`echo $opt | cut -d "=" -f 2`
              if [ ! -d "$value" ]; then
                  # echo "creating" $value
                  mkdir -p $value && chown -R $user $value
              fi
          fi
       done
    fi
}

start() {
    [ -x $nginx ] || exit 5
    [ -f $NGINX_CONF_FILE ] || exit 6
    make_dirs
    echo -n $"Starting $prog: "
    daemon $nginx -c $NGINX_CONF_FILE
    retval=$?
    echo
    [ $retval -eq 0 ] && touch $lockfile
    return $retval
}

stop() {
    echo -n $"Stopping $prog: "
    killproc $prog -QUIT
    retval=$?
    echo
    [ $retval -eq 0 ] && rm -f $lockfile
    return $retval
}

restart() {
    configtest || return $?
    stop
    sleep 1
    start
}

reload() {
    configtest || return $?
    echo -n $"Reloading $prog: "
    killproc $nginx -HUP
    RETVAL=$?
    echo
}

force_reload() {
    restart
}

configtest() {
  $nginx -t -c $NGINX_CONF_FILE
}

rh_status() {
    status $prog
}

rh_status_q() {
    rh_status >/dev/null 2>&1
}

case "$1" in
    start)
        rh_status_q && exit 0
        $1
        ;;
    stop)
        rh_status_q || exit 0
        $1
        ;;
    restart|configtest)
        $1
        ;;
    reload)
        rh_status_q || exit 7
        $1
        ;;
    force-reload)
        force_reload
        ;;
    status)
        rh_status
        ;;
    condrestart|try-restart)
        rh_status_q || exit 0
            ;;
    *)
        echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
        exit 2
esac

Simpan baris tersebut, kemudian berikan permission agar file tersebut bisa diakses.

chmod +x /etc/init.d/nginx

Kemudian uji coba jalankan Nginx dengan perintah dibawah ini

systemctl start nginx
systemctl enable nginx

Langkah 5 : Konfigurasi Nginx & Pagespeed

Sebelum menambahkan baris konfigurasi untuk mengaktifkan module pagespeed pada nginx, kamu perlu membuat folder cache untuk pagespeed terlebih dahulu

mkdir -p /var/cache/ngx_pagespeed
chown -R nobody:nobody /var/cache/ngx_pagespeed

Setelah itu buat file baru pada /etc/nginx/site.conf.d/pagespeed.conf, dengan perintah dibawah ini

mkdir -p /etc/nginx/site.conf.d
nano /etc/nginx/site.conf.d/pagespeed.conf

Kemudian isi baris konfigurasi pagespeed dibawah ini

pagespeed on;                                                                      
pagespeed FileCachePath "/var/cache/ngx_pagespeed/";                               
pagespeed EnableCachePurge on;                                                     
pagespeed StatisticsPath /ngx_pagespeed_statistics;                                
pagespeed MessagesPath /ngx_pagespeed_message;                                     
pagespeed ConsolePath /pagespeed_console;                                 
pagespeed AdminPath /cache_admin;                                         

pagespeed RewriteLevel CoreFilters;
pagespeed EnableFilters remove_quotes;
pagespeed EnableFilters combine_css;
pagespeed EnableFilters combine_javascript;
pagespeed EnableFilters rewrite_images;
pagespeed EnableFilters insert_dns_prefetch;
pagespeed EnableFilters hint_preload_subresources;
pagespeed DisableFilters prioritize_critical_css;
pagespeed EnableFilters inline_css;
pagespeed EnableFilters sprite_images;
pagespeed EnableFilters dedup_inlined_images;
pagespeed EnableFilters lazyload_images;
pagespeed EnableFilters defer_javascript;
pagespeed EnableFilters rewrite_javascript;
pagespeed EnableFilters responsive_images,resize_images;
pagespeed EnableFilters collapse_whitespace,remove_comments;
pagespeed EnableFilters make_show_ads_async;
pagespeed EnableFilters extend_cache;
pagespeed EnableFilters make_google_analytics_async;
pagespeed EnableFilters in_place_optimize_for_browser;
pagespeed HttpCacheCompressionLevel 9;

pagespeed Disallow "*/wp-admin/*";
location /ngx_pagespeed_statistics {}                           
location /ngx_pagespeed_message {}                              
location /pagespeed_console {}                         
location ~ ^/cache_admin {}                            
                                                                
location ~ "\.pagespeed\.([a-z]\.)?[a-z]{2}\.[^.]{10}\.[^.]+" { 
    add_header "" "";                                           
}                                                               

Setelah itu simpan kemudian, lalu tambahkan baris dibawah ini pada konfigurasi server block nginx yang kamu miliki.

include /etc/nginx/site.conf.d/pagespeed.conf;

Uji coba apakah konfigurasi yang barusan dilakukan ada error atau tidak dengan menjalankan perintah.

nginx -t

Jika hasil dari perintah diatas seperti ini, maka konfigurasi sudah berhasil.

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

Cek kembali dengan mengakses halaman menggunakan perintah curl

curl -I http://localhost
memasang module pagespeed nginx

Hasil dari perintah diatas menujukkan versi X-Page-Speed, yang artinya Module Pagespeed & Nginx sudah berhasil dikonfigurasi 🙂

Referensi :
https://www.modpagespeed.com
https://www.nginx.com

Gravatar Image
Linux & Digital Marketing Enthusiast. Memiliki hobi untuk berbagi informasi dan wawasan melalui tulisan sederhana.

Leave a Reply

Your email address will not be published. Required fields are marked *