-
Notifications
You must be signed in to change notification settings - Fork 5
Server Requirements
- PHP 7.1 works, but security support stopped december 2019
- PHP 7.2 works, but has security support until 30 nov 2020
- PHP 7.3 preferred version
- PHP 7.4 support has been added, but it's in beta
- PHP 8.0 not supported
ctype
dom
-
gd
library (default) mbstring
memcached
pcre
PDO
pdo_mysql
Reflection
session
SPL
zip
PHP extensions Not strictly required, but highly recommended for performance and functionality reasons.
APC
curl
hash
iconv
json
posix
SimpleXML
zlib
-
fopen
wrappers must be enabled. - The same PHP version has to be available on the command line.
To test the installed PHP extensions for the CLI run php -m
.
To test in the webserver context create a file index.php
in the document root of the webserver. Open the url to your webserver to get the list with available PHP extensions:
<?php
print_r(get_loaded_extensions());
?>
To test CLI and webserver use the same PHP version run php --version
on the CLI. And replace the content of the previously created file and reload the page. The PHP version used by the webserver will be shown.
<?php
phpinfo();
?>
Afterwards, please make sure there is no publicly available file that calls phpinfo()
, since this is considered a security risk.
A minimum version of MySQL 5.7 or MariaDB 10.2, with:
- an account with full permissions except
GRANT
- a separate production and a staging database
- Optional but preferred: global setting
default_week_format = 3
.
Configuration:
[mysqld]
sql_mode=NO_ENGINE_SUBSTITUTION,NO_AUTO_CREATE_USER,STRICT_ALL_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE
skip-external-locking
explicit_defaults_for_timestamp = 1
For production:
database- and username: <projectname>_p
For staging:
database- and username: <projectname>_s
Due to MySQL restrictions can be shortened.
Run mysql --version
to check the installed version of MySQL or MariaDB.
To test the values of the required configuration execute this query:
SHOW variables WHERE variable_name IN ('sql_mode', 'skip-external-locking', 'explicit_defaults_for_timestamp')
To execute it from the CLI add the query to this command: mysql -e "{THE QUERY}"
.
Other variables could be checked by adjusting the strings between the brackets.
- With a folder /public as webroot, within a writable folder
- with
mod_rewrite
module enabled (or equivalent) - with
mod_setenvif
module enabled - ability to call
mod_rewrite
commands from.htaccess
files
To list the active Apache module run apachectl -M
or httpd -M
on the CLI.
- Memcache
- Git client on CLI
- Communication with GitHub: run
ssh -T [email protected]
to test it. - SSH access, with write permissions in a folder which contains the /public webroot.
On permissions / file ownership:
If the webserver php user (f.i. apache) differs from the ssh user, one user should be able to modify and delete files that were created by the other user, and vice versa. This should function without any manual actions, for instance through a shared group or with an extension such as suphp
.
- cronjob and
at
(Unix scheduling daemon) support -
nl_NL
+en_US
locales installed -
vim
, or at leastvi
editor
In addition to the production server there needs to be a staging environment. This does not need to be a separate physical server or vps, but there needs to be a staging.example.com
url (where example.com
is the url of the live / production site) which points to a vhost which is separated from the production environment.
A separate SSH-user for the staging environment is preferred.
- Approx. 300 MB for platform- and application code
- Uploaded images × 2 (for scaling)
- Media and documents
Required: Total space x2 (for production + staging server)
We heavily prefer being able to set max_execution_time and memory_limit from PHP. If we are not able to do that but if the situation will still require more working memory, we will request an increase.
- SSH account with access to at least 1 level above webroot.
- SSH user needs to have access to MySQL, Git, PHP as well as the software requirements as listed above.
- We heavily prefer public key authentication over a user / password setup.
- We need SSH access from the webserver to github.com, so please keep port 22 open to at least this domain.
We also need to be able to view logs, especially error logs. Normally this would consist of the correct disk permissions on the logs directory.
staging.<domain>
This staging vhost needs to point to a different disk location than the production vhost. Same or different server instance.