Bulut Sunucuda Ubuntu 12.04 Üzerine Alternative PHP Cache (APC) Kurulumu: Kapsamlı Bir Rehber
Giriş
Günümüzün rekabetçi dijital dünyasında, web uygulamalarının performansı kritik öneme sahiptir. Kullanıcılar hızlı yüklenen sayfalar ve akıcı bir deneyim beklerken, sunucu kaynaklarının verimli kullanılması da işletmeler için maliyet etkinliği açısından hayati rol oynamaktadır. PHP ile geliştirilen uygulamalar için performansı artırmanın en etkili yollarından biri, opcode önbellekleme mekanizmalarını kullanmaktır. Alternative PHP Cache (APC), bu alanda uzun yıllar boyunca PHP topluluğunun güvendiği ve yaygın olarak kullandığı bir çözümdür.
Ubuntu 12.04 gibi daha eski işletim sistemlerinde çalışan sunucularda, PHP’nin modern versiyonlarında yerleşik olarak bulunan OPcache modülü henüz standart değildir. Bu tür ortamlarda, APC, PHP kodunun derlenmiş halini bellekte tutarak her istekte yeniden derleme ihtiyacını ortadan kaldıran güçlü bir alternatif sunar. Bu sayede, CPU döngüleri ve disk G/Ç işlemleri azalır, bu da web uygulamalarının çok daha hızlı çalışmasını sağlar. Özellikle yoğun trafik alan siteler ve karmaşık PHP uygulamaları için APC’nin faydaları göz ardı edilemez.
Bu kapsamlı rehberde, bir bulut sunucuda Ubuntu 12.04 işletim sistemi üzerinde Alternative PHP Cache (APC) kurulumunu adım adım inceleyeceğiz. Kurulum öncesi hazırlıklardan başlayarak, PECL aracılığıyla kurulum, PHP yapılandırması, web sunucusunun yeniden başlatılması, kurulumun doğrulanması ve performans ipuçlarına kadar her detayı ele alacağız. Amacımız, bu süreçte karşılaşabileceğiniz olası sorunlara karşı sizi bilgilendirmek ve APC’nin sunduğu performans avantajlarından tam olarak yararlanmanızı sağlamaktır.
Unutulmamalıdır ki, APC, PHP 5.5 ve sonraki sürümlerinde OPcache’in PHP çekirdeğine entegre edilmesiyle birlikte geliştirilmesi durdurulmuş ve yerini OPcache’e bırakmıştır. Ancak Ubuntu 12.04 gibi eski sistemlerde, genellikle PHP 5.3 veya 5.4 sürümleri kullanıldığından, APC hala geçerli ve etkili bir performans artırıcı çözüm olarak önemini korumaktadır. Bu rehber, özellikle eski altyapılar üzerinde çalışan ancak performanstan ödün vermek istemeyen kullanıcılar ve sistem yöneticileri için hazırlanmıştır.
Ön Koşullar
APC kurulumuna başlamadan önce, bulut sunucunuzun belirli gereksinimleri karşıladığından emin olmanız gerekmektedir. Bu ön koşullar, sorunsuz bir kurulum süreci için temel oluşturur.
Ubuntu 12.04 Sunucuya Erişim (SSH)
Kurulumu gerçekleştirebilmek için sunucunuza SSH (Secure Shell) üzerinden erişiminiz olmalıdır. Bu, komut satırı aracılığıyla sunucu üzerinde işlem yapmanızı sağlayacaktır. Bir SSH istemcisi (örneğin Linux/macOS terminali veya Windows için PuTTY) kullanarak sunucunuza bağlanmalısınız.
Root Yetkileri veya sudo Kullanıcısı
Sunucu üzerinde sistem düzeyinde değişiklikler yapacağınız için root kullanıcısı olarak oturum açmış olmanız veya sudo yetkilerine sahip bir kullanıcı hesabınızın bulunması gerekmektedir. Çoğu bulut sunucu sağlayıcısı, başlangıçta sudo yetkilerine sahip standart bir kullanıcı sunar. Güvenlik nedeniyle doğrudan root olarak çalışmak yerine sudo kullanılması genellikle tavsiye edilir.
PHP Kurulumu (Apache veya Nginx ile birlikte)
APC bir PHP modülü olduğundan, sunucunuzda zaten bir PHP kurulumunun mevcut olması şarttır. Bu genellikle Apache HTTP Sunucusu veya Nginx ile birlikte PHP-FPM (FastCGI Process Manager) şeklinde olur. Ubuntu 12.04 üzerinde genellikle PHP 5.3 veya 5.4 sürümleri kullanılır. PHP’nin doğru bir şekilde çalıştığından emin olmak için basit bir phpinfo() sayfası oluşturarak kontrol edebilirsiniz.
Temel Linux Komut Bilgisi
Komut satırında apt-get, cd, ls, nano gibi temel Linux komutlarına aşina olmanız, kurulum sürecini daha rahat yönetmenizi sağlayacaktır.
Neden APC Kullanmalısınız?
APC’nin eski sistemlerde hala neden değerli bir araç olduğunu anlamak, kurulum çabasını haklı çıkaracaktır. İşte APC’nin başlıca faydaları:
Performans Artışı (Opcode Caching)
PHP, bir betik her çalıştığında yorumlanan bir dildir. Bu, her isteğin önce PHP yorumlayıcısı tarafından okunması, ayrıştırılması, derlenmesi ve ardından çalıştırılması gerektiği anlamına gelir. Bu süreç, özellikle yoğun trafikli sitelerde veya karmaşık uygulamalarda önemli bir CPU yükü oluşturur. APC, PHP betiklerinin derlenmiş halini (opcode) bellekte önbelleğe alır. Böylece, aynı betik bir sonraki istekte çağrıldığında, yorumlama ve derleme adımları atlanarak doğrudan önbellekten çalıştırılır. Bu, sayfa yükleme sürelerini önemli ölçüde azaltır.
Kaynak Tüketimini Azaltma
Opcode önbellekleme sayesinde, sunucunun her istekte aynı betiği yeniden derlemesi gerekmediği için CPU kullanımı azalır. Ayrıca, disk G/Ç işlemleri de azalır çünkü betik dosyalarının her seferinde diskten okunması gerekmez. Bu durum, sunucunun daha fazla isteği aynı anda işleyebilmesine olanak tanır ve genel sunucu kaynak tüketimini düşürür. Bu, özellikle bulut sunucularında maliyet tasarrufu sağlayabilir.
Dinamik İçerik Hızlandırma
Çoğu web sitesi, veritabanından veri çeken veya karmaşık iş mantığına sahip dinamik içerik sunar. APC, bu dinamik içeriği oluşturan PHP betiklerinin yürütülmesini hızlandırarak genel kullanıcı deneyimini iyileştirir. Kullanıcılar daha hızlı yanıt süreleri alır, bu da siteye olan bağlılıklarını artırır.
Kullanıcı Verisi Önbellekleme
APC sadece opcode önbellekleme ile sınırlı değildir. Aynı zamanda “user cache” (kullanıcı önbelleği) özelliği de sunar. Bu özellik sayesinde, geliştiriciler kendi uygulamalarının verilerini (örneğin, veritabanı sorgu sonuçları, yapılandırma ayarları, oturum verileri) doğrudan APC’nin paylaşımlı belleğinde depolayabilirler. Bu, veritabanı sorgularının veya pahalı hesaplamaların sonuçlarının tekrar tekrar üretilmesini engelleyerek uygulamanın genel performansını daha da artırır.
Eski Sistemlerle Uyumluluk
Daha önce de belirtildiği gibi, APC özellikle PHP 5.5 öncesi sürümler için tasarlanmıştır. Ubuntu 12.04 genellikle PHP 5.3 veya 5.4 ile gelir ve bu sistemlerde PHP’nin yerleşik OPcache’i bulunmadığından, APC bu boşluğu dolduran en iyi çözümlerden biridir. Eski ancak hala kritik öneme sahip uygulamaları çalıştıran sunucular için APC, modern performans iyileştirmelerini getiren temel bir araçtır.
Kurulum Öncesi Hazırlıklar
APC kurulumuna geçmeden önce sunucunuzun güncel olduğundan ve gerekli bağımlılıkların yüklü olduğundan emin olmalıyız. Bu adımlar, olası derleme ve kurulum hatalarını önleyecektir.
Sistem Güncellemesi
İlk olarak, sunucunuzdaki paket listelerini güncelleyin ve yüklü paketleri en son sürümlerine yükseltin. Bu, güvenlik güncellemelerini almanızı ve yeni paketlerin doğru bir şekilde kurulmasını sağlar.
sudo apt-get update
sudo apt-get upgrade -y
Gerekli Bağımlılıkların Kurulumu
APC’yi PECL veya kaynak koddan derleyebilmek için bazı geliştirme araçlarına ve PHP geliştirme kütüphanelerine ihtiyacımız var.
* build-essential: Derleme için gerekli temel araçları (gcc, g++, make vb.) içerir.
* php5-dev: PHP modülleri derlemek için gerekli PHP başlık dosyalarını ve geliştirme araçlarını sağlar.
* php-pear: PECL (PHP Extension Community Library) paket yöneticisini içerir. APC’yi kurmak için PECL kullanacağız.
* apache2-prefork-dev (Apache kullanıyorsanız): Apache modüllerini derlemek için gerekli Apache geliştirme dosyalarını sağlar.
* libpcre3-dev: Perl Uyumlu Düzenli İfadeler (PCRE) kütüphanesinin geliştirme dosyalarıdır. APC buna bağımlıdır.
Bu paketleri tek bir komutla kurabiliriz:
sudo apt-get install build-essential php5-dev php-pear libpcre3-dev -y
Eğer Apache kullanıyorsanız, Apache geliştirme paketini de kurun:
sudo apt-get install apache2-prefork-dev -y
Nginx ve PHP-FPM kullanıyorsanız, apache2-prefork-dev paketine ihtiyacınız yoktur.
PHP Sürüm Kontrolü
Kurulumdan önce sunucunuzda hangi PHP sürümünün çalıştığını doğrulamak faydalıdır. Bu, APC’nin doğru sürümünü veya uyumlu ayarları kullanmanızı sağlayacaktır.
php -v
Çıktı genellikle PHP 5.3.x veya PHP 5.4.x gibi bir şey olacaktır. Bu sürümler APC için idealdir.
APC Kurulum Yöntemleri
APC’yi kurmanın iki ana yolu vardır: PECL aracılığıyla veya kaynak koddan manuel olarak. PECL yöntemi daha kolay ve genellikle tavsiye edilen yöntemdir.
PECL Aracılığıyla Kurulum (Tavsiye Edilen)
PECL, PHP uzantılarını kolayca indirip derlemenizi sağlayan bir paket yöneticisidir.
1. PECL ile APC Paketini İndirme ve Derleme:
Aşağıdaki komutu çalıştırarak APC’yi PECL üzerinden kurmaya başlayın:
sudo pecl install apc
Bu komut, APC kaynak kodunu indirecek, derleyecek ve PHP uzantıları dizininize (/usr/lib/php5/20100525/ gibi) .so dosyasını (apc.so) kopyalayacaktır.
2. Derleme Sırasında Sorulan Sorulara Yanıt Verme:
Kurulum sırasında PECL size bazı sorular sorabilir. En yaygın olanı şudur:
Enable APC backport for PHP 5.3? [yes]
Burada yes yazıp Enter tuşuna basmanız önemlidir. Ubuntu 12.04 genellikle PHP 5.3 veya 5.4 kullandığından, bu geri taşıma (backport) sürümünün kullanılması uyumluluk sorunlarını önler. Başka sorular sorulursa, genellikle varsayılan değerleri (Enter tuşuna basarak) kabul edebilirsiniz.
Kurulum başarıyla tamamlandığında, terminalde “Build complete.” veya benzer bir mesaj görmelisiniz.
Kaynak Koddan Manuel Kurulum (Alternatif)
PECL ile bir sorun yaşarsanız veya daha fazla kontrol istiyorsanız, APC’yi kaynak koddan manuel olarak derleyebilirsiniz. Bu yöntem biraz daha karmaşıktır.
1. APC Kaynak Kodunu İndirme:
APC’nin son kararlı sürümünü (genellikle apc-3.1.9.tgz veya benzeri) PHP.net’in PECL arşivinden indirin.
wget http://pecl.php.net/get/apc-3.1.9.tgz
Not: Sürüm numarasını güncel olanla değiştirmeyi unutmayın.
2. Arşivi Çıkartma:
İndirdiğiniz tgz dosyasını çıkartın:
tar -xvf apc-3.1.9.tgz
cd apc-3.1.9
3. Derleme Hazırlığı (phpize):
phpize komutu, PHP modüllerini derlemek için gerekli yapılandırma dosyalarını oluşturur.
phpize
4. Yapılandırma (./configure):
Modülü derlemek için yapılandırın.
./configure
5. Derleme (make):
Kaynağı derleyin.
make
6. Kurulum (make install):
Derlenmiş modülü PHP uzantıları dizinine kopyalayın.
sudo make install
Bu adımlar tamamlandığında, apc.so dosyası PHP uzantıları dizininize kopyalanmış olacaktır.
PHP Yapılandırması
APC modülü kurulduktan sonra, PHP’ye bu modülü kullanması gerektiğini belirtmemiz ve APC’nin çalışma şeklini yapılandırmamız gerekir.
APC Modülünü Etkinleştirme
APC modülünü etkinleştirmek için PHP yapılandırma dosyasına (php.ini) bir satır eklememiz gerekir.
1. php.ini Dosyasını Bulma:
PHP kurulumunuza bağlı olarak birden fazla php.ini dosyası olabilir. Genellikle Apache için ayrı, CLI (komut satırı) için ayrı bir php.ini bulunur.
* Apache için: /etc/php5/apache2/php.ini
* CLI için: /etc/php5/cli/php.ini
* Nginx + PHP-FPM için: /etc/php5/fpm/php.ini
Hangi php.ini dosyasının kullanıldığını öğrenmek için bir phpinfo() sayfası oluşturup Loaded Configuration File satırına bakabilirsiniz.
2. extension=apc.so Ekleme:
Seçtiğiniz php.ini dosyasını bir metin düzenleyici ile açın (örneğin nano):
sudo nano /etc/php5/apache2/php.ini
Dosyanın herhangi bir yerine (genellikle extension tanımlarının olduğu bir bölüme veya dosyanın sonuna) aşağıdaki satırı ekleyin:
extension=apc.so
Bu satır, PHP’ye apc.so modülünü yüklemesini söyler.
APC Ayarlarını Yapılandırma
php.ini dosyasında [apc] bloğu altında çeşitli ayarları yapılandırarak APC’nin davranışını optimize edebilirsiniz. İşte bazı önemli ayarlar ve açıklamaları:
Aynı php.ini dosyasına aşağıdaki bloğu ekleyin veya mevcutsa düzenleyin:
[apc]
apc.enabled = 1
apc.shm_size = 128M
apc.ttl = 3600
apc.user_ttl = 3600
apc.gc_ttl = 3600
apc.enable_cli = 1
apc.max_file_size = 1M
apc.stat = 0
apc.slam_defense = 0
apc.mmap_file_mask = /tmp/apc.XXXXXX
; apc.rfc1867 = 1 ; Dosya yükleme ilerlemesini izlemek için (isteğe bağlı)
; apc.filters = "apc_*.php" ; Belirli dosyaları önbelleğe almamak için
Şimdi bu ayarların her birini detaylandıralım:
* apc.enabled = 1: APC’yi etkinleştirir veya devre dışı bırakır. Değeri 0 olarak ayarlarsanız APC çalışmaz.
* apc.shm_size = 128M: APC’nin kullanacağı paylaşımlı bellek (Shared Memory) miktarını belirler. Bu değer, sunucunuzdaki RAM miktarına ve web uygulamanızın boyutuna göre ayarlanmalıdır. Küçük bir site için 32M veya 64M yeterli olabilirken, büyük ve karmaşık uygulamalar için 128M, 256M veya daha fazlası gerekebilir. Bellek doluluğunu apc.php yönetim paneli ile izleyerek bu değeri optimize edebilirsiniz.
* apc.ttl = 3600: Önbelleğe alınan opcode’ların bellekte ne kadar süreyle kalacağını saniye cinsinden belirler. Bu süre dolduktan sonra, eğer bellekte yer açılması gerekiyorsa, eski girdiler silinebilir. 0 olarak ayarlanırsa, girdiler hiçbir zaman otomatik olarak silinmez (yalnızca yer kalmadığında). Genellikle 3600 (1 saat) iyi bir başlangıç değeridir.
* apc.user_ttl = 3600: apc_store() ve apc_fetch() gibi fonksiyonlarla depolanan kullanıcı verilerinin bellekte ne kadar süreyle kalacağını belirler. Aynı apc.ttl gibi, bu süre dolduktan sonra veriler silinebilir.
* apc.gc_ttl = 3600: Çöp toplama (Garbage Collection) sürecinin ne kadar süreyle bekleyeceğini belirler. Bir önbellek girişi apc.ttl süresi dolduktan sonra “eski” olarak işaretlenir. apc.gc_ttl süresi ise, bu eski girdilerin ne kadar süre sonra gerçekten silinmeye uygun hale geleceğini belirler. Bu, özellikle yüksek trafikli sitelerde bellek yönetimi için önemlidir.
* apc.enable_cli = 1: PHP’nin komut satırı arayüzü (CLI) aracılığıyla çalıştırılan betikler için APC’yi etkinleştirir. Eğer komut satırından çalışan PHP betikleriniz (örneğin cron işleri) varsa ve bunların da önbelleklenmesini istiyorsanız bu değeri 1 yapın. Aksi takdirde 0 olarak bırakabilirsiniz.
* apc.max_file_size = 1M: Önbelleğe alınacak maksimum dosya boyutunu belirler. Bu değerden büyük dosyalar önbelleğe alınmaz. Varsayılan olarak 1MB çoğu senaryo için yeterlidir.
* apc.stat = 0: Bu ayar, PHP’nin her istekte betik dosyalarının değiştirilip değiştirilmediğini kontrol edip etmeyeceğini belirler.
* apc.stat = 1 (geliştirme ortamı için): Her istekte dosya değişikliklerini kontrol eder. Eğer bir PHP dosyasını değiştirirseniz, APC otomatik olarak yeni versiyonu önbelleğe alır. Bu, geliştirme sırasında kullanışlıdır ancak üretim ortamında performans düşüşüne neden olur.
* apc.stat = 0 (üretim ortamı için): Dosya değişikliklerini kontrol etmez. Bu, maksimum performans sağlar. Ancak, bir PHP dosyasını güncellediğinizde, APC’nin eski önbelleği kullanmaya devam edeceğini unutmayın. Önbelleği manuel olarak temizlemeniz (örneğin apc_clear_cache() fonksiyonuyla veya web sunucusunu yeniden başlatarak) veya apc.php panelinden temizlemeniz gerekir. Üretim ortamlarında kesinlikle 0 olarak ayarlanması önerilir.
* apc.slam_defense = 0: Yüksek eşzamanlı isteklerde önbellek oluşturma sırasında oluşabilecek “cache stampede” (önbellek damgası) sorununu hafifletmeye çalışır. 1 olarak ayarlanırsa, birden fazla işlemin aynı anda aynı betiği derlemesini önlemeye çalışır. Ancak bu, bazı durumlarda performansı düşürebilir. Çoğu durumda 0 olarak bırakmak yeterlidir.
* apc.mmap_file_mask = /tmp/apc.XXXXXX: APC’nin paylaşımlı belleği oluşturmak için kullanacağı mmap dosyasının adını ve konumunu belirler. /tmp/apc.XXXXXX varsayılan ve genellikle uygun bir değerdir.
* apc.rfc1867 = 1 (İsteğe Bağlı): Bu ayar, dosya yükleme ilerlemesini izlemek için kullanılır. Eğer uygulamanızda büyük dosya yüklemeleri varsa ve kullanıcıya ilerleme çubuğu göstermek istiyorsanız bu özelliği etkinleştirebilirsiniz. Aksi takdirde devre dışı bırakılabilir.
php.ini dosyasını kaydettikten sonra kapatın.
Web Sunucusunu Yeniden Başlatma
php.ini dosyasında yaptığınız değişikliklerin etkili olabilmesi için web sunucunuzu yeniden başlatmanız gerekmektedir.
* Apache HTTP Sunucusu Kullanıyorsanız:
sudo service apache2 restart
* Nginx ve PHP-FPM Kullanıyorsanız:
Önce PHP-FPM servisini, ardından Nginx servisini yeniden başlatın:
sudo service php5-fpm restart
sudo service nginx restart
Kurulumu Doğrulama
APC’nin başarılı bir şekilde kurulup etkinleştirildiğini kontrol etmenin birkaç yolu vardır.
phpinfo() ile Doğrulama
En basit yöntem, bir phpinfo() dosyası oluşturup tarayıcınızdan kontrol etmektir.
1. info.php Dosyası Oluşturma:
Web sunucunuzun kök dizininde (genellikle /var/www/ veya /var/www/html/) info.php adında yeni bir dosya oluşturun:
sudo nano /var/www/info.php
Dosyanın içine aşağıdaki kodu yapıştırın:
Dosyayı kaydedip kapatın.
2. Tarayıcıdan Kontrol Etme:
Tarayıcınızda http://sizin_sunucu_ip_adresiniz/info.php adresine gidin.
Açılan sayfada “APC” veya “Alternative PHP Cache” başlığını arayın. Eğer APC ile ilgili bir bölüm görüyorsanız ve apc.enabled değeri On ise, APC başarıyla kurulmuş ve etkinleştirilmiş demektir. Bu bölümde ayrıca yapılandırdığınız diğer APC ayarlarını da görebilirsiniz.
3. Güvenlik Uyarısı:
info.php dosyası sunucunuz hakkında hassas bilgiler içerdiğinden, doğrulama işleminden sonra bu dosyayı sunucunuzdan silmeyi unutmayın:
sudo rm /var/www/info.php
APC Yönetim Paneli (apc.php) ile Doğrulama
APC, önbellek istatistiklerini ve yönetimini sağlayan apc.php adında kullanışlı bir web tabanlı arayüz ile birlikte gelir. Bu panel, önbelleğin durumunu, doluluk oranını, isabet oranlarını ve diğer önemli metrikleri gerçek zamanlı olarak izlemenizi sağlar.
1. apc.php Dosyasını Bulma veya İndirme:
apc.php dosyası genellikle PECL ile APC kurulduğunda doc dizini altında bulunur. Bu dosyanın tam yolu, PHP sürümünüze ve kurulumunuza göre değişebilir, ancak genellikle /usr/share/php/apc.php veya /usr/share/doc/php-apc/apc.php gibi bir yerde olabilir.
Eğer bulamazsanız, PHP.net PECL sitesinden veya GitHub’dan (örneğin https://github.com/krakjoe/apcu/blob/master/apc.php – APCu sürümünde olsa da çoğu zaman uyumludur) indirip kullanabilirsiniz.
Örnek olarak, dosyayı kopyalama:
# Dosyanın yolunu kendi sisteminize göre ayarlayın
sudo cp /usr/share/php/apc.php /var/www/html/apc.php
veya GitHub’dan indirme:
cd /var/www/html/
sudo wget https://raw.githubusercontent.com/krakjoe/apcu/master/apc.php
2. Güvenlik Önlemleri:
apc.php paneli, hassas bilgiler içerdiğinden ve önbelleği temizleme gibi işlemleri yapabildiğinden, erişimini kısıtlamak kritik öneme sahiptir.
* Şifre Koruması: apc.php dosyasının en başında bulunan kullanıcı adı ve şifre ayarlarını düzenleyerek paneli koruyabilirsiniz. Dosyanın içeriğinde defaults('ADMIN_USERNAME','apc'); ve defaults('ADMIN_PASSWORD','password'); satırlarını bulup güvenli bir kullanıcı adı ve şifre ile değiştirin.
* IP Kısıtlaması (Web Sunucusu Yapılandırması): Apache veya Nginx yapılandırmanızda, apc.php dosyasına yalnızca belirli IP adreslerinden erişime izin verebilirsiniz.
* Apache için (örnek .htaccess dosyası /var/www/html/ içinde):
Order Deny,Allow
Deny from all
Allow from 192.168.1.100 # Kendi IP adresinizi buraya yazın
Allow from 127.0.0.1
* Nginx için (örnek server bloğu içinde):
location ~ /apc.php {
allow 192.168.1.100; # Kendi IP adresinizi buraya yazın
allow 127.0.0.1;
deny all;
fastcgi_pass unix:/var/run/php5-fpm.sock; # veya uygun olan yol
fastcgi_index index.php;
include fastcgi_params;
}
3. Paneli Kullanarak İstatistikleri İzleme:
Tarayıcınızda http://sizin_sunucu_ip_adresiniz/apc.php adresine gidin. Şifre koruması ayarladıysanız giriş yapın.
Bu panelde, opcode önbellek istatistiklerini, kullanıcı önbellek istatistiklerini, bellek kullanımını, isabet/kaçırılma oranlarını ve diğer faydalı bilgileri görebilirsiniz. Önbelleği manuel olarak temizlemek için de bu paneli kullanabilirsiniz.
Performans İpuçları ve En İyi Uygulamalar
APC’nin tam potansiyelinden yararlanmak için bazı en iyi uygulamaları takip etmek önemlidir.
* apc.shm_size Değerini Doğru Ayarlama: Bu, en kritik ayardır. Bellek doluluk oranını apc.php panelinden düzenli olarak izleyin. Eğer bellek sürekli doluysa ve misses (kaçırılanlar) oranı yüksekse, apc.shm_size değerini artırmanız gerekebilir. Çok fazla bellek ayırmak gereksiz kaynak israfına yol açarken, çok az bellek ayırmak önbelleğin verimsiz çalışmasına neden olur.
* apc.stat=0 (Üretim Ortamında): Daha önce de belirtildiği gibi, üretim ortamlarında dosya değişikliklerini kontrol etmeyi devre dışı bırakarak maksimum performans elde edin. Dosyaları güncelledikten sonra önbelleği manuel olarak temizlemeyi unutmayın.
* apc.enable_cli=1 (CLI tabanlı uygulamalar için): Eğer cron işleriniz veya komut satırından çalışan PHP betikleriniz varsa, bunların da önbelleklenmesini sağlamak için bu ayarı etkinleştirin.
* Bellek Doluluğunu İzleme: apc.php paneli üzerinden veya komut satırından apc_sma_info() gibi fonksiyonlarla bellek doluluk oranını ve önbellek isabet oranlarını düzenli olarak izleyin. Bu, APC yapılandırmanızın etkinliğini değerlendirmenize yardımcı olacaktır.
* Diğer Önbellekleme Çözümleriyle Entegrasyon: APC’nin opcode önbellekleme ve kullanıcı verisi önbellekleme yetenekleri olsa da, Memcached veya Redis gibi harici önbellekleme sistemleri, kullanıcı oturumları, veritabanı sorgu sonuçları veya büyük nesneler gibi verileri depolamak için daha ölçeklenebilir ve kalıcı çözümler sunabilir. APC’yi opcode önbellekleme için kullanırken, kullanıcı verileri için harici bir önbellek sunucusu kullanmayı düşünebilirsiniz.
* Önbelleği Temizleme Stratejisi: apc.stat=0 kullanıyorsanız, kod güncellemelerinden sonra APC önbelleğini temizlemek için bir stratejiniz olmalıdır. Bu, apc.php panelinden manuel olarak yapılabilir, dağıtım betiklerinize apc_clear_cache() çağrısı eklenebilir veya web sunucusu yeniden başlatılabilir.
Sorun Giderme
Kurulum veya yapılandırma sırasında karşılaşabileceğiniz bazı yaygın sorunlar ve çözümleri:
* APC Modülü Yüklenmiyor:
* php.ini dosyasında extension=apc.so satırının doğru bir şekilde eklendiğinden ve yolun doğru olduğundan emin olun.
* Web sunucusunu yeniden başlattığınızdan emin olun.
* PHP hata günlüklerini kontrol edin (Apache için /var/log/apache2/error.log, Nginx için /var/log/nginx/error.log ve PHP-FPM için /var/log/php5-fpm.log veya benzeri). Modül yükleme hataları genellikle burada görünür.
* apc.so dosyasının gerçekten PHP uzantıları dizininde (/usr/lib/php5/20100525/ gibi) olduğundan emin olun.
* Gerekli bağımlılıkların (php5-dev, build-essential vb.) yüklü olduğundan emin olun.
* Bellek Doluluğu ve Düşük İsabet Oranı:
* apc.shm_size değerini artırmayı deneyin.
* apc.ttl ve apc.gc_ttl değerlerini uygulamanızın ihtiyaçlarına göre ayarlayın. Çok kısa TTL’ler, önbelleğin sık sık temizlenmesine neden olabilir.
* apc.stat=0 olarak ayarlandığından emin olun (üretim ortamı için).
* Uygulamanızın çok sayıda farklı PHP dosyası kullanıp kullanmadığını kontrol edin.
* Web Sunucusu Başlamıyor:
* php.ini dosyasındaki herhangi bir sözdizimi hatasını kontrol edin. Genellikle bir hata varsa web sunucusu başlatılamaz ve hata günlüklerine yazılır.
* Modül yolunun doğru olduğundan emin olun.
* apc.php Erişimi Sorunları:
* Dosyanın web sunucusunun erişebileceği bir dizine kopyalandığından emin olun.
* Dosya izinlerini kontrol edin (genellikle www-data kullanıcısının okuma izni olmalıdır).
* Web sunucusu yapılandırmanızda (Apache httpd.conf veya Nginx nginx.conf) apc.php için herhangi bir kısıtlama olup olmadığını kontrol edin.
Sonuç
Alternative PHP Cache (APC), Ubuntu 12.04 gibi daha eski işletim sistemlerinde çalışan PHP uygulamalarının performansını önemli ölçüde artırmak için hala değerli ve etkili bir araçtır. Opcode önbellekleme ve kullanıcı verisi önbellekleme yetenekleri sayesinde, sunucu kaynaklarının daha verimli kullanılmasına olanak tanır, sayfa yükleme sürelerini kısaltır ve genel kullanıcı deneyimini iyileştirir.
Bu rehberde, APC’nin kurulum öncesi hazırlıklarından başlayarak, PECL aracılığıyla kolay kurulumuna, detaylı PHP yapılandırmasına, web sunucusunun yeniden başlatılmasına ve kurulumun doğrulanmasına kadar tüm adımları kapsamlı bir şekilde ele aldık. Ayrıca, performans ipuçları, en iyi uygulamalar ve karşılaşabileceğiniz yaygın sorunlara yönelik çözüm önerileri sunarak, APC’yi sunucunuzda en verimli şekilde kullanmanızı hedefledik.
Unutulmamalıdır ki, PHP ekosistemi sürekli gelişmektedir ve PHP 5.5’ten itibaren APC’nin yerini OPcache almıştır. Ancak, mevcut eski altyapılarınızda veya yükseltme şansınızın olmadığı durumlarda, APC, performansı artırmak için başvurabileceğiniz güçlü bir çözümdür. Bu rehberdeki adımları dikkatlice takip ederek, Ubuntu 12.04 bulut sunucunuzda APC’yi başarıyla kurabilir ve web uygulamalarınızın hızında gözle görülür bir iyileşme sağlayabilirsiniz. Daha hızlı ve daha verimli web siteleri, hem kullanıcı memnuniyetini artırır hem de sunucu maliyetlerinde potansiyel tasarruflar sunar.
