Linux üzerinde PHP-FPM yapılandırma

by Nataliya Oteir
Linux üzerinde PHP-FPM yapılandırma
star 5
0
Okuyun 4 min.

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 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 processor
processor : 0

İşlemcimin bir çekirdeği var. Bu nedenle, işlemci sayısı birdir. Bağlantı sayısı ihtiyaca bağlı olarak eklenebilir. Bu parametre uygulamada zaten seçilidir.

Güvenlik nedeniyle yönerge etkinleştirilebilir

server_tokens off

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 halomuza yazmamız gerekir:

# Pass PHP scripts to PHP-FPM
    location ~* \.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 global 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ırması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 isteklerde 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 sunucu üzerindeki yüke bağlı olacaktır.

pm = dynamic

Çocuk süreçlerin azami 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; 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 ayarlayalım.

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 kaynaklarına, 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 süre belirledik.

Ş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 incelenebilir.

Eğer betikleri izole bir ortamda ya da 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 betikleri 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 satırı değiştir:

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 restart

Yeni gönderiler

VAT

  • Other

    Other

    0%
  • austria

    Austria

    20%
  • Belgium

    Belgium

    21%
  • Bulgaria

    Bulgaria

    20%
  • Croatia

    Croatia

    25%
  • Cyprus

    Cyprus

    19%
  • Czech Republic

    Czech Republic

    21%
  • Denmark

    Denmark

    25%
  • Estonia

    Estonia

    22%
  • France

    France

    20%
  • Finland

    Finland

    24%
  • Germany

    Germany

    19%
  • Greece

    Greece

    24%
  • Hungary

    Hungary

    27%
  • Ireland

    Ireland

    23%
  • Italy

    Italy

    22%
  • Latvia

    Latvia

    21%
  • Lithuania

    Lithuania

    21%
  • Luxembourg

    Luxembourg

    17%
  • Malta

    Malta

    18%
  • Netherlands

    Netherlands

    21%
  • Poland

    Poland

    23%
  • Portugal

    Portugal

    23%
  • Romania

    Romania

    19%
  • Slovakia

    Slovakia

    20%
  • Slovenia

    Slovenia

    %
  • Spain

    Spain

    21%
  • Sweden

    Sweden

    25%
  • USA

    USA

    0%
european
states
  • Other
  • canada
  • poland
  • european-union
  • france
  • germany
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria