Şimdi yükleniyor

cPanel’de Özel PHP Sürümü/Modül Derleme: Adım Adım Rehber

cPanel'de Özel PHP Sürümü/Modül Derleme: Adım Adım Rehber

Web sunucularında performans ve uyumluluk, özellikle modern web uygulamaları için hayati öneme sahiptir. cPanel ve WHM, sunucu yönetimini basitleştirse de, bazen standart EasyApache tarafından sunulan PHP sürümleri ve modülleri belirli ihtiyaçları karşılamayabilir. Geliştiriciler, eski bir uygulamayı çalıştırmak için belirli bir PHP sürümüne ihtiyaç duyabilir veya yeni bir teknolojiyi desteklemek için özel bir PHP modülünü derlemek zorunda kalabilirler. Bu senaryolarda, cPanel/WHM ortamında özel PHP sürümleri veya modüllerini manuel olarak derlemek ve entegre etmek kaçınılmaz hale gelir. Bu kapsamlı rehber, bu teknik süreci adım adım açıklayarak, sunucunuzu tam olarak ihtiyaçlarınıza göre yapılandırmanıza olanak tanıyacak.

Neden Özel PHP Sürümü veya Modülü Derlemelisiniz?

EasyApache, cPanel/WHM kullanıcılarına geniş bir PHP sürümü ve modülü yelpazesi sunar. Ancak, bu seçenekler her zaman yeterli olmayabilir. İşte özel derlemenin gerekli olabileceği bazı durumlar:

  • Uygulama Uyumluluğu: Belirli bir PHP sürümüne sıkı sıkıya bağlı eski veya niş uygulamaların çalıştırılması.
  • Performans Optimizasyonu: Belirli derleme bayrakları veya optimize edilmiş modüllerle daha iyi performans elde etmek.
  • Özel Modüller: EasyApache’de bulunmayan veya derleme seçenekleri kısıtlı olan PHP uzantılarının (örneğin, özel bir veritabanı sürücüsü, nadir bir şifreleme kütüphanesi) entegrasyonu.
  • Geliştirme ve Test Ortamları: Yeni PHP sürümlerini veya deneysel modülleri üretim ortamına zarar vermeden test etmek.

Teknik Arka Plan: PHP Derleme Süreci

Linux sistemlerinde PHP’yi kaynaktan derlemek, temel olarak üç ana aşamadan oluşur: yapılandırma (configure), derleme (make) ve kurulum (make install). Bu süreç, PHP’nin hangi modüllerle, hangi optimize edilmiş seçeneklerle ve hangi dizinlere kurulacağını belirler. cPanel/WHM ortamında, bu manuel kurulumun EasyApache’nin otomatik yönetimiyle çakışmaması için dikkatli olunmalıdır. Genellikle, özel PHP sürümleri ayrı bir dizine kurulur ve daha sonra web sunucusu (Apache veya LiteSpeed) tarafından belirli virtual host’lar için kullanılmak üzere yapılandırılır.

Adım Adım Uygulama Rehberi: Özel PHP Sürümü Derleme

1. Gereksinimler ve Hazırlık

Bu işlemleri gerçekleştirmek için root yetkilerine sahip SSH erişiminiz olmalıdır.

    • Gerekli Paketlerin Kurulumu: Derleme araçlarını ve bağımlılıklarını yükleyin.
yum groupinstall "Development Tools" -y
yum install libxml2-devel sqlite-devel libcurl-devel bzip2-devel openssl-devel libjpeg-devel libpng-devel freetype-devel gd-devel libicu-devel libmcrypt-devel libxslt-devel -y
    • Derleme Dizini Oluşturma: Kaynak kodunu ve derleme dosyalarını saklamak için uygun bir dizin oluşturun.
mkdir /usr/local/src/php_custom
cd /usr/local/src/php_custom

2. PHP Kaynak Kodunu İndirme

İstediğiniz PHP sürümünün kaynak kodunu PHP resmi web sitesinden indirin. Örneğin, PHP 7.4.33 için:

wget https://www.php.net/distributions/php-7.4.33.tar.gz
tar -xzvf php-7.4.33.tar.gz
cd php-7.4.33

3. Derleme Ayarları (Configure)

Bu adım, PHP’nin hangi modüllerle ve hangi yollarla derleneceğini belirler. cPanel ile uyumluluk için bazı önemli bayraklar vardır. Aşağıdaki örnek, yaygın kullanılan modülleri içeren genel bir yapılandırmadır. İhtiyaçlarınıza göre düzenlemelisiniz.

