Centos 7: Nginx + Pagespeed + Php 7 (php-fpm) + OpCache + MariaDB kurulumu 3

Centos 7 üzerine php 7 (yada henüz scriptleri desteklemiyorsa php 5.6 yi) FPM/FastCGI modunda, OpCache, MariaDB ve nginx ile pagespeed ‘i derleyerek güçlü bir alt yapı hazırlayacağız yani herkesin beklediği anlatımı yapacağım.

Php 7 gerçekten çok güçlü ve hızlı bir yapı ile geliyor, özellikle OpCache desteği ile %50 lik bir hız artışı gözlemledim. Ancak bazı scriptler php 7 desteği malesef sunmamakta, genelde sorun veritabanı bağlantısı ve sorguları eski olan scriptler de çıkmakta. Bu yüzden anlatıma ayrı olarak php 5.6 yıda dahil edeceğim, istediğiniz versiyonu kurarak sunucunuzu hazırlayabilirsiniz.

Kuruluma başlamadan hangi php versiyonunu kuracağınızı seçmelisiniz, bir versiyonu kurduktan sonra üzerine diğer php versiyonunu kuramıyorsunuz malesef. Ancak yinede endişe etmeyin, konunun altında varolan php versiyonunu silmeyi ve diğer versiyonu nasıl kuracağınızıda anlatacağım.

Öncelikle yeni kurulmuş centos 7 (ben 7.2 versiyonunda test ettim) sunucumuza ssh ile bağlanıyoruz ve aşağıdaki kodları sırası ile çalıştırıyoruz.

Sonrasında php 7, OpCache ve MariaDB kurulumu için aşağıdaki kodu çalıştırın (php ‘nin diğer versiyonlarını kuracaksanız sonraki adımlara geçin):

Eğer Php 5.6 versiyonunu kurmak istiyorsanız aşağıdaki kodu çalıştırın.

Yada php 5.5 versiyonu için aşağıdaki kodu çalıştırın:

Bu kurulumda (daha doğrusu depoda) sadece yukardaki 3 php versiyonu desteklenmektedir. Bunun bilincinde olarak kuruluma başlayın yada anlatıma devam edin.

Yukardaki program kurulumları bittikten sonra uygulamaları açılış için çalıştıralım ve başlatalım: (Sırası ile çalıştırın)

Php için gerekli düzenlemeleri yapalım

Açalım: /etc/php.ini (ssh ile zor olacaktır, winscp ile ssh bağlantısı yaparak dosyayı açın, daha kolay düzenleme yapabilirsiniz)

Bulun:

Değiştirin:

Açalım: /etc/php-fpm.d/www.conf

Aşağıdaki ayarları bulun ve tek tek düzenleyin:

yukardaki ayarları bulduktan sonra sırası ile tek tek aşağıdaki gibi değiştirin:

Session klasörünü oluşturup kullanıcı izinlerini verelim:

Sonrasında kaydedin ve php-fpm ye restart atın:

Nginx + Pagespeed kurulumu

Nginx i kaynağından derlememiz gerek, yani önceki kurulumlarımda nginx’i yum ile kuruyordum ancak pagespeed kurulumunu üzerine yaparken hatalar ile karşılaşıyoruz. Bu yüzden önceden nginx kurulmuş ise sisteminizde kaldırarak aşağıdaki derleme ile kurulumu yapmanızı tavsiye ediyorum. Ancak öncesinde mutlaka nginx konfigürasyon dosyalarının yedeğini alın. Önceden tanımlı siteleriniz ve ayarları için kaybetme riskini göze alamayız.

Bu kurulumda suanki Nginx stable versiyonu olan 1.10.1 sürümünü anlatacağım. Ancak siz bu dokümana ulaştığınızda yeni versiyon çıkmış olabilir (stable). Böyle bir durumda aşağıda ki anlatımda yer alan nginx versiyon numarası yerini, yenisi ile değiştirerek kurulumu devam ettirebilirsiniz (Nginx versiyon kontrolü).

Aşağıdaki adımları satır satır sırası ile çalıştırın (tek tek)

Şimdi bu adıma geldiğinizde PageSpeed optimizasyon kütüphanesini (ngx_pagespeed) indirmemiz gerekli. Yeni versiyonu çıkabilir diye bu bölümü yine ayrı anlatıyorum. Buraya girerek yeni versiyon varmı diye bakın, varsa versiyon numarasını aşağıdaki komutları çalıştırırken değiştirin ve o şekilde uygulayın:

Buraya kadar sorun yoksa iyi, devam edelim fazla bir yolumuz kalmadı.

Nginx ve PageSpeed modülünü derleyelim

Aşağıdaki adımları izleyerek Nginx ile PageSpeed modülünü derleyerek çalışır duruma getirelim. Öncelikle nginx klasörümüze giriyoruz, derlemek için.

Sonrasında aşağıdaki komutu çalıştırarak derlemeye başlayalım.

Şimdi derlemeye başlayabiliriz. Aşağıdaki komutları sırası ile çalıştırın, ancak bir önceki işlemin bitmesini bekleyin.

Buraya kadar hatasız geldiyseniz nginx ve PageSpeed kurulumu tamamlanmış demektir. Şimdi nginx komut yardımı ile başlatılıp, çalıştırılması yada sunucu yeniden çalıştırıldığında otomatik açılması için kullanacağımız systemctl dosyasını oluşturalım.

Aşağıdaki komutu çalıştırın:

Açılan ekrana aşağıdakileri yapıştırarak nano programını kaydedip çıkın (ctrl + x sonrasında y + enter)

Aşağıdaki adımları sırası ile uygulayarak Nginx i aktif ve çalışır konuma getirelim:

PageSpeed Modülünü Nginx konfigürasyon dosyasında aktif edelim:

Aşağıdaki adımları uygulayarak PageSpeed modülü için gerekli olan kurulumu tamamlamış ve nginx tarafından çalışır konuma getirmiş olacağız.

Nginx site konfigürasyon dosyaları için klasör oluşturalım.

Nginx konfigürasyon dosyasını açın:

Sonrasında içerisindekileri silin ve aşağıdaki ayarları ekleyip kaydedin:

Ayarların aktif olabilmesi için nginx e restart atalım.

Şimdi Nginx versiyon kontrolü yaparak PageSpeed modülü ile derlendiğini görebilirsiniz:

Örnek aşağıdaki gibi bir çıktı alacaksınız:

PageSpeed Filtreleri

Konfigürasyon dosyasında bazı ayarları ekledim ancak aktif değiller, örnek aktif etmek istediğiniz filtrenin yada ayarın başındaki # işaretini kaldırmanız yeterlidir. Örnek css ve resim birleştirme (sprite) aktif etmek için aşağıdaki ayarı bulun:

Basındaki # (kare) işaretini kaldırarak kaydedin:

Sonrasında ayarların aktif olabilmesi için Nginx e restart atın:

Test ettiğinizde yapdiğiniz değişikliğin çalıştığını görebilirsiniz. Ayrıca farklı ayarlar ile sunucunuzu özelleştirmek istiyorsanız buradan yada buradan (ngxpagespeed.com) güncel filtre ayarlarına ulaşabilirsiniz.

Örnek bazı filtreler ve Türkçe anlamlarını aşağıda listeliyorum: [Kaynak]

lazyload_images: scroll aşağı inmedikçe imajları yüklemez.
combine_heads: Site içerisinde birden fazla “head” etiketi tanımlanmışsa (include dosyalardan dolayı) bunları teke indirir.
outline_css: Site içerisine “style” etiketi ile stil yazdıysanız bunu css dosyasına çevirir.
outline_javascript: javascript kodlarınız için outline_css özelliği ile aynı mantıkta çalışır.
move_css_above_scripts: css dosyalarınız javascriptten sonra geliyorsa css dosyalarını javascriptlerden önceye alır.
move_css_to_head: head dışında css dosyanız varsa bunu head içine taşır.
rewrite_style_attributes: css dosyanız içindeki elemanları/imajları önbelleğe alır ve sıkıştırır
prioritize_critical_css: yalnızca görüntülenen sayfada kullanılan cssleri yükler. kullanılmayan cssleri yüklemez.
combine_javascript: birden fazla javascript dosyanız varsa bunları birleştirerek tek javascript dosyasına indirir.
convert_png_to_jpeg: png dosyalarını jpeg dosyasına dönüştürür.
convert_jpeg_to_webp: jpeg dosyalarını webp dosyasına dönüştürür.
remove_comments: sitenin html kodları arasındaki yorum kodlarını kaldırır.
collapse_whitespace: sitedeki fazla boşlukları temizler.
elide_attributes: fazlaca yazılmış form kodlarını kırpar. örneğin disabled=”disabled” yerine disabled yazar.
sprite_images: css dosyasındaki imajları birleştirerek tek resme dönüştürüp optimizasyon sağlar.
trim_urls: url yollarını kısaltır. örn. example.com/abc yerine abc yazar.
predantic: eksik style ve script taglarının tip değerlerini yazar. örn. type=”text/css”
remove_quotes: html kodları içindeki tek tırnakları temizler
add_instrumentation: sayfaya iki küçük javascript bloğu yerleştirerek sunucuya sayfa yüklenmesi ile ilgili rapor gönderir.

