Yazı Boyutu:

Apache Webserver: Installation und Performance-Optimierung von A bis Z (mit PHP-FPM & FastCGI)

Dieser Blogbeitrag führt Sie durch die vollständige Installation und Optimierung eines Apache Webservers, wobei der Fokus auf der Integration von PHP-FPM und FastCGI liegt, um die Performance deutlich zu verbessern. Wir decken alle Schritte von der Installation bis zur fortgeschrittenen Konfiguration ab.

Inhaltsverzeichnis

  1. Apache Webserver Installation
  2. Grundkonfiguration von Apache
  3. PHP Installation und Konfiguration
  4. PHP-FPM Installation und Konfiguration
  5. Integration von Apache mit PHP-FPM via FastCGI
  6. Performance-Optimierung
  7. KeepAlive Einstellungen
  8. Mod_deflate (Kompression)
  9. Caching-Strategien
  10. HTTP/2 aktivieren
  11. Sicherheit
  12. Monitoring und Logging
  13. Fazit

1. Apache Webserver Installation

Die Installation von Apache ist plattformabhängig. Hier zeigen wir die Installation unter Debian/Ubuntu und CentOS/RHEL.

Debian/Ubuntu

sudo apt update
sudo apt install apache2

CentOS/RHEL

sudo yum update
sudo yum install httpd
sudo systemctl start httpd
sudo systemctl enable httpd

2. Grundkonfiguration von Apache

Die Hauptkonfigurationsdatei für Apache befindet sich üblicherweise unter /etc/apache2/apache2.conf (Debian/Ubuntu) oder /etc/httpd/conf/httpd.conf (CentOS/RHEL). Einige wichtige Konfigurationen umfassen:

  • ServerName: Setzen Sie den Servernamen auf Ihren Domainnamen oder die IP-Adresse.
  • VirtualHosts: Konfigurieren Sie VirtualHosts für jede Website, die auf dem Server gehostet wird.
  • DocumentRoot: Geben Sie das Wurzelverzeichnis für jede Website an.

Beispiel einer VirtualHost-Konfiguration (/etc/apache2/sites-available/meine-seite.conf):

<VirtualHost *:80>
    ServerName meine-seite.de
    DocumentRoot /var/www/meine-seite

    <Directory /var/www/meine-seite>
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Aktivieren Sie die Seite mit:

Debian/Ubuntu

sudo a2ensite meine-seite.conf
sudo systemctl reload apache2

CentOS/RHEL

# Inkludieren Sie die Konfigurationsdatei in der httpd.conf
# z.B. Include /etc/httpd/conf.d/meine-seite.conf
sudo systemctl reload httpd

3. PHP Installation und Konfiguration

Installieren Sie PHP, die benötigten Erweiterungen und das PHP-FPM Paket.

Debian/Ubuntu

sudo apt install php php-cli php-fpm php-mysql php-gd php-curl php-xml php-mbstring

CentOS/RHEL

sudo yum install php php-cli php-fpm php-mysqlnd php-gd php-curl php-xml php-mbstring
sudo systemctl start php-fpm
sudo systemctl enable php-fpm

Die PHP-Konfigurationsdatei (php.ini) befindet sich üblicherweise unter /etc/php/[PHP-VERSION]/php.ini (Debian/Ubuntu) oder /etc/php.ini (CentOS/RHEL). Passen Sie diese Datei entsprechend Ihren Bedürfnissen an.

4. PHP-FPM Installation und Konfiguration

PHP-FPM (FastCGI Process Manager) ist eine alternative PHP FastCGI Implementierung mit einigen zusätzlichen Funktionen, die für hochfrequentierte Websites nützlich sind. Die Hauptkonfigurationsdatei befindet sich unter /etc/php/[PHP-VERSION]/fpm/php-fpm.conf und die Pool-Konfigurationen unter /etc/php/[PHP-VERSION]/fpm/pool.d/.

Erstellen Sie eine Pool-Konfiguration für Ihre Website (z.B. /etc/php/[PHP-VERSION]/fpm/pool.d/meine-seite.conf):

[meine-seite]
user = www-data
group = www-data
listen = /run/php/php[PHP-VERSION]-fpm-meine-seite.sock
listen.owner = www-data
listen.group = www-data

pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3

php_admin_value[error_log] = /var/log/php-fpm-meine-seite-error.log
php_admin_flag[log_errors] = on

Ersetzen Sie [PHP-VERSION] durch die tatsächliche PHP-Version (z.B. 7.4, 8.0). Passen Sie user und group an den Benutzer und die Gruppe an, unter denen Ihr Webserver läuft (üblicherweise www-data oder apache).

Starten/Neustarten Sie PHP-FPM:

sudo systemctl restart php[PHP-VERSION]-fpm

5. Integration von Apache mit PHP-FPM via FastCGI

Konfigurieren Sie Apache, um PHP-Dateien über FastCGI an PHP-FPM zu übergeben. Bearbeiten Sie die VirtualHost-Konfiguration Ihrer Website (z.B. /etc/apache2/sites-available/meine-seite.conf):

<VirtualHost *:80>
    ServerName meine-seite.de
    DocumentRoot /var/www/meine-seite

    <Directory /var/www/meine-seite>
        AllowOverride All
        Require all granted
    </Directory>

    <FilesMatch \.php$>
        SetHandler "proxy