Unterstütze unsere Tutorials mit einem WerbeClick!

Apache 2.4 mit FCGI und php 7.2

Vorwort

Unter Debian basierenden Systemen läuft der Apache Dienst mit dem User www-data.
Will man das ändern, zum Beispiel weil sich mehrere User mit unterschiedlichen VHOSTS verbinden und Dateien per SFTP austauschen wollen,
dann empfiehlt es sich auf FCGID umzustellen.

Wichtig
Ein Parallelbetrieb mit php modul und fcgi ist nicht möglich!

Pakete installieren

apt install libapache2-mod-fcgid apache2-suexec-pristine php7.2-cgi

Apache Module einrichten

# a2dismod php7.2

# a2enmod fcgid
# a2enmod suexec

Max Upload Size

Die Größe der upload_max_filesize in der php.ini Datei muss mit dieser Einstellung übereinstimmen!

# /etc/apache2/mods-available/fcgid.conf
...
MaxRequestLen 131072
...

(Angaben in Byte)

SUEXEC konfigurieren

# /usr/lib/apache2/suexec -V
 -D AP_DOC_ROOT="/var/www"
 -D AP_GID_MIN=100
 -D AP_HTTPD_USER="www-data"
 -D AP_LOG_EXEC="/var/log/apache2/suexec.log"
 -D AP_SAFE_PATH="/usr/local/bin:/usr/bin:/bin"
 -D AP_UID_MIN=100
 -D AP_USERDIR_SUFFIX="public_html"

Suexec erwartet die Scripte im DOC_ROOT

# mkdir -p /var/www/php-fcgid

Das FCGIWrapper Script sollte so ausehen:

# /var/www/php-fcgid/fcgid-starter
#!/bin/sh 
PHPRC=/etc/php/7.2/cgi
export PHPRC
export PHP_FCGI_MAX_REQUESTS=5000
export PHP_FCGI_CHILDREN=8
exec /usr/lib/cgi-bin/php

Die Variable PCHPRC gibt an welche php.ini Datei verwendet werden soll.
Hier ein paar empfohlene Einstellungen:

/etc/php/7.2/cgi/php.ini
...
post_max_size = 64M

upload_max_filesize = 64M

cgi.fix_pathinfo = 1

User für FCGI anlegen

In unserem Beispiel soll der User web1 verwendet werden.

adduser web1 --home /your/docroot

Rechte für das FCGI Wrapper Script einrichten

# chown -R web1:web1 /var/www/php-fcgid
# chmod -R u+x /var/www/php-fcgid/fcgid-starter

Apache vHost einrichten

<VirtualHost *:80>

        ServerName your-page.localhost
        DocumentRoot "/your/docroot/"
        DirectoryIndex index.php

        SuexecUserGroup "web1" "web1"

        <Directory "/your/docroot/">
                Options Indexes FollowSymLinks ExecCGI

                AddHandler fcgid-script .php
                FCGIWrapper /var/www/php-fcgid/fcgid-starter .php

                AllowOverride All
                Allow from All
                Require all granted
        </Directory>

</VirtualHost>

Die Rechte für /your/docroot sollten entsprechend gesetzt sein!

# chown -R web1:web1 /your/docroot/

Jetzt den Apache2 Dienst neu starten und testen!

service apache2 restart

Logfiles für Fehlersuche

/var/log/syslog
/var/log/apache2/suexec.log
/var/log/apache2/error.log
Unterstütze unsere Tutorials mit einem Werbeclick!

Über uns

Wir sind ein agiles Team von Softwareentwicklungen, UX-Designern und IT-Supporten und haben uns auf individuelle Softwarelösung für den Mittelstand spezialisiert. Unsere besondere Stärken sind  Web-Anwendungen mit dem Symfony Framework sowie individuelle Industrielösungen für Produktionslinien, Servicetechniker oder Inspekteure zu entwickeln. Eine weitere Stärke ist die Erweiterung von Content Management Systemen wie beispielsweise Wordpress, Typo3, Drupal und Joomla. Das entwickeln von Apps für Android, Windows und Apple OS Systemen ist selbstverständlich!