Pagespeed Modulü ile Birlikte Nginx Kurulumu

Son Güncelleme: 15 Şubat 2020

PageSpeed, Google'ın sunucular ve dolayısıyla internet siteleri için geliştirdiği harika bir optimizasyon aracı olup, örneğin 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ırmakta olup, birçok kişi tarafından tercih edilen, arama motoru optimizasyonu (SEO) için de faydalı olan bir modüldür.

Ön Hazırlık

PageSpeed modulü ile birlikte nginx kurulumu yapmak için öncelikle sisteminizde nginx kuruluysa, nginx'i kaldırmanız, ayrıca nginx'i derlemek için gerekli paketleri yüklemeniz lazım.

$ sudo apt 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
$ sudo apt install build-essential zlib1g-dev libpcre3 libpcre3-dev libssl-dev unzip checkinstall

Kurulum

Kurulumu hızlı ve direkt olarak yapmak için alttaki komutu çalıştırın. Bu komut ile direkt olarak stabil en son versiyona ait yükleme gerçekleştirilecektir. Öte yandan farklı bir nginx versiyonu ile birlikte bu yüklemeyi yapmak isterseniz, --nginx-version latest olan kısmı --nginx-version '1.14.2' gibi değiştirebilirsiniz. Tüm sürümlere Github üzerinden ulaşabilirsiniz.

$ 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
Nginx Kurulumu

Sunucuda PageSpeed Ayarları

Bir önceki aşamada PageSpeed'i kurmuş olsanız da, kurulum aktif herhangi bir Pagespeed ayarı ile gelmemektedir. PageSpeed ayarlarını sizin nginx sunucu bloğunda özel olarak belirtmeniz gerekmektedir.

$ nano /etc/nginx/nginx.conf

Örnek olması için benim tercih ettiğim ayarlar alttaki gibi, daha detaylı incelemek için pagespeed dökümantasyonunu inceleyebilirsiniz. Özetle, alttaki konfigürasyon gereksiz boşlukları kaldırıp, önbellek süresini arttırıyor. Ayrıca görselleri lazyload tekniği ile sayfada gösterip, bu görsellerin formatını değiştirip, görselleri optimize ediyor.

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

pagespeed on;
pagespeed EnableFilters collapse_whitespace;
pagespeed EnableFilters extend_cache;
pagespeed EnableFilters lazyload_images;
pagespeed EnableFilters rewrite_images;

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 çok farklı bir şey yapmadım, bu siteye masaüstünde pagespeed insights 100/100 puan veriyor, eğer hıza önem veriyorsanız, ki vermelisiniz, PageSpeed kurmaktan çekinmeyin.

Ekstra Notlar

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.

Burak Özdemir

Burak Özdemir

Fethiye'de doğdum, Çanakkale Fen Lisesi ve İTÜ Bilgisayar Mühendisliği mezunuyum. Web geliştirme ile uğraşıyorum.