./configure 
--prefix=/opt/php74custom 
--with-apxs2=/usr/local/apache/bin/apxs 
--with-config-file-path=/opt/php74custom/etc 
--with-config-file-scan-dir=/opt/php74custom/etc/php.d 
--with-zlib 
--enable-mbstring 
--enable-sockets 
--enable-exif 
--enable-ftp 
--with-gd 
--with-jpeg 
--with-freetype 
--with-libxml 
--enable-soap 
--enable-sysvmsg 
--enable-sysvsem 
--enable-sysvshm 
--enable-shmop 
--enable-pcntl 
--enable-opcache 
--enable-fpm 
--with-mysqli=mysqlnd 
--with-pdo-mysql=mysqlnd 
--with-curl 
--with-openssl 
--with-pear 
--with-mhash 
--with-bz2 
--with-zip 
--enable-intl 
--disable-debug
  • --prefix=/opt/php74custom: PHP’nin kurulacağı dizin. EasyApache ile çakışmaması için farklı bir yol seçmek önemlidir.
  • --with-apxs2=/usr/local/apache/bin/apxs: Apache HTTP Sunucusu API’si için modül desteğini etkinleştirir.
  • --enable-fpm: PHP-FPM desteğini etkinleştirir, bu özellikle performans için önemlidir.

4. Derleme ve Kurulum (Make & Install)

Yapılandırma tamamlandıktan sonra PHP’yi derleyip kurabilirsiniz:

make
make install

Bu işlem biraz zaman alabilir. Hata alırsanız, genellikle eksik bağımlılıklar veya yanlış yapılandırma bayraklarından kaynaklanır.

5. php.ini Dosyasının Oluşturulması ve Ayarlanması

Kurulum dizinine bir php.ini dosyası kopyalayın ve ihtiyaçlarınıza göre düzenleyin:

cp php.ini-production /opt/php74custom/etc/php.ini

/opt/php74custom/etc/php.ini dosyasını açın ve memory_limit, upload_max_filesize, post_max_size gibi ayarları yapılandırın.

6. cPanel/WHM ile Entegrasyon (Opsiyonel)

Özel PHP sürümünüzü cPanel’in algılaması ve kullanıcılara sunması için ea_php_register aracını kullanabilirsiniz. Ancak bu araç genellikle EasyApache’nin kendi PHP sürümleri için tasarlanmıştır. Manuel olarak derlenen bir sürümü entegre etmek daha karmaşıktır ve genellikle Apache yapılandırmasını doğrudan düzenlemeyi gerektirir.

Apache ile Entegrasyon (Virtual Host bazında):

Belirli bir web sitesi için özel PHP sürümünü kullanmak üzere, WHM’deki Apache Include Editor’ü (Home > Service Configuration > Apache Configuration > Include Editor) kullanarak ilgili virtual host’un yapılandırmasına aşağıdaki satırları ekleyebilirsiniz (örneğin, Pre VirtualHost Include):

<Directory /home/user/public_html>
    <FilesMatch .php$>
        SetHandler application/x-httpd-php74custom
    </FilesMatch>
</Directory>
AddType application/x-httpd-php74custom .php
Action application/x-httpd-php74custom /opt/php74custom/bin/php-cgi

Ardından Apache’yi yeniden başlatın: /scripts/restartsrv_apache

Özel PHP Modülü Ekleme (Örnek: Igbinary)

Mevcut bir PHP sürümüne özel bir modül eklemek de benzer bir süreçtir.

    1. Modül Kaynak Kodunu İndirme:
cd /usr/local/src
wget https://pecl.php.net/get/igbinary-3.2.1.tgz
tar -xzvf igbinary-3.2.1.tgz
cd igbinary-3.2.1
    1. phpize ile Hazırlık: Modülün PHP ile derlenmesi için gerekli dosyaları hazırlar. Kullandığınız PHP sürümünün phpize komutunu kullanmalısınız. Eğer EasyApache tarafından kurulan bir PHP sürümüne ekliyorsanız, /opt/cpanel/ea-php74/root/usr/bin/phpize gibi bir yol kullanmanız gerekebilir. Eğer yukarıda özel derlediğimiz PHP sürümüne ekliyorsak, /opt/php74custom/bin/phpize kullanırız.
/opt/php74custom/bin/phpize
    1. Yapılandırma, Derleme ve Kurulum:
