Apache, doğru yapılandırmalar ve modüllerle Nginx’e yakın hızda çalışabilir. Bu döküman, Apache’yi hızlandırmak ve performansını artırmak için izlenmesi gereken adımları detaylı bir şekilde açıklamaktadır.
Apache’nin Multi-Processing Modülleri (MPM), bağlantıları yönetir. Event MPM, asenkron, olay tabanlı bir model sunar ve Nginx’e benzer performans sağlar.
-
Öncelikle mevcut MPM modülünü devre dışı bırakın (varsayılan olarak Prefork etkin olabilir):
sudo a2dismod mpm_prefork
-
Event MPM modülünü etkinleştirin:
sudo a2enmod mpm_event
-
Apache’yi yeniden başlatın:
sudo systemctl restart apache2
- Prefork MPM, her bağlantı için bir işlem oluşturduğu için kaynak tüketimi yüksektir.
- Event MPM, asenkron olarak çalışır ve daha az kaynak kullanarak yüksek bağlantı sayısını yönetebilir.
Statik dosyaların hızlı bir şekilde sunulması için önbellekleme önemlidir.
-
Apache önbellek modüllerini etkinleştirin:
sudo a2enmod cache cache_disk
-
Önbellek yapılandırmasını Apache konfigürasyon dosyanıza ekleyin:
<IfModule mod_cache.c> CacheQuickHandler On CacheLock On CacheRoot "/var/cache/apache2" CacheEnable disk / CacheIgnoreNoLastMod On </IfModule>
- Önbellekleme, sık erişilen içeriklerin bellekte veya disk üzerinde tutulmasını sağlar, böylece sunucunun her istekte dosyayı yeniden oluşturması gerekmez.
HTTP/2, bağlantıları çoklama (multiplexing) ile gecikmeyi azaltır ve daha hızlı veri aktarımı sağlar.
-
HTTP/2 modülünü etkinleştirin:
sudo a2enmod http2
-
SSL ile çalışan sanal sunucularınızın yapılandırmasına şu satırı ekleyin:
<VirtualHost *:443> Protocols h2 http/1.1 ... </VirtualHost>
- HTTP/2, özellikle birden fazla dosyanın (CSS, JS, resimler) aynı anda indirildiği durumlarda büyük performans kazançları sağlar.
Statik dosyalar sunulurken gereksiz işlemcileri (örneğin PHP) devreye sokmamak, performansı artırır.
-
mod_expires
vemod_headers
modüllerini etkinleştirin:sudo a2enmod expires headers
-
Statik dosyalar için önbellekleme başlıklarını yapılandırın:
<FilesMatch "\.(jpg|jpeg|png|gif|css|js|ico|svg|woff|woff2|ttf|eot|otf|html|pdf)$"> Header set Cache-Control "max-age=31536000, public" </FilesMatch>
- Tarayıcı önbelleğini etkinleştirerek statik dosyaların tekrar indirilmeye çalışılmasını önlersiniz, bu da yükleme süresini azaltır.
Dosyaları istemciye göndermeden önce sıkıştırmak, bant genişliğini azaltır ve aktarım hızını artırır.
-
mod_deflate
modülünü etkinleştirin:sudo a2enmod deflate
-
Sıkıştırma kurallarını yapılandırın:
<IfModule mod_deflate.c> AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript application/json application/xml </IfModule>
- Sıkıştırma, özellikle büyük boyutlu HTML, CSS ve JavaScript dosyalarının hızlı yüklenmesini sağlar.
KeepAlive, istemci-sunucu arasındaki bağlantıyı açık tutarak yeni bağlantıların oluşturulması için harcanan süreyi azaltır.
Apache konfigürasyon dosyasına aşağıdaki ayarları ekleyin:
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 2
- KeepAlive, istemci ile birden fazla dosya indirilirken aynı bağlantıyı kullanarak performansı artırır.
Dinamik istekleri veya API işlemlerini bir backend sunucuya (örneğin, Node.js) yönlendirmek için Apache reverse proxy olarak kullanılabilir.
-
Gerekli modülleri etkinleştirin:
sudo a2enmod proxy proxy_http
-
Sanal sunucu yapılandırmanıza şu satırları ekleyin:
<VirtualHost *:80> ProxyPreserveHost On ProxyPass /api http://localhost:3000/ ProxyPassReverse /api http://localhost:3000/ </VirtualHost>
- Apache, reverse proxy olarak çalışarak istemcilerin backend sunucuya erişimlerini kolaylaştırır ve güvenlik sağlar.
Statik içerikleri (CSS, JavaScript, resimler) bir Content Delivery Network (CDN) üzerinden sunarak sunucu yükünü azaltabilir ve gecikmeyi düşürebilirsiniz.
- CDN, içerikleri kullanıcıya coğrafi olarak en yakın sunucudan sunarak daha hızlı yükleme süreleri sağlar.
Kullanılmayan modülleri devre dışı bırakmak, Apache’nin bellek tüketimini azaltır.
sudo a2dismod autoindex status cgi cgid
- Gereksiz modülleri kapatmak, daha az kaynak kullanımı sağlar ve sunucunun daha verimli çalışmasına olanak tanır.
Apache’nin performansını izlemek için şu araçları kullanabilirsiniz:
mod_status
: Gerçek zamanlı Apache durumu.htop
: Sunucu işlem durumu.iostat
vesar
: Disk ve ağ performans analizi.
mod_status
modülünü etkinleştirin:sudo a2enmod status
- Durum bilgilerini tarayıcıdan görüntüleyin:
http://your-server/status