CMS bee.tools - Systemanforderungen
Webserver Apache
Mindestanforderung: Apache, Version >= 2.2.x.
bee.tools wurde mit folgenden Module auf einem unserer Testserver getestet:
alias.conf, alias.load
auth_basic.load
auth_digest.load
authn_file.load
authz_default.load
authz_groupfile.load
authz_host.load
authz_user.load
autoindex.conf, autoindex.load
cache.load
cgi.load
deflate.conf, deflate.load
dir.conf, dir.load
disk_cache.conf, disk_cache.load
env.load
expires.load
file_cache.load
headers.load
mem_cache.conf, mem_cache.load
mime.conf, mime.load
negotiation.conf, negotiation.load
php5.conf, php5.load
reqtimeout.conf, reqtimeout.load
rewrite.load
setenvif.conf, setenvif.load
status.conf, status.load
suexec
bee.tools wurde mit folgender Apache Konfiguration auf einem unserer Testserver getestet:
<VirtualHost *:80>
ServerName www.muster.de
# Die Subdomain-Einstellungen werden im bee.tools verwaltet, deshalb wenn möglich Wildcard verwenden:
ServerAlias *.muster.de
ServerAdmin m.mustermann@brain-at-work.de
DocumentRoot /web/muster/htdocs
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /web/muster/htdocs>
Options Indexes FollowSymLinks MultiViews
AllowOverride Indexes AuthConfig FileInfo Limit
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog /web/muster/log/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel error
CustomLog /web/muster/log/access.log combined
</VirtualHost>
Eine .htaccess mit mod_rewrite, mod_deflate und mod_expires sollte möglich sein! Stehen nicht alle Module zur Verfügung, können der 100 Punkte Pagespeed-Wert nicht erreicht werden.
bee.tools wurde mit folgenden Module auf einem unserer Testserver getestet:
alias.conf, alias.load
auth_basic.load
auth_digest.load
authn_file.load
authz_default.load
authz_groupfile.load
authz_host.load
authz_user.load
autoindex.conf, autoindex.load
cache.load
cgi.load
deflate.conf, deflate.load
dir.conf, dir.load
disk_cache.conf, disk_cache.load
env.load
expires.load
file_cache.load
headers.load
mem_cache.conf, mem_cache.load
mime.conf, mime.load
negotiation.conf, negotiation.load
php5.conf, php5.load
reqtimeout.conf, reqtimeout.load
rewrite.load
setenvif.conf, setenvif.load
status.conf, status.load
suexec
bee.tools wurde mit folgender Apache Konfiguration auf einem unserer Testserver getestet:
<VirtualHost *:80>
ServerName www.muster.de
# Die Subdomain-Einstellungen werden im bee.tools verwaltet, deshalb wenn möglich Wildcard verwenden:
ServerAlias *.muster.de
ServerAdmin m.mustermann@brain-at-work.de
DocumentRoot /web/muster/htdocs
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /web/muster/htdocs>
Options Indexes FollowSymLinks MultiViews
AllowOverride Indexes AuthConfig FileInfo Limit
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog /web/muster/log/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel error
CustomLog /web/muster/log/access.log combined
</VirtualHost>
Eine .htaccess mit mod_rewrite, mod_deflate und mod_expires sollte möglich sein! Stehen nicht alle Module zur Verfügung, können der 100 Punkte Pagespeed-Wert nicht erreicht werden.
htaccess
Folgende .htaccess-Einstellung wird empfohlen:
Addtype font/opentype .otf
Addtype font/eot .eot
Addtype font/truetype .ttf
Addtype font/woff .woff
Addtype font/woff2 .woff2
Addtype image/x-icon .ico
Addtype text/javascript .js
Addtype application/manifest+json .json
AddDefaultCharset utf-8
AddCharset utf-8 .html .css .js .svg .xml .json
DefaultLanguage de-DE
Header set X-Content-Type-Options "nosniff"
Header set Strict-Transport-Security "max-age=3800000"
Header append Vary User-Agent env=!dont-vary
Header append Vary Accept-Encoding
php_flag session.cookie_httponly on
php_flag session.cookie_secure on
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/atom_xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/x-shockwave-flash
AddOutputFilterByType DEFLATE image/svg+xml
AddOutputFilterByType DEFLATE font/opentype font/truetype font/eot font/woff font/woff2
ExpiresActive On
ExpiresByType text/css "access plus 12 month"
ExpiresByType text/javascript "access plus 12 month"
ExpiresByType text/html "access plus 12 month"
ExpiresByType application/javascript "access plus 12 month"
ExpiresByType image/gif "access plus 12 month"
ExpiresByType image/jpeg "access plus 12 month"
ExpiresByType image/webp "access plus 12 month"
ExpiresByType image/png "access plus 12 month"
ExpiresByType image/x-icon "access plus 12 month"
ExpiresByType image/svg+xml "access plus 12 month"
ExpiresByType font/opentype "access plus 12 month"
ExpiresByType font/eot "access plus 12 month"
ExpiresByType font/truetype "access plus 12 month"
ExpiresByType font/woff "access plus 12 month"
ExpiresByType font/woff2 "access plus 12 month"
<filesmatch "\.(ico|jpe?g|png|gif|swf|svg|webp)$">
Header set Cache-Control "max-age=31536000, public"
</filesmatch>
<filesmatch "\.(css)$">
Header set Cache-Control "max-age=31536000, public"
</filesmatch>
<filesmatch "\.(js)$">
Header set Cache-Control "max-age=31536000, private"
</filesmatch>
Options +FollowSymLinks
RewriteEngine on
RewriteBase /
RewriteRule ^(.*)sitemap.xml$ $1/module/sitemap/frontend/standard/createxmlsitemap.php [L]
RewriteRule ^direct/([^/]*)/([^/]*)/([^/]*)\.html$ /index.php?$3&seokeyword=$1&seocity=$2 [L]
RewriteRule ^([^/]*)/([^/]*)/direct/([^/]*)\.html$ /index.php?$3&seokeyword=$2&seocity=$1 [L]
RewriteRule ^(.*)blogcomment/doptin/([^/]*)/([^/]*).html$ $1/module/blog/frontend/standard/commentdoptin.php?idf=$2&id=$3 [L]
RewriteRule ^(.*)blogcomment/del/([^/]*)/([^/]*).html$ $1/module/blog/frontend/standard/commentdel.php?idf=$2&id=$3 [L]
RewriteRule ^(.*)robots.txt$ $1/module/sitemanagement/frontend/standard/outputrobotstxt.php [L]
#RewriteRule ^ncrwl/(.*)$ $1 [NC]
#RewriteCond %{REQUEST_URI} !^/.*?\..*?$
#RewriteCond %{REQUEST_URI} !^/.*?\/.*?$
#RewriteCond %{REQUEST_URI} !^/$
#RewriteRule ^(.*)$ /index.php?$1 [R=301,L]
RewriteRule ^ncrwl/(.*)$ index.php?$1 [NC]
RewriteCond %{REQUEST_URI} !^/.*?\..*?$
RewriteCond %{REQUEST_URI} !^/.*?\/.*?$
RewriteCond %{REQUEST_URI} !^/$
RewriteRule ^(.*)$ /index.php?$1 [L]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php?seolinkrescue=true [L]
Addtype font/opentype .otf
Addtype font/eot .eot
Addtype font/truetype .ttf
Addtype font/woff .woff
Addtype font/woff2 .woff2
Addtype image/x-icon .ico
Addtype text/javascript .js
Addtype application/manifest+json .json
AddDefaultCharset utf-8
AddCharset utf-8 .html .css .js .svg .xml .json
DefaultLanguage de-DE
Header set X-Content-Type-Options "nosniff"
Header set Strict-Transport-Security "max-age=3800000"
Header append Vary User-Agent env=!dont-vary
Header append Vary Accept-Encoding
php_flag session.cookie_httponly on
php_flag session.cookie_secure on
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/atom_xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/x-shockwave-flash
AddOutputFilterByType DEFLATE image/svg+xml
AddOutputFilterByType DEFLATE font/opentype font/truetype font/eot font/woff font/woff2
ExpiresActive On
ExpiresByType text/css "access plus 12 month"
ExpiresByType text/javascript "access plus 12 month"
ExpiresByType text/html "access plus 12 month"
ExpiresByType application/javascript "access plus 12 month"
ExpiresByType image/gif "access plus 12 month"
ExpiresByType image/jpeg "access plus 12 month"
ExpiresByType image/webp "access plus 12 month"
ExpiresByType image/png "access plus 12 month"
ExpiresByType image/x-icon "access plus 12 month"
ExpiresByType image/svg+xml "access plus 12 month"
ExpiresByType font/opentype "access plus 12 month"
ExpiresByType font/eot "access plus 12 month"
ExpiresByType font/truetype "access plus 12 month"
ExpiresByType font/woff "access plus 12 month"
ExpiresByType font/woff2 "access plus 12 month"
<filesmatch "\.(ico|jpe?g|png|gif|swf|svg|webp)$">
Header set Cache-Control "max-age=31536000, public"
</filesmatch>
<filesmatch "\.(css)$">
Header set Cache-Control "max-age=31536000, public"
</filesmatch>
<filesmatch "\.(js)$">
Header set Cache-Control "max-age=31536000, private"
</filesmatch>
Options +FollowSymLinks
RewriteEngine on
RewriteBase /
RewriteRule ^(.*)sitemap.xml$ $1/module/sitemap/frontend/standard/createxmlsitemap.php [L]
RewriteRule ^direct/([^/]*)/([^/]*)/([^/]*)\.html$ /index.php?$3&seokeyword=$1&seocity=$2 [L]
RewriteRule ^([^/]*)/([^/]*)/direct/([^/]*)\.html$ /index.php?$3&seokeyword=$2&seocity=$1 [L]
RewriteRule ^(.*)blogcomment/doptin/([^/]*)/([^/]*).html$ $1/module/blog/frontend/standard/commentdoptin.php?idf=$2&id=$3 [L]
RewriteRule ^(.*)blogcomment/del/([^/]*)/([^/]*).html$ $1/module/blog/frontend/standard/commentdel.php?idf=$2&id=$3 [L]
RewriteRule ^(.*)robots.txt$ $1/module/sitemanagement/frontend/standard/outputrobotstxt.php [L]
#RewriteRule ^ncrwl/(.*)$ $1 [NC]
#RewriteCond %{REQUEST_URI} !^/.*?\..*?$
#RewriteCond %{REQUEST_URI} !^/.*?\/.*?$
#RewriteCond %{REQUEST_URI} !^/$
#RewriteRule ^(.*)$ /index.php?$1 [R=301,L]
RewriteRule ^ncrwl/(.*)$ index.php?$1 [NC]
RewriteCond %{REQUEST_URI} !^/.*?\..*?$
RewriteCond %{REQUEST_URI} !^/.*?\/.*?$
RewriteCond %{REQUEST_URI} !^/$
RewriteRule ^(.*)$ /index.php?$1 [L]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php?seolinkrescue=true [L]
ImageMagick
Mindestanforderung: Version >= 6.7.7
SFTP / SSH-Zugang
Eine gesicherte Verbindung ist zu bevorzugen. Ein unverschlüsselter FTP-Zugang sollte nicht erfolgen.
SSH-Konsolen-Zugang (/bin/bash) auf das bee.tools Hauptverzeichnis muss möglich sein. PHP muss über die Konsole konfiguriert und aufrufbar sein, ebenso wie die Befehle mysql, mysqldump, sed, zip/unzip, tar, rm sowie die ImageMagick-Befehle.
SSH-Konsolen-Zugang (/bin/bash) auf das bee.tools Hauptverzeichnis muss möglich sein. PHP muss über die Konsole konfiguriert und aufrufbar sein, ebenso wie die Befehle mysql, mysqldump, sed, zip/unzip, tar, rm sowie die ImageMagick-Befehle.
PHP
bee.tools 16: PHP 8.1
bee.tools 15: PHP 8.0
bee.tools 12, 13, 14: PHP 7.4
bee.tools 10, 11: PHP 7.0/7.1/7.2 (mit aktivierten opcache)/7.3
bee.tools 9: PHP 7.0/7.1 (mit aktivierten opcache)
bee.tools 6, 7, 8: PHP 5.5/5.6 (mit oder ohne aktivierten opcache)
Bitte folgende PHP-Konfiguration beachten:
short_open_tag = Off
asp_tags = Off
precision = 14
output_buffering = 4096
max_execution_time = 30
max_input_time = 60
memory_limit = 128M
post_max_size = 8M
default_charset = "UTF-8"
file_uploads = On
upload_max_filesize = 2M
max_file_uploads = 20
allow_url_fopen = On
allow_url_include = Off
Benötigte PHP-Module (normalerweise Standard):
opcache
pdo
pdo_mysql
mysql
mysqli
mcrypt
gd
imap
readline
soap
Folgende OPCache-Konfiguration empfehlen wir:
[opcache]
opcache.enable=1
opcache.enable_cli=1
opcache.memory_consumption=256
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
;opcache.max_wasted_percentage=5
opcache.use_cwd=1
;opcache.validate_timestamps=1
opcache.revalidate_freq=3600
opcache.revalidate_path=1
opcache.save_comments=0
;opcache.load_comments=1
opcache.fast_shutdown=1
opcache.enable_file_override=1
opcache.optimization_level=0xffffffff
;opcache.inherited_hack=1
;opcache.dups_fix=0
opcache.blacklist_filename=*/data/securetmp/*
;opcache.max_file_size=0
opcache.consistency_checks=0
opcache.force_restart_timeout=3600
;opcache.log_verbosity_level=1
;opcache.preferred_memory_model=
;opcache.protect_memory=0
bee.tools 15: PHP 8.0
bee.tools 12, 13, 14: PHP 7.4
bee.tools 10, 11: PHP 7.0/7.1/7.2 (mit aktivierten opcache)/7.3
bee.tools 9: PHP 7.0/7.1 (mit aktivierten opcache)
bee.tools 6, 7, 8: PHP 5.5/5.6 (mit oder ohne aktivierten opcache)
Bitte folgende PHP-Konfiguration beachten:
short_open_tag = Off
asp_tags = Off
precision = 14
output_buffering = 4096
max_execution_time = 30
max_input_time = 60
memory_limit = 128M
post_max_size = 8M
default_charset = "UTF-8"
file_uploads = On
upload_max_filesize = 2M
max_file_uploads = 20
allow_url_fopen = On
allow_url_include = Off
Benötigte PHP-Module (normalerweise Standard):
opcache
pdo
pdo_mysql
mysql
mysqli
mcrypt
gd
imap
readline
soap
Folgende OPCache-Konfiguration empfehlen wir:
[opcache]
opcache.enable=1
opcache.enable_cli=1
opcache.memory_consumption=256
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
;opcache.max_wasted_percentage=5
opcache.use_cwd=1
;opcache.validate_timestamps=1
opcache.revalidate_freq=3600
opcache.revalidate_path=1
opcache.save_comments=0
;opcache.load_comments=1
opcache.fast_shutdown=1
opcache.enable_file_override=1
opcache.optimization_level=0xffffffff
;opcache.inherited_hack=1
;opcache.dups_fix=0
opcache.blacklist_filename=*/data/securetmp/*
;opcache.max_file_size=0
opcache.consistency_checks=0
opcache.force_restart_timeout=3600
;opcache.log_verbosity_level=1
;opcache.preferred_memory_model=
;opcache.protect_memory=0
Datenbank
MariaDB (bevorzugt): Version >= 10.5.8
MySQL: Version >= 8.0 oder höher mit JSON Integration
bee.tools wurde mit folgender Konfiguration getestet, weitere Einstellungen entsprechen der Standardinstallation. Die Datenbankgröße sollte mindestens 2 GB betragen, am besten jedoch unbegrenzt (je nach Projektanforderung)
key_buffer = 16M
max_allowed_packet = 16M
thread_stack = 192K
thread_cache_size = 8
query_cache_limit = 100M
query_cache_size = 160M
Wird eine Google Search Console Anbindung genutzt und die bee.tools Analyse, muss die Datenbank mehr als 2 GB betragen. Ggf. sind auch mehrere Datenbanken sinnvoll.
MySQL: Version >= 8.0 oder höher mit JSON Integration
bee.tools wurde mit folgender Konfiguration getestet, weitere Einstellungen entsprechen der Standardinstallation. Die Datenbankgröße sollte mindestens 2 GB betragen, am besten jedoch unbegrenzt (je nach Projektanforderung)
key_buffer = 16M
max_allowed_packet = 16M
thread_stack = 192K
thread_cache_size = 8
query_cache_limit = 100M
query_cache_size = 160M
Wird eine Google Search Console Anbindung genutzt und die bee.tools Analyse, muss die Datenbank mehr als 2 GB betragen. Ggf. sind auch mehrere Datenbanken sinnvoll.
Provider Konfigurationsoberfläche
Zugang zu einer Provider-Konfigurationsoberfläche (z. B. PLESK) ist nicht zwingend erforderlich, dennoch zu empfehlen. Die Grundeinstellungen (Datenbanken, PHP-Einstellungen, Domain-Einstellungen, Subdomain-Anlage, SSL Aktivierung, Cronjob-Anlage) sollte möglich sein
Cronjobs
Um Daten von verschiedenen Quellen (z. B. Google Search Console) zu importieren und auch regelmäßige Bildoptimierungen durchzuführen, empfiehlt es sich Cronjobs anzulegen. Daher sind je nach Projektgröße auch mehrere Cronjobs nötig. Cronjobs sollten entweder direkt über die SSH-Konsole (crontab) oder über eine Eingabemaske anlegbar bzw. editierbar sein.
Festplattenplatz
Der benötigte Festplattenplatz hängt von den Anzahl der Bildern, Videos, Downloads ab. Eine Mindestgröße von 50 GB sollte jedoch vorerst ausreichend sein.
E-Mail-Versand
Standardmäßig wird sendmail des Webservers benutzt. Sollten E-Mails an externe Personen gehen, empfiehlt es sich ein eigenes externes SMTP-Postfach anzulegen.
Webserverkonfiguration durch brain at work: auf Wunsch erhältlich
Ist der Bedarf für einen komplett eigenen Webserver vorhanden, bieten wir auch eine laufende Webserverkonfiguration via PLESK und Konsole an. Bitte lassen Sie sich hier zuvor aber von uns beraten, da hier immer wieder unvorhergesehen Kosten auf Sie zukommen können (Beispiel bei der Abwehr oder Analyse eines Hackerangriffs).