Pagespeed Modulü ile Birlikte Nginx Kurulumu

Pagespeed, Google'ın sunucular ve dolayısıyla internet siteleri için geliştirdiği harika bir optimizasyon aracı olup, CSS ve Javascript dosyalarınız ile resimlerinizi, kısacası neredeyse tüm statik dosyalarınızı, hızlı sunabilmek için olabildiğince en optimum boyuta getirmekte ve HTML çıktılarındaki gereksiz boşlukları kaldırmaktadır.

Öncelikle sisteminizde nginx kuruluysa, nginx'i kaldırmanız lazım.
$ sudo apt-get purge nginx nginx-common
$ sudo rm -rf /etc/nginx /etc/default/nginx /usr/sbin/nginx /usr/local/nginx /usr/local/sbin/nginx /var/run/nginx.pid /var/log/nginx
Kurulumu hızlı ve direkt olarak yapmak için alttaki komutu çalıştırın.
$ sudo apt-get install build-essential zlib1g-dev libpcre3 libpcre3-dev libssl-dev unzip checkinstall
$ bash <(curl -f -L -sS https://ngxpagespeed.com/install) --nginx-version latest
Gelen ilk promptta, alttaki örnek konfigurasyonu yapıştırabilirsiniz. Ancak modüllere dikkat edin, belki sizin ihtiyacınız olup da eksik olan vardır. Devamında çıkan her şeye Y basarak geçebilirsiniz. Alttaki konfigürasyonla, www-data kullanıcısı ve www-data grubunun yönettiği nginx sunucunuz, /usr/sbin/nginx komutu ile yürütülebilecek (execute) olup, pagespeed ile birlikte ssl, gzip, http2 vb. modülleri kapsayacak.
--sbin-path=/usr/sbin/nginx \
--conf-path=/etc/nginx/nginx.conf \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--pid-path=/var/run/nginx.pid \
--lock-path=/var/run/nginx.lock \
--http-client-body-temp-path=/var/cache/nginx/client_temp \
--http-proxy-temp-path=/var/cache/nginx/proxy_temp \
--http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp \
--http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp \
--http-scgi-temp-path=/var/cache/nginx/scgi_temp \
--user=www-data \
--group=www-data \
--with-http_v2_module \
--with-http_ssl_module \
--with-http_realip_module \
--with-http_addition_module \
--with-http_sub_module \
--with-http_flv_module \
--with-http_dav_module \
--with-http_mp4_module \
--with-http_gunzip_module \
--with-http_gzip_static_module \
--with-http_random_index_module \
--with-http_secure_link_module \
--with-http_stub_status_module \
--with-file-aio \
--with-cc-opt='-g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2' \
--with-ld-opt='-Wl,-z,relro -Wl,--as-needed'

Sunucunuzun hızına göre, 5-10 dakika gibi sürede nginx, pagespeed ile birlikte kurulmuş olacak. Eğer derleme esnasında internal compiler error gibi bir hata alırsanız, bilin ki bu memory kaynaklı bir hata, swap'ı aktif etmediyseniz, swap'ı aktif ederek bunu aşabilirsiniz.

Pagespeed Modülü ile Birlikte Nginx Kurulumu
Yalnız bu yapılandırma sizin için Pagespeed ayarlarını yapmıyor, sizin bunu nginx sunucu bloğunda belirtmeniz lazım.

$ nano /etc/nginx/nginx.conf

Örnek olması için benim tercih ettiğim ayarları, ne yaptıkları ile birlikte altta yazdım, daha detaylı incelemek için pagespeed dökümantasyonunu inceleyebilirsiniz.

http {
server {
   listen          80;
    server_name     siteniz.com;

pagespeed on;
pagespeed EnableFilters collapse_whitespace; # Sayfadan boşlukları kaldırır, böylece sitenin yüklenmesi için gerekli olan bit sayısı azalır.
pagespeed EnableFilters extend_cache;  # Önbellek sürelerini arttırır.
pagespeed EnableFilters make_google_analytics_async;  # Google Analitik isteğini asenkron işler
pagespeed EnableFilters lazyload_images;  # Tüm resimleri direkt olarak yüklemektense, yüklemesi gerektiği sayfa kısmı için yükler
pagespeed EnableFilters rewrite_images; # Resimleri optimum şekilde düzenler, resimleri sıkıştırıp, gerekli boyutlara boyutlarını indirger, yüksek RAM ihtiyacı bulunmaktadır. (inline_images, recompress_images, convert_to_webp_lossless ve resize_images modüllerini kapsamaktadır.)

location ~ "\.pagespeed\.([a-z]\.)?[a-z]{2}\.[^.]{10}\.[^.]+" {
add_header "" "";
}
location ~ "^/pagespeed_static/" { }
location ~ "^/ngx_pagespeed_beacon$" { }
}
}
Son olarak, tüm bu işlemlerden sonra nginx'i başlatmak için alttaki komutu kullanabilirsiniz.
$ sudo /usr/sbin/nginx
Durdurmak için,
$ sudo /usr/sbin/nginx -s stop
Konfigürasyonu tekrar yüklemek için,
$ sudo /usr/sbin/nginx -s reload
Tabii bir de yapılandırmak için indirdiğiniz dosyaları silmeyi unutmayın.
$ sudo rm -R ~/nginx-custom
Burada anlattıklarımdan farklı bir şey yapmadım, bu siteye masaüstünde pagespeed insights 92/100 puan veriyor, eğer hıza önem veriyorsanız, ki vermelisiniz, pagespeed kurmaktan çekinmeyin.

Ayrıca, eğer web fontlarından birisini kullanıyorsanız, Google Web Fonts gibi, webfontloader paketini mutlaka inceleyin ve sisteminizde uygulayın.

Son bir not daha, bu yöntem ile nginx'i yüklerseniz, güncellemek için üstteki işlemleri en baştan yapmanız lazım. Ayrıca sistemi her yeniden başlattığınızda ($ shutdown -r now) yine kendinizin nginx'i başlatması gerekiyor. Ancak bu problemi biraz daha karmaşık işler için kullanılan upstart ile aşmak mümkün olduğu gibi, sadece bir dosyaya eklenebilecek bir satır ile aşmak da mümkün.

@reboot anahtar kelimesini kullanarak bir cron görevi ekleyerek, cron yeniden çalışmaya başladığında bir komut çalıştırabilirsiniz.
$ su -
$ crontab -e
Karşınıza çıkan kısımda(eğer ilk defa açtıysanız sorduğu soruda kullanmak istediğiniz editörü seçin) alttaki kısmı ekleyip, kaydedin.
@reboot /usr/sbin/nginx
Alternatif olarak da, /etc/rc.local dosyasını düzenleyip, yine /usr/sbin/nginx komutunu ekleyebilirsiniz.

Artık sistemi yeniden başlattığınızda nginx de otomatik olarak başlayacak.