Alle Kategorien:
  E V T Z Allgemein
 EVTZ-Datenbank
  E V T Z Dokumente
 Kommentare
 Literaturdatenbank
  E V T Z Praxis
 Rechtsprechungsdatenbank
 Rechtsvorschriften
  Kooperationsinstrumente
 Startseite

Version [3891]

Dies ist eine alte Version von ApacheKonfigurieren erstellt von WojciechLisiewicz am 2022-07-10 16:52:35.

 

Apache

Konfiguration des Webservers am Beispiel v. 2.4 - einschließlich anderer FAMP-Funktionen


A. Welche Pakete sind notwendig
Mit PKG sollen insbesondere folgende installiert werden:
pkg install <paket>
  • apache
  • php-fpm
  • php-xxx

B. Einzelne PHP-module
Welche sind installiert (auch fest einkompiliert)?
Befehl:
php -m
Wir haben folgende genommen (die meisten wegen nextcloud):
[PHP Modules]
apcu
bcmath bz2
Core ctype curl
date dom
exif
fileinfo filter
gd gmp hash
iconv imagick intl json
ldap libxml mbstring
mysqli mysqlnd openssl
pcre PDO pdo_mysql
posix redis Reflection
session SimpleXML SPL standard
xml xmlreader xmlwriter xsl
Zend OPcache zip zlib

[Zend Modules]
Zend OPcache


C. Konfiguration für PHP mit FPM [1]
mod_php soll nicht so sicher und nicht so performant sein. Also versuchen wir, PHP mit FPM (Fast CGI proxy) zu betreiben...

1. PHP-FPM Konfiguration

Konfigurationsdateien:
/usr/local/etc/php-fpm.conf (aber diese ist nicht so interessant...);
dafür diese:
/usr/local/etc/php-fpm.d/www.conf
edit:
listen = /tmp/php-fpm.sock
listen.owner = www
listen.group = www


2. Module in https.conf
In der config von apache (/etc/apache2/ unter Linux oder /usr/local/etc/apache24/ unter Freebsd) sollten folgende Module aktiviert werden:

LoadModule mpm_event_module libexec/apache24/mod_mpm_event.so
#LoadModule mpm_prefork_module libexec/apache24/mod_mpm_prefork.so
#LoadModule mpm_worker_module libexec/apache24/mod_mpm_worker.so
LoadModule proxy_module libexec/apache24/mod_proxy.so
LoadModule proxy_fcgi_module libexec/apache24/mod_proxy_fcgi.so
nur mpm_event_module soll aktiviert sein - keine weiteren mpms!


D. Virtual Hosts

Virtuelle Webseiten / Webserver ermöglichen mehrere Dienste auf einer Maschine. Dazu gelten folgende Empfehlungen:
  • in einem sollte die Direktive ServerName genutzt werden - sonst wird das ganze System der virtuellen Hosts nicht sinnvoll funktionieren;
  • separate logs je host laufen so:
ServerName vhost1
CustomLog /pfad/zu/logs/vhost1_log combined
ErrorLog /pfad/zu/logs/vhost1_errorlog



E. phpMyAdmin
Das Tool funktioniert, wenn PHP richtig eingerichtet ist - insbesondere PHP-FPM muss laufen - und die Einstellungen auch sonst korrekt sind.

Mit mySQL 8.0 und PHP 7.4 war die Anmeldung anfangs nicht möglich. Dagegen hat geholfen:
  • mysql -u root -p
  • ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'mypwd';
  • exit


F. Zugrifssbeschränkungen
Wenn ein Verzeichnis auf dem Webserver mit einem Passwort geschützt werden soll, kann dies mit Apache eingerichtet werden. Früher setzte ich auf Digest-Authentication, aber diese ist gar nicht so sicher und aktuell muss man eh jede Seite mit SSL ausstatten. Deshalb ist die Basic-Authentication per SSL genauso gut...

1. Notwendige Module
Für die basic-authentication / authorization brauchen wir:
  • Authentication type: mod_auth_basic (auth-type)
  • Authentication provider: mod_authn_file (auth-basic-provider)
  • Authorization: mod_authz_groupfile / mod_authz_user
  • und in jedem Fall auch: mod_authn_core + mod_authz_core

2. Passwörter festlegen und speichern
htpasswd -c /usr/local/pfad/zu/passwordfile username

