Berikut adalah penjelasan lengkap tentang bagaimana mempercepat Apache2 di Ubuntu, file yang diubah, dan langkah-langkah optimasinya:


1. File Utama Konfigurasi Apache

Lokasi: /etc/apache2/apache2.conf

Perubahan:

Optimasi Proses dan Worker
Sesuaikan pengaturan MPM (Multi-Processing Modules) dengan beban server Anda. Jika menggunakan MPM Prefork, tambahkan atau ubah konfigurasi berikut:
<IfModule mpm_prefork_module>
    StartServers          2
    MinSpareServers       5
    MaxSpareServers       10
    MaxRequestWorkers     150
    MaxConnectionsPerChild 3000
</IfModule>

Jika menggunakan MPM Event (direkomendasikan untuk performa lebih tinggi), tambahkan:
<IfModule mpm_event_module>
    StartServers          2
    MinSpareThreads       25
    MaxSpareThreads       75
    ThreadLimit           64
    ThreadsPerChild       25
    MaxRequestWorkers     300
    MaxConnectionsPerChild 10000
</IfModule>

Aktifkan KeepAlive dan Sesuaikan Timeout Di dalam file yang sama:
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 2


2. Aktifkan Mod Gzip

Lokasi: /etc/apache2/mods-enabled/

Langkah-langkah:

Aktifkan modul mod_deflate:
sudo a2enmod deflate
sudo systemctl restart apache2

Tambahkan konfigurasi berikut di file /etc/apache2/conf-available/deflate.conf:
<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css
    AddOutputFilterByType DEFLATE application/javascript application/json
    BrowserMatch ^Mozilla/4 gzip-only-text/html
    BrowserMatch ^Mozilla/4\.0[678] no-gzip
    BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
</IfModule>

Pastikan untuk mereload:
sudo systemctl restart apache2


3. Aktifkan Cache untuk File Statis

Lokasi: File konfigurasi virtual host, seperti /etc/apache2/sites-available/000-default.conf

Perubahan:

Tambahkan pengaturan cache untuk file statis:
<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresByType image/jpg "access plus 1 year"
    ExpiresByType image/jpeg "access plus 1 year"
    ExpiresByType image/gif "access plus 1 year"
    ExpiresByType image/png "access plus 1 year"
    ExpiresByType text/css "access plus 1 month"
    ExpiresByType text/javascript "access plus 1 month"
    ExpiresByType application/javascript "access plus 1 month"
    ExpiresByType application/pdf "access plus 1 month"
    ExpiresByType image/x-icon "access plus 1 year"
</IfModule>

Aktifkan modul mod_expires dan mod_headers jika belum aktif:
sudo a2enmod expires
sudo a2enmod headers
sudo systemctl restart apache2


4. Aktifkan HTTP/2

Lokasi: File virtual host yang menggunakan HTTPS, seperti /etc/apache2/sites-available/your-site.conf

Langkah-langkah:

Aktifkan modul HTTP/2:
sudo a2enmod http2
sudo systemctl restart apache2

Tambahkan Protocols h2 http/1.1 ke konfigurasi virtual host:
<VirtualHost *:443>
    Protocols h2 http/1.1
    ServerName yourdomain.com
    DocumentRoot /var/www/html
    SSLEngine on
    SSLCertificateFile /etc/ssl/certs/your_cert.crt
    SSLCertificateKeyFile /etc/ssl/private/your_cert.key
    ...
</VirtualHost>


5. Konfigurasi Kernel Parameters

Lokasi: /etc/sysctl.conf

Perubahan:

Tambahkan pengaturan kernel berikut untuk meningkatkan performa:
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535
net.ipv4.tcp_fin_timeout = 15

Terapkan pengaturan ini:
sudo sysctl -p


6. File Limits

Lokasi: /etc/security/limits.conf

Perubahan:

Tambahkan batasan file yang lebih besar:
*               soft    nofile          65535
*               hard    nofile          65535


7. Optimasi Modul yang Dimuat

Langkah-langkah:
Matikan modul yang tidak dibutuhkan untuk mempercepat startup Apache:
sudo a2dismod status
sudo a2dismod autoindex

Aktifkan hanya modul yang diperlukan, seperti:
  • rewrite
  • headers
  • deflate
  • http2
  • expires

Langkah Akhir

Cek Konfigurasi Apache: Periksa apakah konfigurasi tidak ada error:
sudo apache2ctl configtest

Restart Apache: Terapkan perubahan:
sudo systemctl restart apache2


Tips Tambahan

  • Gunakan CDN (Content Delivery Network): Untuk mendistribusikan file statis lebih cepat.
  • Pantau Trafik: Gunakan alat seperti top, htop, atau Apache Bench (ab) untuk melihat performa server.
  • Gunakan Versi Terbaru Apache2: Update secara berkala untuk mendapatkan fitur terbaru dan peningkatan keamanan.
Dengan langkah-langkah ini, server Apache2 Anda akan lebih cepat dan efisien, bahkan untuk menangani lalu lintas yang tinggi.