Centos 6 Nginx Server Üzerine Google PageSpeed Modül Kurulumu

nginx pagespeed

Merhabalar bu yazımda sizlere Centos 6.X sunucu üzerinde kurulu olan Nginx web servisine Google firmasının geliştirmiş olduğu pagespeed modülünü kurup nasıl aktif hale getireceğinizi anlatacağım. Öncelikle mod_pagespeed nedir bunu anlatmakla işe başlayalım

PageSpeed Nedir?

Pagespeed , Google firması tarafından geliştirilen nginx ve apache servislerine entegre edebileceğiniz açık kaynak kodlu bir ek modüldür. Amaç web sayfalarının daha hızlı açılması, böylece ziyaretçilere daha kaliteli web deneyimleri sunmayı sağlamaktır. Bunu da web sayfalarınızda kullandığınız kaynakları otomatik ederek gerçekleştirir. Detaylı bilgi için firmanın eklenti kurulum ve aktivasyon dökümanlarına aşağıdaki adresten ulaşabilirsiniz.

google pagespeed

Kısaca Faydaları Nelerdir?

  1. Sayfaların HTML çıktılarını ve javascript (js) ve css dosyaları gibi static içerikleri gzip yöntemi ile sıkıştırabilirsiniz.
  2. Tüm js ve css dosyalarınızı birleştirip tek css (combine_css filter) ve tek js (combine_javascript filter) dosyası haline getirebilirsiniz.
  3. Tüm javascript ve css dosyalarınızı sıkıştırabilirsiniz. (rewrite_javascript and rewrite_css filter)
  4. Resim dosyalarınızı kalitelerini bozmadan sıkıştırabilirsiniz. (Şu an için sanırım .jpg ve .png için çalışıyor)
  5. Google analytics veya adsense apilerini sayfalarınızda kullanıyorsanız bu içeriklerin asenkron olarak yüklenmesini sağlayabilirsiniz
  6. inline css tanımlarını style=”text-align :center;” tekbir css altında toplayabilirsiniz.

Bunlar sadece aklıma gelen filtrelerden birkaçı tüm liste için aşağıdaki linki incelemenizi tavsiye ederim.

google pagespeed filters

PageSpeed Kurulum

Edit : Centos üzerinde otomatik kurulum yapması için hazırladığım bash script’e github adresimden ulaşabilirsiniz. https://github.com/aligokayduman/ngx_pagespeed_bashscript  manuel kurulum için yazıyı okumaya devam edin.

İlk önce varsa işletim sistemi güncellemelerini yapalım

sudo yum update
sudo yum upgrade

Nginx için binary kod olarak derlenmiş bir pagespeed modülü olmadığından modülün kaynak kodlarını indirip kendimiz derleme işlemini yapmalıyız kuruluma geçmeden önce c/c++ compiler kütüphanelerimizi kuralım

cd ~
sudo yum install gcc-c++ pcre-devel zlib-devel make unzip
sudo rpm --import https://linux.web.cern.ch/linux/scientific6/docs/repository/cern/slc6X/i386/RPM-GPG-KEY-cern
sudo wget -O /etc/yum.repos.d/slc6-devtoolset.repo https://linux.web.cern.ch/linux/scientific6/docs/repository/cern/devtoolset/slc6-devtoolset.repo
sudo yum install devtoolset-2-gcc-c++ devtoolset-2-binutils

Not : Centos 6 için configürasyon parametresi aşağıdadır;

PS_NGX_EXTRA_FLAGS=”–with-cc=/opt/rh/devtoolset-2/root/usr/bin/gcc” bu parametreyi derleme parametresi olarak ./configure satırına eklemeniz gerekmektedir. yazının devamında bunu göreceksiniz. daha detaylı bilgi için google dökumanlara bakabilirsiniz.

google pagespeed build parameter for centos 6.X

İlk olarak pagespeed modülün kaynak kodlarını indirelim

