Welche Pakete zu installieren und zu konfigurieren sind, erklären wir in wenigen Schritten in diesem Artikel. Wir verwenden eine Umgebung ohne Desktop.
Wenn Sie Ubuntu installieren, gelangen Sie schließlich zu einem "Softwareauswahl"-Dialog, der eine Liste von Kontrollkästchen enthält, um die Software auszuwählen, die Sie zunächst installieren möchten. Hier ist das Kontrollkästchen "Ubuntu-Desktop-Umgebung" bereits angekreuzt. Wenn Sie dieses Kontrollkästchen deaktivieren und alle anderen Kontrollkästchen für die Desktop-Umgebung (GNOME, Xfce usw.) nicht ankreuzen, führt dies zu einer GUI-losen Installation:
Dieser Artikel bezieht sich auf Ubuntu 24.04.1 "Noble Numcat". Um zu bestimmen, welche Ubuntu Version eingesetzt wird, kann auf der Konsole dieser Befehl ausgeführt werden:
1
cat/etc/os-release
Als Systemarchitektur sollte ein x86 in 64bit zum Einsatz kommen:
1
uname-m
x86_64 bedeutet 64bit, i386 oder i686 lediglich 32bit.
Die installierten Pakete für Apache Webserver, PHP und MariaDB bringen bereits Konfigurationsdateien mit. Es empfiehlt sich, abweichende Einstellungen in gesonderten Dateien zu speichern, anstatt die vorhandenen Konfigurationsdateien anzupassen. Bei jedem Paket-Upgrade würden die abweichenden Einstellungen bemängelt oder überschrieben werden. Die Einstellungen der Standardkonfiguration werden durch die benutzerdefinierten ergänzt bzw. überschrieben.
Das memory_limit muss bei bedarf z.B. bei sehr großen Reports oder umfangreichen Dokumenten erhöht werden. Der Wert (in Sekunden) von session.gc_maxlifetime sollte größer oder gleich dem Session Timeout in den Systemeinstellungen von i-doit sein. Der Parameter date.timezone sollte auf die lokale Zeitzone anpasst werden (siehe Liste unterstützter Zeitzonen).
<VirtualHost*:80>
ServerAdmini-doit@example.net
DocumentRoot/var/www/html/
DirectoryIndexindex.php
DocumentRoot/var/www/html
<Directory/var/www/html>
## See https://httpd.apache.org/docs/2.2/mod/core.html#allowoverrideAllowOverrideNone
## Apache Web server configuration file for i-doit#### This file requires:#### - Apache HTTPD >= 2.4 with enabled modules:## - rewrite## - expires## - headers## - authz_core#### For performance and security reasons we put these settings## directly into the VirtualHost configuration and explicitly set## "AllowOverride None". After each i-doit update check if the .htaccess file, in the i-doit directory,## has changed and add the changes in the VirtualHost configuration.#### See the i-doit Knowledge Base for more details:## <https://kb.i-doit.com/>## Disable directory indexes:Options-Indexes+SymLinksIfOwnerMatch
<IfModulemod_authz_core.c>
RewriteCond%{REQUEST_METHOD}=GET
RewriteRule"^$""/index.php"## Deny access to meta files:<Files"*.yml">
Requirealldenied
</Files>
## Deny access to hidden files:<FilesMatch"^\.">
Requirealldenied
</FilesMatch>
## Deny access to bash scripts:<FilesMatch"^(controller|.*\.sh)$">
Requirealldenied
</FilesMatch>
## Deny access to all PHP files…<Files"*.php">
Requirealldenied
</Files>
## Deny access to wrongly created config backup files like ...inc.php.0123123 instead of ...inc.012341.php<FilesMatch"\.php\.\d+$">
Requirealldenied
</FilesMatch>
## …except some PHP files in root directory:<FilesMatch"^(index\.php|controller\.php|proxy\.php)$">
<IfModulemod_auth_kerb.c>
Requirevalid-user
</IfModule>
<IfModule!mod_auth_kerb.c>
Requireallgranted
</IfModule>
</FilesMatch>
## …except some PHP files in src/:<Files"jsonrpc.php">
Requireallgranted
</Files>
## …except some PHP files in src/tools/php/:<FilesMatch"^(rt\.php|barcode_window\.php|barcode\.php)$">
Requireallgranted
</FilesMatch>
## …except some PHP files in src/tools/php/qr/:<FilesMatch"^(qr\.php|qr_img\.php)$">
Requireallgranted
</FilesMatch>
## …except some PHP files in src/tools/js/:<FilesMatch"^js\.php$">
Requireallgranted
</FilesMatch>
</IfModule>
## Deny access to some directories:<IfModulemod_alias.c>
RedirectMatch403/imports/.*$
RedirectMatch403/log/.*$
RedirectMatch403/temp/.*(?<!\.(css|xsl))$
RedirectMatch403/upload/files/.*$
RedirectMatch403/upload/images/.*$
RedirectMatch403/vendor/.*$
</IfModule>
## Cache static files:<IfModulemod_expires.c>
ExpiresActiveOn
# A2592000 = 30 daysExpiresByTypeimage/svg+xmlA2592000
ExpiresByTypeimage/gifA2592000
ExpiresByTypeimage/pngA2592000
ExpiresByTypeimage/jpgA2592000
ExpiresByTypeimage/jpegA2592000
ExpiresByTypeimage/icoA2592000
ExpiresByTypetext/cssA2592000
ExpiresByTypetext/javascriptA2592000
ExpiresByTypeimage/x-icon"access 1 year"ExpiresDefault"access 2 week"<IfModulemod_headers.c>
HeaderappendCache-Control"public"</IfModule>
</IfModule>
## Pretty URLs:<IfModulemod_rewrite.c>
RewriteEngineOn
RewriteRulefavicon\.ico$images/favicon.ico[L]RewriteCond%{REQUEST_FILENAME}!-l
RewriteCond%{REQUEST_FILENAME}!-f
RewriteCond%{REQUEST_FILENAME}!-d
RewriteRule.*index.php[L,QSA]</IfModule>
## Deny access to all ini files…<Files"*.ini">
Requirealldenied
</Files>
</Directory>
TimeOut600ProxyTimeout600<FilesMatch"\\.php$">
<If"-f %{REQUEST_FILENAME}">
SetHandler"proxy:unix:/var/run/php/php8.3-fpm.sock|fcgi://localhost"</If>
</FilesMatch>
LogLevelwarn
ErrorLog${APACHE_LOG_DIR}/error.log
CustomLog${APACHE_LOG_DIR}/access.logcombined
</VirtualHost>
i-doit liefert abweichende Apache-Einstellungen in Dateien mit dem Namen .htaccess mit. Diese müssen nach jedem Update geprüft und in der VirtualHost Konfiguration aktualisiert werden.
Im nächsten Schritt werden der neue VHost und das nötige Apache-Modul rewrite aktiviert sowie der Apache Webserver neu gestartet:
Damit MariaDB eine gute Performance liefert und sicher betrieben werden kann, sollten Sie nicht nur unserer Anleitung folgen, sondern sich auch weiter Informieren. Angefangen, mit einer sicheren Installation bei der den Empfehlungen gefolgt werden sollte. Außerdem sollte der Benutzer root ein sicheres Passwort erhalten.
1
sudomysql_secure_installation
Der Modus für das Herunterfahren von InnoDB muss noch geändert werden. Der Wert 0 führt dazu, dass eine vollständige Bereinigung und eine Zusammenführung der Änderungspuffer durchgeführt wird, bevor MariaDB heruntergefahren wird:
1
mysql-uroot-p-e"SET GLOBAL innodb_fast_shutdown = 0"
Für die abweichenden Konfigurationseinstellungen wird eine neue Datei erstellt und unsere standard Konfiguration eingefügt:
1
sudonano/etc/mysql/mariadb.conf.d/99-i-doit.cnf
Diese Datei enthält die neuen Konfigurationseinstellungen. Für eine optimale Performance sollten diese Einstellungen an die (virtuelle) Hardware angepasst werden. Für optimale Einstellungen bitte unter mariadb.com schauen
[mysqld]# This is the number 1 setting to look at for any performance optimization# It is where the data and indexes are cached: having it as large as possible will# ensure MySQL uses memory and not disks for most read operations.# See https://mariadb.com/kb/en/innodb-buffer-pool/# Typical values are 1G (1-2GB RAM), 5-6G (8GB RAM), 20-25G (32GB RAM), 100-120G (128GB RAM).innodb_buffer_pool_size=1G# Redo log file size, the higher the better.# MySQL/MariaDB writes one of these log files in a default installation.innodb_log_file_size=512Minnodb_sort_buffer_size=64Msort_buffer_size=262144# defaultjoin_buffer_size=262144# defaultmax_allowed_packet=128Mmax_heap_table_size=32Mquery_cache_min_res_unit=4096query_cache_type=1query_cache_limit=5Mquery_cache_size=80Mtmp_table_size=32Mmax_connections=200innodb_file_per_table=1# Disable this (= 0) if you have slow hard disksinnodb_flush_log_at_trx_commit=1innodb_flush_method=O_DIRECTinnodb_lru_scan_depth=2048table_definition_cache=1024table_open_cache=2048innodb_stats_on_metadata=0# The maximum number of instances is defined by the table_open_cache_instances system variable.# The default value of the table_open_cache_instances system variable is 8, which is expected to handle up to 100 CPU cores.# If your system is larger than this, then you may benefit from increasing the value of this system variable.table_open_cache_instances=8sql-mode=""