./configure --with-php-config=/opt/php74custom/bin/php-config
make
make install
    1. php.ini’ye Ekleme: Modülü etkinleştirmek için php.ini dosyanıza (/opt/php74custom/etc/php.ini) aşağıdaki satırı ekleyin:
extension=igbinary.so
  1. Web Sunucusunu Yeniden Başlatma: Değişikliklerin etkili olması için Apache veya PHP-FPM hizmetini yeniden başlatın.

Olası Hata Çözümleri (Troubleshooting)

  • Derleme Hataları (make komutunda): Genellikle eksik bağımlılık paketlerinden kaynaklanır. Hata mesajını dikkatlice okuyarak hangi kütüphanenin eksik olduğunu belirleyin ve yum install [paket_adi]-devel komutuyla yükleyin.
  • PHP Sürümünün Algılanmaması: Apache yapılandırmasında (Virtual Host veya .htaccess) SetHandler veya Action yönergelerinin doğru olduğundan emin olun. Apache’yi yeniden başlattığınızdan emin olun.
  • Modülün Yüklenmemesi: php.ini dosyasında extension=modul_adi.so satırının doğru dizine ve doğru şekilde eklendiğinden emin olun. Modül dosyasının (.so) doğru yere (genellikle extension_dir) kopyalandığını doğrulayın.
  • Yetersiz Kaynaklar: Derleme sırasında bellek veya CPU yetersizliği yaşanabilir. Yeterli kaynaklara sahip bir sunucuda işlem yaptığınızdan emin olun.
  • Permisson Hataları: Dosya ve dizin izinlerinin doğru olduğundan emin olun (genellikle 644 veya 755).

Güvenlik İpuçları

  • Minimalist Derleme: Yalnızca ihtiyacınız olan modülleri derleyin. Gereksiz modüller, potansiyel güvenlik açıklarını artırabilir ve bellek tüketimini yükseltebilir.
  • Güncel Kaynaklar: Daima PHP’nin ve modüllerin en güncel, kararlı sürümlerini resmi kaynaklardan indirin. Eski sürümler bilinen güvenlik açıklarına sahip olabilir.
  • İzolasyon: Özel PHP sürümünü ayrı bir dizine kurarak, cPanel’in ana PHP kurulumuyla çakışmasını önleyin. CloudLinux kullanıyorsanız, CageFS ile kullanıcı izolasyonunu daha da artırabilirsiniz.
  • php.ini Güvenliği: open_basedir, disable_functions gibi güvenlik ayarlarını titizlikle yapılandırın. display_errors‘u üretim ortamında kapalı tutun.

Performans Optimizasyonları

  • Opcache Kullanımı: Derleme sırasında --enable-opcache bayrağını kullanarak Opcache’i etkinleştirin ve php.ini dosyasında uygun şekilde yapılandırın. Bu, PHP kodunun önbelleğe alınarak daha hızlı çalışmasını sağlar.
  • PHP-FPM: Eğer Apache ile kullanıyorsanız, PHP-FPM (FastCGI Process Manager) ile entegrasyonu düşünün. Bu, her istek için yeni bir PHP yorumlayıcısı başlatmak yerine, PHP süreçlerinin havuzlanmasını sağlayarak performansı önemli ölçüde artırır.
  • Bellek Limitleri: Uygulamanızın ihtiyaçlarına göre memory_limit, post_max_size ve upload_max_filesize gibi ayarları optimize edin. Çok yüksek değerler gereksiz kaynak tüketimine yol açabilir.
  • Gereksiz Modüllerden Kaçının: Güvenlik ipucunda da belirtildiği gibi, gereksiz modüllerin derlenmesi hem performansı düşürebilir hem de bellek kullanımını artırabilir.

cPanel/WHM ortamında özel PHP sürümleri veya modüllerini derlemek, sunucunuzun yeteneklerini genişletmenin ve belirli uygulama gereksinimlerini karşılamanın güçlü bir yoludur. Bu süreç, dikkatli planlama ve teknik bilgi gerektirse de, sunduğu esneklik ve kontrol paha biçilmezdir. Adımları dikkatlice takip ederek, sunucunuzu tam olarak istediğiniz gibi yapılandırabilir ve web uygulamalarınız için en iyi performansı ve uyumluluğu sağlayabilirsiniz. Unutmayın ki her değişiklikte yedek almak ve test etmek, olası sorunların önüne geçmek için kritik öneme sahiptir.

You May Have Missed