Centos 7 üzerine: Php 7 (php-fpm), OpCache + Nginx + MariaDB kurulumu 4

Bugünkü konumuz centos (64bit) sunucu üzerine php-fpm (php 7) + MariaDB (mysql) + Nginx (Web server) kurulumu. Henüz resmi kaynaklar tarafından direkt geçiş önerilmesede, sisteminizdeki scriptlerin uyum sorunu yoksa hiç düşünmeden bu versiyo geçiş yapabilirsiniz.

Öncelikle bunu yaparken farklı bir sunucu kullanmanızı ve site scriptlerinizi, betiklerinizi çalıştırarak kontrol etmenizi, herhangi bir sorun görünmüyorsada geçiş yapmanızı öneriyorum.

Php 7 nin farkı: Önceki versiyonlara göre %50 performans, güvenlik v.s artışı sağlanmış, ayrıca yanında gelen opcache ile php kodlarını onbellege alarak hız, performans konusunda ciddi farklar oluşturuyor. Anlatımın sonunda opCache sistem analiz panelinin kurulumunuda anlatacağım.

php 7 wordpress performans testiDöküman centos 7.2 64 bit versiyonda denenerek hazırlanmıştır.

Öncelikle temiz kurulum yapılmış centos 7 (64) sunucumuza ssh ile bağlanıyoruz. Aşağıdaki komutları sırasıyla uygulayarak çalıştırın:

Centos 6 versiyonlarını kullananlar varsa aramızda aşağıdaki repoları yükleyerek devam edebilirler:

Şimdi asıl meseleye geçelim, aşağıdaki kodu çalıştırarak gerekli olan uygulamaları kuralım:

Kurulumu takip edin arkadaşlar, size soru sorabilir, Y diyerek enter yapın ve onaylayın.

Kurulan programları sırasıyla aktif edip açılış için onaylayalım: (Sırayla kodları çalıştırın)

Şuanda gerekli programlarımız kuruldu ve çalışıyor durumda. Aşağıdaki adımları uygulayarak site ekleyelim ve çalıştıralım..

1. adım: php-fpm yapılandıralı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:

Bununla değiştirin ve kaydedin:

Sonrasında php-fpm konfigürasyon dosyasını düzenleyelim:

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

Aşağıdaki ayarları bulun:

Sırasıyla 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:

2. adım: Kullanıcı oluşturma

kuaza_test_kullanici: farklı bir kullanıcı adı kullanmanız gerekiyor, domain ne işe ona yakın isim kullanmanızı öneririm.

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 kullanıcı ismi yerine kendi kullanıcı isminizi kullanmayı unutmayın:

3. adım: Nginx site ekleme

Aşağıdaki adımları uygulayarak nginx web server’inada browserdan siteye girmek istediklerinde işleyecek bilgileri girelim.

Aşağıdaki kodları bir metin editörüne yapıştırın ve kuaza_test_kullanici bölümlerini kendinize göre düzenleyin, sonrasında ssh terminalinde açılan ekrana yapıştırın (maus sağ tık) ve kaydedin (ctrl +x, y, enter)

Nginx e restart atalım:

Şuanda sitemiz aktif oldu, tarayıcınızın adres satırına kuaza_test_kullanici.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.

nano boş sayfa açılacak, aşağıdaki kodları yapıştırın ve kaydedip çıkın (ctrl + x, y, enter):

Ve kullanıcı izinlerini verelim ki tarayıcıda açmak istediğimizde hata vermesin:

Bu kadar, şuanda tarayıcınızda bu dosyayı açtığınızda php bilgilerini görüyor olmanız gerekecek: http://kuaza_test_kullanici.com/info.php

Örnek resim:

kuaza.com php 7 kurulumu

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).

Yardımcı kaynaklar:

16 Yorumlar

  1. systemctl enable nginx
    Failed to execute operation: No such file or directory

    kurulum yaparken böyle bir hata alıyorum nginx kurulmuyor, ne yapabilirim.

    • istediginiz seylerin ayarlanmasi yada kurulmasi zor degil ancak onemli olan ince ayarlar ki buda bizi bir hayli zorlayan kisim. Zaman icerisinde bu tarz calismalar icin yapilacak ince ayarlarida yayinlamaya calisirim.

      Verdiginiz konuya gelince dogrudur, nginx file cache mantigi ile cache alarak gelen ziyaretciye php yada mysql kullanmadan statik dosyayi hizli bir sekilde servis etmekte. Boyle olunca sunucuya fazla bir is dusmuyor..

  2. hızlı cevap için teşekkür ederim.

    verdiğim örnekteki gibi farklı farklı yapılandırmaları sunarsanız ve test ederseniz sevinirim. Acaba ne zaman böyle yapılandırmalar sunma imkanınız var.

    linkteki gibi bir yapılandırma da sunabilir misiniz. iyi çalışmalar

  3. Yine harika bir anlatım eline koluna klavyene sağlık Kuaza hocam
    Yeni yeni öğreniyorum da engin bilgilerinizden yararlanmak istiyorum bir sakıncası yoksa sorularım olacaktı.

    2 CPU 4GB Ram 80GB SSD sahip bir sunucum var bu anlatımdaki kurulumu yapıcam özel bir script kullanıyorum.

    1-Bu anlatımdaki php-fpm, OpCache + Nginx + MariaDB hepsi son sürüm olarak mı iniyor?

    2-OpCache panelini kurmak şart mı kurmasak bize bir – olur mu kurarsak + sı ne olur acaba ?

    3-MariaDB kurduktan sonra site üzerinden nereden login olabiliriz acaba? site.com/phpmyadmin tarzı bir giriş ekranı varmı? yoksa imkanımız varsa bunu nasıl saglaya biliriz?

    4-Bu anlatıma göre ioncube kurulumunu en basit şekilde nasıl yapabiliriz?

    5-MariaDB ye göre MongoDB daha performanslı diyorlar sizce doğrumu?

    6-Sizin kombinasyonunuza + ne eklersek daha çok performans elde ederiz?

    7-Bu kombinasyonunuza pagespeed nasıl kurabiliriz?

    Sorularıma cevap verirseniz çok sevinirim ona göre kuruluma başlıcam tekrardan böyle kaliteli güzel anlatımlar yaptığınız için teşekkür ederim bu konularda siz gibi kaliteli paylaşım yapanlar çoğalması lazım.

  4. Kurulumu gozden gecirdim suanda php 7.1 var ancak kurulumda son surum 7.0 olarak gorunuyor. Sanirim en son stabil versiyonlar suanki kurulumda yer aliyor ki bence olmasi gerekende bu. Suanda bu depo ile php 5.5, php 5.6 ve php 7 en son stabil versiyonlari kurulabiliyor.

    OpCache panelini takip edecekseniz hareketleri kurabilirsiniz ancak merak etmiyorsaniz gerek yok zaten OpCache arkaplanda isini yapmakta, panel sadece sistem ve calisma durumunu gormenizi sagliyor. Cache temizleme, cacheye alinan sayfalar, cpu durumu sanirim yanlis hatirlamiyorsam.

    PhpMyAdmin kurulumu icin buradan yardim alabilirsiniz: https://www.digitalocean.com/community/tutorials/how-to-install-and-secure-phpmyadmin-with-apache-on-a-centos-7-server Ancak soyle bir durum var, burdaki kuruluma php yide eklemeniz gerekli, yoksa erisimde sorun yasarsiniz. yani httpd kurmaniz icap edecek. Ancak onun yerine nginx e subdomain tanimlayarak, bu subdomaine phpmyadmin script dosyalarini yukleyerek ve ince ayarlarini yaparak erisim saglayabilirsiniz. Bu subdomainede sadece sizin ipnizden girislere izin vererek guvenligi artirabilirsiniz.

    ioncube konusunda burdan yardim alabilirsiniz: http://kuaza.com/linux-arena/centos/php-ioncube-kurulumu-yum-centos-sunucular-icin Ancak olumlu sonuc alip almayacagini bilemiyorum, geri donus yaparak bilgi verirseniz farkli bir yontem arastirabilirim.

    Veritabani probramlari kullanilan ise gore verimlilikte farklilik gosterebilir. Bu gibi degerlendirmeleri cok ama cok buyuk projeleriniz oldugunuzda yaparsiniz, suanda ihtiyaciniz olacagini zannetmiyorum. MariaDB iidir 🙂

    Pagespeed konusunda bir arkadas daha dokuman istemisti, zamanim olsa hazirlayacagim ama su siralar cok kit zamanim var malesef :/

    Bilgim ve zamanim dahilinde yardimci olmaya calisirim ancak bende siradan biri sayilirim, umarim calismalarinizda yardimci olur dokumanlarim.

    • Öncelikle detaylı cevabın için çok teşekkür ederim hocam dün anlatımızla gayet rahat bir şekilde kurdu şuanda performansı gayet güzel ama ince 2-3 rutuş yapılırsa dahada iyi olabilir gibi düşünüyorum orası siz bilirsiniz gerci ama mutlaka ince sihirli dokunuşlar vardır 🙂

      Dediğiginiz gibi stabil son sürümleri çekiyor PHP Version 7.0.11 – nginx/1.10.1 …

      Verdiğiniz linkteki Ioncube kurulumunda hata aldım 2-3 defa denememe ragmen kurulum yapamadım onun yerine manuel kurdum rahatlıkla çalıştırıdm
      —————————————————————
      Sırasıyla

      mkdir /usr/local/ioncube
      http://downloads3.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz
      tar xzvf ioncube_loaders_lin_x86-64.tar.gz
      cd ioncube
      cp -p ioncube_loader_lin_7.0.so /usr/local/ioncube
      cp -p ioncube_loader_lin_7.0_ts.so /usr/local/ioncube

      /etc/php.ini en altınada ekleyerek
      zend_extension=/usr/local/ioncube/ioncube_loader_lin_7.0.so
      zend_extension_ts=/usr/local/ioncube/ioncube_loader_lin_7.0_ts.so

      service php-fpm restart
      —————————————————————

      Pagespeed’de olsaymış harbiden tadından yenmezmiş çünkü şu sıralar acayip ihtiyaç duyulan bir modül oldu ve +ları cok büyük detaylı bir anlatım bekliyoruz kısa zamanda hangi ayar ne işe yarar vb..

      Bu arada hocam birşey daha sormak istiyorum nginx/1.10.1 yerine mesela kuaza/1.10.1 yada direk kuaza server tarzı yazılar yazma sansımız varmı değiştirebiliyormuyuz ?

      • + olarak hocam aklıma gelmişken 1-2 script denedigimdede sürekli Fatal Error: ezSQL_mysql requires mySQL Lib to be compiled and or linked in to the PHP engine hatası alıyorum acaba bu sorunu nasıl cözebiliriz?

        • Kullandiginiz ezSQL php versiyonu php 7 icin calisabilir duzeyde degil sanirim. Bu suanda bir cok scriptde olan bir durum. ezSQL az cok hatirliyorum bayagi eski bir veritabani yonetim betigidir. Dolayisi ile tavsiyem php7 yerine php 5.6 yi kurmaniz. kurulum yaparken php70 yerine php56 yaparsaniz php 5.6 versiyonunu kurmus olursunuz ancak yinede ayri bir sunucuda deneyerek bunu uygulayin.

      • ioncube anlatiminizi zamanim olunca konu olarak yazacagim, pagespeed anlatimi icinde arastirmalara basladim hatda dun yaptigim denemede derlemede sorun cikti, problemi cozunce anlatima yer verecegim.

Bir Cevap Yazın