Linux üzerinde PHP-FPM yapılandırma
Nginx sunucusunun temel ayarlarına ve işlevselliğine değinmeyeceğiz, bunu zaten bir önceki makalemizde yaptık. Ancak bazı parametrelerin dikkate alınması gerekiyor.
İşleyici sayısını ve işlemci başına bağlantı sayısını tanımlayın ve belirtin. Bu amaçla /etc/nginx/nginx.conf dosyasında değerleri belirleyeceğiz:
worker_processes 1; worker_connections 1024;
Bu değerlerin seçilmesindeki temel fikir, hizmet verilen istemci sayısının, işleyici sayısı ile her bir işlemci için bağlantı sayısının çarpımına eşit olmasıdır. Yani bizim durumumuzda, 1,024 istemci. Giriş-çıkış sorunlarından kaçınmak için, işlemci çekirdeği başına işlemci kural 1'i izleyin. Çekirdek sayısını komutla belirleyebilirsiniz:
cat /proc/cpuinfo | grep işlemci işlemci : 0
İşlemcimin bir çekirdeği var. Bu nedenle işlemci sayısı birdir. Bağlantı sayısı ihtiyaca göre eklenebilir. Bu parametre pratikte zaten seçilidir.
Güvenlik nedeniyle yönerge etkinleştirilebilir
server_tokens kapalı
Kılavuzdan: "Hata iletilerinde ve yanıt başlığının "Sunucu" alanında Nginx sürümünün verilmesine izin verir veya yasaklar."
Bu yönerge yapılandırma dosyasının http/server/local bölümüne eklenir.
Sunucu tarafından iletilen verinin boyutunu belirleyelim:
client_max_body_size 20m; client_body_buffer_size 128k;
Bu yönerge yapılandırma dosyasının http/server/local bölümüne eklenir.
Statik dosyalar için önbellek yapılandırın. Bu, sunucu kaynaklarından ve bant genişliğinden tasarruf etmek içindir. Günlük kaydını devre dışı bırakın ve statik dosyalar için başlık sona erme tarihini 100 gün olarak ayarlayın.
location ~* \.(jpg|jpeg|gif|png|css|js|ico|xml)$ { access_log off; log_not_found off; expires 360d; }
PHP-FPM ile etkileşim kurmak için bir Unix soketi belirleyebilirsiniz. Bunu yapmak için yapılandırma halemize yazmamız gerekir:
# PHP betiklerini PHP-FPM'ye aktarın konum ~* \.php$ { fastcgi_index index.php; fastcgi_pass 127.0.0.1:9000; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param SCRIPT_NAME $fastcgi_script_name; }
İleriye baktığımızda, PHP-FPM ayarlarında, yapılandırmamızda belirtilen IP ve portu dinlemeyi belirtmelisiniz. Bu havuz yapılandırma dosyasının dinleme yönergesi ile yapılır.
Güvenlik nedeniyle gizli dosyalara erişimi engelleyebilirsiniz.
location ~ /\. { access_log off; log_not_found off; deny all; }
PHP-FPM yapılandırmasının kendisi 2 adıma ayrılabilir: dosyada gerçekleştirilen genel parametrelerin ayarlanması
/etc/php5/fpm/php-fpm.conf
ve havuz yapılandırması. Havuz yapılandırması dizin dosyalarında belirtilir
/etc/php5/fpm/pool.d/
Global parametreler çok ilginç değildir ve dokümantasyonda okunabilir, ancak havuzların yapılandırılmasının ana parametrelerini dikkate alacağız.
Her havuz ayrı bir dosya ile yapılandırılır. Eğer bir komut verirseniz
ls -l /etc/php5/fpm/pool. d/
'e girdiğimizde sistemin www havuzu için zaten bir yapılandırma dosyasına sahip olduğunu göreceğiz. Şimdi yapılandırmayı örnek olarak inceleyelim.
Yapılandırmadaki önemli bir nokta, PHP betiklerini çalıştırmak için kullanılan işleyicilerin sayısını seçmektir. Bunların sayısı akıllıca seçilmelidir. Çok az sayıda işleyici isteklerin verimli ve hızlı bir şekilde işlenmesine izin vermeyecektir, ancak çok fazla sayıda işleyici sunucunun diğer görevler için ihtiyaç duyduğu kaynakları tüketecektir. İşlemci sayısı, sunucuya gelen en yoğun taleplerde bile, kaynaklarının kullanımının makul sınırlar içinde kalması ve aşırı yüklenmesine yol açmaması gerektiği düşünülerek seçilmelidir.
Şimdi yapılandırma dosyasına biraz göz atalım ve aşağıdaki seçenekleri belirleyelim. Evet, yapılandırma dosyasında ";" sembolü ile başlayan satırlar yorumlardır ve yönerge olarak kabul edilmezler.
Süreçlerin oluşturulmasında dinamik kipi belirtin, böylece başlatılan PHP-FPM süreçlerinin sayısı doğrudan sunucudaki yüke bağlı olacaktır.
pm = dinamik
Maksimum çocuk süreç sayısını ayarlayın.
pm.max_children = 6
Ardından, sunucu yüklenir yüklenmez çalışacak alt süreçlerin sayısını belirtmelisiniz. Varsayılan olarak bu değer 2'dir. Kaynaklar izin veriyorsa artırabilirsiniz; şimdi 3 olarak ayarlayalım.
pm.start_servers = 3
Ayrıca boşta kalan işlemlerin minimum ve maksimum sayısını da belirtmelisiniz. Minimum sayıyı sunucu açılışında çalışan işlem sayısına eşit yapalım. Maksimum sayıyı ise izin verilen maksimum alt süreç sayısını aşmayacak şekilde ayarlayacağız.
pm.min_spare_servers = 3 pm.max_spare_servers = 5
Bu değerler örnek ve açıklama için verilmiştir. Ancak her özel durumda değişiklik gösterebilirler. Optimum değerler sunucunun yeteneklerine ve mevcut kaynaklara, PHP kodunun sayısına ve karmaşıklığına, sorgu sayısına ve sunucu üzerindeki yüke bağlıdır. Bu parametreler sadece pratik uygulama ve oluşturulan sitenin test edilmesi ile elde edilebilir.
Şimdi özel ayarları ele alalım.
İlk olarak, yavaş çalışan betiklerle ilgili bilgilerin günlüğe kaydedilmesini yapılandıracağız. Bu bilgi, sitedeki gecikmelerin nedenlerini açıklığa kavuşturmada faydalı olacaktır. İlk olarak, komut dosyasının yürütülmesinin yavaş olarak kabul edileceği bir zaman eşiği belirleyeceğiz.
request_slowlog_timeout = 10s
Zaman birimleri saniye (s), dakika (m), saat (h) veya gün (d) olarak belirtilebilir. Biz 10 saniyelik bir zaman belirttik.
Şimdi bilgilerin gönderileceği dosyanın adını da belirleyeceğiz.
slowlog = /var/log/slowphp.log
Şimdi, bu dosya "yavaş" betiklerin incelenmesi için çalışılabilir.
Komut dosyalarını yalıtılmış bir ortamda veya chroot ortamında çalıştırmak istiyorsanız. Bu seçenek genellikle güvenlik amacıyla kullanılır. Bu özelliği etkinleştirmek için chroot seçeneğini ayarlamalısınız.
Bu seçeneği ayarlarken, bunun PHP betiklerinin işlenmesinde değişikliklere neden olacağını unutmamalısınız.
Tüm dosya yolları artık belirtilen dizine göre görüntülenecek ve PHP bet ikleri belirtilen dizinin dışında bulunan soketlere erişemeyecektir.
Birden fazla siteyi korumak için ek havuzlar eklemeniz gerekebilir. Bu, her site için ayrı ayrı farklı ayarlar yapılandırmanıza olanak tanır. Ek bir havuz oluşturmak için dosyamızı kopyalayın
/etc/php5/fpm/pool.d/www.conf
yeni bir isim altında, örneğin
/etc/php5/fpm/pool.d/www2.conf
Yeni bir dosya açın ve havuzun adını değiştirin. Bunu yapmak için, dosyanın en üstündeki [www] satırını [www2] olarak değiştirin.
Ve şu satırı değiştirin:
listen = /var/run/php5-fpm.sock
üzerinde
listen = /var/run/www2.sock
İşleyicinin ip:port çiftini dinlemesini istiyorsak, listen yönergesi şöyle görünecektir
listen = 127.0.0.1:9000
Ardından hizmeti yeniden başlatıyoruz
/etc/init. d/php5-fpm yeniden başlat
Content