Nginx Site Ekleme ve konfigürasyon dosyası oluşturma:

Herşeyi hallettik, geriye site oluşturmak ve çalıştırmak kaldı. Aşağıdaki adımları takip ederek kullanıcı ve nginx site dosyalarını oluşturabilirsiniz. Ben örnek çalışmamda şubdomain kullandım (php7-nginx-ps.kuaza.com), siz aşağıdakidaki komutları ve ayarları kullanırken bu domaini kendinize göre düzenleyerek çalıştırın:

— Kullanıcı oluşturma

Aşağıdaki adımları izleyerek sitemiz dosyalarını çalıştıracak bir kullanıcı hesabı oluşturalım, bu ayrıca ilerde ftp programı kurarsanız bağlanmak içinde gerekli olacak.

Komutu çalıştırdıktan sonra sizden şifre girmenizi isteyecek, iki kere arka arkaya aynı şifreyi girip onaylayın.

Sonrasında aşağıdaki komutları sırası ile çalıştırın, ancak test (php7-nginx-ps) kullanıcı ismi yerine kendi kullanıcı isminizi kullanmayı unutmayın:

— Nginx site dosyası oluşturma

Aşağıdaki adımları izleyerek nginx site tanıtma işini halledelim. Öncedende yazmıştım ancak yineleyeyim, anlatım sırasında kullandığım php7-nginx-ps.kuaza.com domaini yerine kendi domain isminizi yazarak ayarları ve komutları çalıştırın.

Aşağıdaki komutu çalıştırın:

Aşağıdaki kodları bir metin editöründe açıp domain kısımlarını kendinize göre düzenledikten sonra ssh de açtığımız nano dosyasına yapıştırıp kaydedip çıkın: ctrl + x -> y + enter

Nginx ayarlarının aktif olması için restart atalım:

Şuanda sitemiz aktif oldu, tarayıcınızın adres satırına php7-ngins-ps.kuaza.com yazarak girdiğinizde 404 hata sayfasının açılıyor olması lazım. Bu normal, çünkü herhangi bir index yada başka bir dosya mevcut değil. İki adımda kolayca oluşturalım.

Site dizinine girelim:

Örnek dosyaları indirelim:

Kullanıcı izinlerini verelim dosyaların:

Şimdi sitemize girelim, ne çıktı karşımıza ? Umarım yüzünüz gülüyordur 🙂

kuaza-php-7-nginx-pagespeed-kurulumu-php-infoPageSpeed’in çalışıp çalışmadığını test etmek için site adresinizi aşağıdaki gibi ssh den girerek görebilirsiniz.

kuaza-com-pagespeed-kurulumu-calisip-calismadigini-kontrol-etme

 

mariaDB güvenlik ayarları için aşağıdakileri yapın:

Ssh terminalinden aşağıdaki komutu girerek çalıştırın ve çıkan her soruya Y diyerek devam edin.

İlk aşamada şifre girmenizi isteyecektir, iki kere girdikten sonra devam ederken tekrar her soruya Y diyerek geçin. Bu şekilde mysql güvenlik ayarlarınıda aradan çıkarmış olacağız.

SSH ile mysql database oluşturma v.s işlemleri için: SSH ile Mysql database oluşturma, kullanıcı oluşturma, database silme

Olası hatalar ve çözümleri:

Php dosyalarını çalıştırırken “No input file specified” hatası alırsanız burdaki ayarları yaparak bu sorunu aşabilirsiniz: “No input file specified” hatasının çözümü (nginx, php-fpm, selinux, centos 7)

4. adım: OpCache panelini kuralım

Aşağıda resimde göreceğiniz ve OpCache istatistiklerini ve ayarlarını takip edebileceğiniz bir panel oluşturabilirsiniz.

OpCache GUI panel kurulumu

Öncelikle bu panele özel karışık bir isimde subdomain oluşturalım. Her önüne gelen giremesin, şifre var ancak yinede hedef haline gelebilirsiniz, bu yüzden subdomain ismini tahmin etmesi zor bir isim seçin. Bu anlatımda kullanıcı adı ve subdomain ismi olarak: OpCacheGUI kullanacağım, siz farklı bir isim ile değiştirebilirsiniz.

Aşağıdaki komutları sshden uygulayın:

Şifreyi iki kere girdikten sonra kullanıcı oluşturma işlemini bitiriyoruz ve aşağıdaki komutları sırası ile çalıştırıyoruz:

Sonrasında nginx konfigürasyon dosyası oluşturalım:

Subdomain ismini göreceksiniz ben opcachegui.kuaza.com yaptım, siz farklı yapabilirsiniz.

Kaydettikten sonra ayarları aktif etmek için nginx restart atalım:

Bize gerekli olan Script panel dosyalarını burdan indirelim: https://github.com/PeeHaa/OpCacheGUI/archive/master.zip

İndirdiğiniz dosyayı zıpden çıkartın, normalde klasör ismi: OpCacheGUI-master olacaktır, içerisindeki dosyaları /home/OpCacheGUI/panel/ klasörünün içerisine yükleyin. (Winscp ile kolayca yükleyebilirsiniz)

Yükleme işleminden sonra dosyaların kullanıcı izinlerini verelim, aksi durumda çalışmayacaklardır:

Sonraki adım panel dosyalarını yapılandırma.

init.example.php dosyasının ismini değiştirerek tahmin etmesi zor bir şey yapalım, örnek: init.zor_bir_kelime.php

Sonrasında o dosyayı düzenlemek için açalım.

Aşağıdaki ayarı bulun ve 1 yerine 0 yapın:

Bu şekilde olacak:

Zaman dilimini burdan değiştirebilirsiniz:

Örnek istanbul için:

Kullanıcı adı ve şifre değiştirme: Aynı dosyanın en altında aşağıdaki gibi bir ayar yeri bulunuyor:

Kullanıcı adını değiştirmek için bu ismi değiştirin:

Şifreyide değiştirmek için bunun yerine:

Buraya girin ve bir şifre yazın, sonrasında PHP5 PASSWORD HASH kısmında şifrenizin password_hash ile yeniden oluşturulmuş halini göreceksiniz, kopyalayın ve yukarıdaki eski şifrenin yerine yapıştırın. Dosyayı kaydedip çıkın.

Sonrasında init.deployment.php dosyasını düzenlemek için açın ve aşağıdakini bulun (ki tek o var zaten):

Bu ismi yukarda oluşturduğumuz, değiştirdiğimiz dosya ismi ile aynı yapalım:

Kaydedip çıkalım. Bu kadar, teknik olarak bir yerde hata yapmadıysanız tarayıcınızdan subdomaini yazıp girdiğinizde giriş ekranı gelecek. Bizim örneğimizdeki subdomain: opcachegui.kuaza.com şeklindeydi, siz ismi farklı yaparak devam ettiyseniz o şekilde deneyin.

Bu panelin, henüz türkçe dili bulunmuyor, ancak çeviri konusunda destek olmak isteyen olursa burdaki ingilizce dokümanı çevirerek koder arkadaşa iletebilir yada git üzerinden kendisi gönderebilir. Hani sevabada girmiş olur 🙂

Bugünkü dokümanımızın tamamlandığını rahatlıkla söyleyebilirim, en azından öyle umuyorum ancak farkettiğiniz hatalar söz konusu olursa yorum olarak yazarsanız itina ile hemen düzeltilecek, tarafınıza teşekkür duası gönderilecektir (içimden).

Php versiyonunu silme farklı versiyonu kurma

Üç tane php versiyonu mevcut: 70, 55, 56 (7.0, 5.5, 5.6)

Hangisi kurulu ise aşağıdaki komutu düzenleyerek phpyi sunucunuzdan siliyoruz.

Sonrada hangi versiyonu kuracaksanız, aşağıdaki komutu düzenleyerek (versiyon numara kısımlarını sadece) çalıştırın. Örnek php 7.0 için:

Yada php 5.6 versiyonu için:

Yada php 5.5 versiyonu için:

Sonrasında php.ini ve www.conf ayarlarını yapmayı unutmayın.

Yardımcı kaynaklar:

4 Yorumlar

  1. Yemin ediyorum kral adamsın hocam alemde teksin döktürmüşsün yine eline koluna beynine klavyene sağlık işten gelir gelmez denicem üstat kusursuz bir anlatım olmuş heyecandan ellerim karıncalandı sabırsızlanıyorum denemek içi : )

    Centos 7: Nginx + Pagespeed + Php (php-fpm) + OpCache + MariaDB

    • Bunlar sunucu konfigurasyonuna ve hite + kullanilan scripte gore degisiklik gosteren konular, detayli bir test sureci ve bilgi birikimi ister. Suanda zamanim yok ancak sunucunuz zaman icerisinde size neyin eksik oldugunu yansitacaktir, bu yonde calismalar yaparak sirayla en iyi seviyeye getirebilirsiniz. Yinede zamanim oldugunda baslangic icin iyi bir optimizasyon onerisi yapacagim.

Bir Cevap Yazın