3. Konfiguration der entsprechenden Verzeichnisse
Am besten unter der Anweisung <Directory> die Konfiguration vornehmen:
<Directory "/usr/local/hier/nur/mit/anmeldung">
(Einstellungen wie sonst)
...
AuthType Basic
AuthName "Restricted Files"
# (Following line optional)
AuthBasicProvider file
AuthUserFile "/usr/local/pfad/zu/passwordfile"
Require user username
<Directory>


4. Einige ältere Informationen zum Thema
Bezogen auf PHPmyAdmin:
  • add module "digest" to /etc/apache2/mods-enabled/
  • edit /etc/phpmyadmin/apache.conf:
  • AuthType Digest
    ...


a. benötigte Module
ln -s auth_digest.load in /etc/apache2/mods-enabled/

b. virtual hosts konfigurieren
edit /etc/apache2/sites-enabled/XXXX.conf
(apache)
Alias /path-in-browser /path/on/localfilesystem
<Directory /path/on/localfilesystem>
Options FollowSymLinks
DirectoryIndex index.php
<IfModule mod_authn_file.c>
AuthType Digest
AuthName "your_realm"
AuthUserFile /path/to/filewithdigestpwd
</IfModule>
Require valid-user
</Directory>





G. SSL Zertifikat mit Let's Encrypt
Folgende Anleitung haben wir genutzt:
https://certbot.eff.org/lets-encrypt/freebsd-apache.html
=> mit dem Unterschied, dass wir py37-certbot (statt py36-certbot) installieren mussten;
Aktualisierte Anleitung (falls die oben nicht auffindbar):
=> https://certbot.eff.org/instructions?ws=apache&os=freebsd
(im Juli 2022 war dann auch schon neuere Python-Version: also py38-certbot)

Nachdem das Skript durch war wurden die Zertifikatsdateien eingebunden in /usr/local/etc/apache24/httpd.conf:
SSLEngine on
SSLCertificateFile "/usr/local/etc/letsencrypt/live/domain.tld/fullchain.pem"
SSLCertificateKeyFile "/usr/local/etc/letsencrypt/live/domain.tld/privkey.pem"

Und zwar in jedem Virtual Host.

Für die automatische Aktualisierung mit certbot in folgender Umgebung: brauchen wir:
  • script, mit dem Webserver ausgeschaltet wird und certbot-renew erfolgt
Also konkret:
#!/bin/sh
LOG_FILE=/path/where/logfile/is/letsencrypt_log ;
date >> $LOG_FILE ;
echo "stop apache" >> $LOG_FILE ;
service apache24 stop >> $LOG_FILE ;
echo "renew certificates" >> $LOG_FILE ;
certbot renew >> $LOG_FILE ;
echo "start apache again" >> $LOG_FILE ;
service apache24 start >> $LOG_FILE ;
echo "if no error to see - operation succesful" >> $LOG_FILE ;
  • dieses script in crontab packen
crontab -e
44 4 * * 6 /path/where/script/is/letsencrypt_renew.sh => jeden Samstag um 4:44 Uhr prüfen!

H. WebDav in Apache einrichten
modules to load in httpd.conf

LoadModule dav_module mod_dav.so
LoadModule dav_fs_module mod_dav_fs.so


folder and permissions

mkdir /my_path_for_webserver_data/webdav
sudo chown _www:_www /my_path_for_webserver_data/webdav


host config in the httpd
Alias /youralias "/path/to/webdav/foldername"
<Directory "/path/to/webdav/foldername">
Dav On
Order Allow,Deny
Allow from all
AuthType Digest
AuthName [realm]
AuthUserFile "/path/to/file/file.name"
AuthDigestProvider file
require user [username]
</Directory>

create passwords for login
htdigest "/path/to/file/file.name" [realm] [username]
if no password file existent:
htdigest -c "/path/to/file/file.name" [realm] [username]



[1] Gute Quelle zum Thema Apache / FreeBSD / PHP-FPM: https://medium.com/@clpo13/apache-and-php-fpm-on-freebsd-a41e832ae8cc.
[2] Falls eine Abkürzung gewünscht ist und gar nichts verstanden werden muss - es geht auch recht schnell mit Caddy 1.0 mit diesem Skript: https://www.ixsystems.com/community/resources/scripted-installation-of-nextcloud-19-in-iocage-jail.90/
Auf dieser Seite sind keine Kommentare vorhanden