Centos 6 Nginx Server Üzerine Google PageSpeed Modül Kurulumu
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.
Kısaca Faydaları Nelerdir?
- Sayfaların HTML çıktılarını ve javascript (js) ve css dosyaları gibi static içerikleri gzip yöntemi ile sıkıştırabilirsiniz.
- Tüm js ve css dosyalarınızı birleştirip tek css (combine_css filter) ve tek js (combine_javascript filter) dosyası haline getirebilirsiniz.
- Tüm javascript ve css dosyalarınızı sıkıştırabilirsiniz. (rewrite_javascript and rewrite_css filter)
- Resim dosyalarınızı kalitelerini bozmadan sıkıştırabilirsiniz. (Şu an için sanırım .jpg ve .png için çalışıyor)
- Google analytics veya adsense apilerini sayfalarınızda kullanıyorsanız bu içeriklerin asenkron olarak yüklenmesini sağlayabilirsiniz
- 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.
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


teşekkürler ali bey. Bu konuda kaynak sınırlı görünüyor. İleride bu eklenti için karşılaşacağınız gelişmeleri ve sorunları yazmanızı rica ederim
Ben teşekkür ederim. Elimden geldiğince konuyu güncel tutmaya çalışacağım.