Version [3896]
Dies ist eine alte Version von ApacheKonfigurieren erstellt von WojciechLisiewicz am 2022-07-10 17:05:47.				
				
Inhaltsverzeichnis des Artikels
A.  Welche Pakete sind notwe...
B. Einzelne PHP-module
C. Konfiguration für PHP mi...
1. PHP-FPM Konfiguration
2. Module in httpd.conf
D. Virtual Hosts
E. phpMyAdmin
F. Zugrifssbeschränkungen
1. Notwendige Module
2. Passwörter festlegen und...
3. Konfiguration der entspr...
4. Einige ältere Informatio...
a. benötigte Module
b. virtual hosts konfigurie...
G. SSL Zertifikat mit Let's...
H. WebDav in Apache einrich...
B. Einzelne PHP-module
C. Konfiguration für PHP mi...
1. PHP-FPM Konfiguration
2. Module in httpd.conf
D. Virtual Hosts
E. phpMyAdmin
F. Zugrifssbeschränkungen
1. Notwendige Module
2. Passwörter festlegen und...
3. Konfiguration der entspr...
4. Einige ältere Informatio...
a. benötigte Module
b. virtual hosts konfigurie...
G. SSL Zertifikat mit Let's...
H. WebDav in Apache einrich...
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...
	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 httpd.conf
In der config von apache (/etc/apache2/ unter Linux oder /usr/local/etc/apache24/ unter Freebsd) sollten folgende Module aktiviert werden:
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!#""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
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
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...
- 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
	3.  Konfiguration der entsprechenden Verzeichnisse
Am besten unter der Anweisung <Directory> die Konfiguration vornehmen:
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>
- add module "digest" to /etc/apache2/mods-enabled/
- edit /etc/phpmyadmin/apache.conf:
			AuthType Digest
		
	
			... 
		
	
		(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:
- apache als Webserver
- script, mit dem Webserver ausgeschaltet wird und certbot-renew erfolgt
#!/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 ;
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
44 4 * * 6 /path/where/script/is/letsencrypt_renew.sh => jeden Samstag um 4:44 Uhr prüfen!
H. WebDav in Apache einrichten
		LoadModule dav_module mod_dav.so
	
		LoadModule dav_fs_module mod_dav_fs.so
	
		mkdir /my_path_for_webserver_data/webdav
	
		sudo chown _www:_www /my_path_for_webserver_data/webdav
	
		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>
	
		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/
Diese Seite wurde noch nicht kommentiert. 
