Apache 2.4 mit FCGI und php 7.2
Write a commentVorwort
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
You are a guest
or post as a guest
Be the first to comment.