sudo wget https://github.com/pagespeed/ngx_pagespeed/archive/release-1.11.33.4-beta.zip
sudo unzip release-1.11.33.4-beta.zip
cd ngx_pagespeed-release-1.11.33.4-beta/
sudo wget https://dl.google.com/dl/page-speed/psol/1.11.33.4.tar.gz
sudo tar -xzvf 1.11.33.4.tar.gz

satırlardaki 1.11.33.4 sürüm numarası yerine çıkan son sürümün numarasını yazarak güncel halini yüklemenizi öneririm. en son sürüm bilgisini aşağıdaki linkten öğrenebilirsiniz. 24.11.2016 tarihi itibari ile çıkan son sürüm 1.11.33.4 dür.

google pagespeed release notes

Şimdi mevcut nginx sürümünü öğrenip kaynak kodlarını indirelim ve pagespeed modül desteği ile tekrardan derleyelim. nginx in sürümünü öğrenmek için nginx -V komutunu kullanabilirsiniz şuna benzer bir çıktı alacaksınız.

[[email protected] ~]$ nginx -V
nginx version: nginx/1.8.1
built by gcc 4.8.2 20140120 (Red Hat 4.8.2-15) (GCC)
built with OpenSSL 1.0.1e-fips 11 Feb 2013
TLS SNI support enabled
configure arguments: –prefix=/usr/share/nginx –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 –http-client-body-temp-path=/var/lib/nginx/tmp/client_body –http-proxy-temp-path=/var/lib/nginx/tmp/proxy –http-fastcgi-temp-path=/var/lib/nginx/tmp/fastcgi –http-uwsgi-temp-path=/var/lib/nginx/tmp/uwsgi –http-scgi-temp-path=/var/lib/nginx/tmp/scgi –pid-path=/var/run/nginx.pid –lock-path=/var/lock/subsys/nginx –user=nginx –group=nginx –with-file-aio –with-ipv6 –with-http_ssl_module –with-http_spdy_module –with-http_realip_module –with-http_addition_module –with-http_auth_request_module –with-http_xslt_module –with-http_image_filter_module –with-http_geoip_module –with-http_sub_module –with-http_dav_module –with-http_flv_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_degradation_module –with-http_stub_status_module –with-http_perl_module –with-mail –with-mail_ssl_module –with-pcre –with-google_perftools_module –with-debug –with-cc-opt=’-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector –param=ssp-buffer-size=4 -m64 -mtune=generic’ –with-ld-opt=’ -Wl,-E’

Bu çıktıdan nginx sürümünün 1.8.1 olduğunu anlıyoruz. Sizde aynı işlemi yaparak sürüm numaranızı öğrenin. Ayrıca configure arguments: satırındaki yapılandırma parametrelerini kopyalayıp bir yere kaydedelim bu yapılandırma ayarlarını nginx servisini yeniden derleme yapacağımız sırada kullanacağız.

Nginx kaynak kodlarını öğrendiğimiz sürüm numarasına göre indirelim

sudo wget http://nginx.org/download/nginx-1.8.1.tar.gz
sudo tar -xvzf nginx-1.8.1.tar.gz
cd nginx-1.8.1/

Şimdi daha evvel kopyaladığımız mevcut yapılandırma parametreleri’ne (configure arguments) pagespeed modül parametrelerini ekleyip tekrar derleme işlemi yapacağız yani;

./configure (+) kopyaladığınız configure arguments (+) –add-module=$HOME/ngx_pagespeed-release-1.11.33.4-beta (+) –with-cc=/opt/rh/devtoolset-2/root/usr/bin/gcc

Not: 1.11.33.4 numaraları yerine indirdiğiniz pagespeed modül numaralarını yazınız.

sudo ./configure --prefix=/usr/share/nginx --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 --http-client-body-temp-path=/var/lib/nginx/tmp/client_body --http-proxy-temp-path=/var/lib/nginx/tmp/proxy --http-fastcgi-temp-path=/var/lib/nginx/tmp/fastcgi --http-uwsgi-temp-path=/var/lib/nginx/tmp/uwsgi --http-scgi-temp-path=/var/lib/nginx/tmp/scgi --pid-path=/var/run/nginx.pid --lock-path=/var/lock/subsys/nginx --user=nginx --group=nginx --with-file-aio --with-ipv6 --with-http_ssl_module --with-http_spdy_module --with-http_realip_module --with-http_addition_module --with-http_auth_request_module --with-http_xslt_module --with-http_image_filter_module --with-http_geoip_module --with-http_sub_module --with-http_dav_module --with-http_flv_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_degradation_module --with-http_stub_status_module --with-http_perl_module --with-mail --with-mail_ssl_module --with-pcre --with-google_perftools_module --with-debug --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic' --with-ld-opt=' -Wl,-E' --add-module=$HOME/ngx_pagespeed-release-1.11.33.4-beta --with-cc=/opt/rh/devtoolset-2/root/usr/bin/gcc

Eyer checking for GD library … not found veya ./configure: error: the HTTP image filter module requires the GD library benzeri hatalar alırsanız büyük ihtimal ile bahsedilen kütüphane yüklü değildir hata veren kütüphanelerin
hepsini aşağıdaki komutu kullanarak yükleyin

sudo yum install gd-devel

hata almanız durumunda yüklemeniz gerekebilecek bazı kütüphaneler

 

sudo yum install openssl-devel
sudo yum install libxslt-devel 
sudo yum install libxml2-devel
sudo yum install gd-devel
sudo yum install perl-ExtUtils-Embed
sudo yum install geoip-devel
sudo yum install google-perftools-devel

Derleme parametrelerini tanımladık artık derleme işlemini yapabiliriz.

sudo make
sudo make install

Hata almadıysanız eyer kurulumu sorunsuz bir şekilde yaptınız demektir. nginx servisi yeniden başlatabiliriz.

sudo service nginx restart

Eyer nginx çalıştırıldığında unknown directive “ssl” hatası alırsanız yapılandırma parametrelerine –with-openssl=[path] parametresi ile openssl kütüphanesinin yolunu gösterin ve sonraki adımları tekrar yapın
örnek: –with-openssl=/usr/lib64/openssl

Tebrikler Nginx servisinize Google PageSpeed modülünü eklediniz. Servisi sunucuya ilk defa kurduysanız başlangıca eklemeyi unutmayın.

sudo chkconfig nginx on

Artık Nginx servis ayarları dosyasında PageSpeed modülünü aktif hale getirebilirsiniz.

sudo nano /etc/nginx/nginx.conf

server{
pagespeed on;
pagespeed FileCachePath /var/ngx_pagespeed_cache;
location ~ “\.pagespeed\.([a-z]\.)?[a-z]{2}\.[^.]{10}\.[^.]+” { add_header “” “”; }
location ~ “^/ngx_pagespeed_static/” { }
location ~ “^/ngx_pagespeed_beacon” { }
}

Not: Nginx vhost ayarlarında her bir site için server {} bloğunda pagespeed modülü yukarıdaki şekilde aktifleştirebileceğiniz gibi tüm servisler için http {} bloğunda da aktifleştirebilirsiniz. Daha detaylı bilgi için google dökumanları inceleyin. Not: Yukarıdaki satırlarda herhangi bir değişiklik yapmanıza gerek yoktur aynı şekilde kullanabilirsiniz.

google pagespeed configurations

 

Summary
Centos 6 Nginx Server Üzerine Google PageSpeed Modül Kurulumu
Article Name
Centos 6 Nginx Server Üzerine Google PageSpeed Modül Kurulumu
Description
Centos sunucu ve Nginx servis üzerine Google PageSpeed modülünün kurulumu, aktif edilmesi, ne işe yaradığı ve artıları detaylı bir şekilde anlatılmaktadır.
Author
Publisher Name
aligokayduman.com
Publisher Logo
2 Comments

Add a Comment

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir