In this article, we explain how i-doit is installed on the Windows operating system.

Contents

Installation of XAMPP

First of all, download the XAMPP package at https://www.apachefriends.org/index.html. Here we use the installer (xampp-win32-XXX-installer.exe). Other packages are fine too. The compressed package (.zip), for example, can simply be extracted to C:\. It is important to note that the installation path for XAMPP has to be "C:\xampp" as "C:\Program Files (x86)" has not enough permission rights, which most likely will result in a faulty installation. Bitnami is not needed and can be unchecked in the installation process.

When the installation is finished, you can launch the Control Panel immediately and see that the checkboxes for "Apache" and "MySQL" are marked with red crosses. This means that there is no service installed for these two applications and thus the Apache and MySQL services have to be started manually every time the server gets restarted. If you do not want this, you should install the service now by clicking on the particular cross. A successful installation will be documented in the log at the bottom of the Control Panel. Now these services are installed, but neither of both is yet running. This is good as we should customize the configuration first.

Firewall

We deactivate the Windows Firewall for our installation so that RDP and the connection to the Webserver will function. The applications and ports should be configured precisely in the Firewall, however, we don't want to focus on that in this article.

Configuration of XAMPP

PHP

With an editor you open the file C:\xampp\php\php.ini and save the following settings:

allow_url_fopen = Yes
file_uploads = On
magic_quotes_gpc = Off
max_execution_time = 300
max_file_uploads = 42
max_input_time = 60
max_input_vars = 10000
memory_limit = 256M
post_max_size = 128M
register_argc_argv = On
register_globals = Off
short_open_tag = On
upload_max_filesize = 128M
display_errors = Off
display_startup_errors = Off
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
log_errors = On
default_charset = "UTF-8"
default_socket_timeout = 60
date.timezone = Europe/Berlin
session.gc_maxlifetime = 604800
session.cookie_lifetime = 0

extension=php_ldap.dll
extension=php_pdo_pgsql.dll
extension=php_snmp.dll

Additionally, it is necessary for the LDAP extension to copy the  libsasl.dll file from C:\xampp\php\ to C:\xampp\apache\bin.

Apache Webserver

It is not required to carry out separate settings for the Apache Webserver.

MySQL/MariaDB

The settings are saved in the file under C:\xampp\mysql\bin\my.cnf:

[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.
#
# Typical values are 1G (1-2GB RAM), 5-6G (8GB RAM), 20-25G (32GB RAM), 100-120G (128GB RAM).
innodb_buffer_pool_size = 1G

# Use multiple instances if you have innodb_buffer_pool_size > 10G, 1 every 4GB
innodb_buffer_pool_instances = 1

# Redo log file size, the higher the better.
# MySQL/MariaDB writes two of these log files in a default installation.
innodb_log_file_size = 512M

innodb_sort_buffer_size = 64M
sort_buffer_size = 262144 # default
join_buffer_size = 262144 # default

max_allowed_packet = 128M
max_heap_table_size = 32M
query_cache_min_res_unit = 4096
query_cache_type = 1
query_cache_limit = 5M
query_cache_size = 80M

tmp_table_size = 32M
max_connections = 200
innodb_file_per_table = 1

# Disable this (= 0) if you have only one to two CPU cores, change it to 4 for a quad core.
innodb_thread_concurrency = 0

# Disable this (= 0) if you have slow harddisks
innodb_flush_log_at_trx_commit = 1 
innodb_flush_method = O_DIRECT

innodb_lru_scan_depth = 2048
table_definition_cache = 1024
table_open_cache = 2048
# Only if your have MySQL 5.6 or higher, do not use with MariaDB!
#table_open_cache_instances = 4

innodb_stats_on_metadata = 0

sql-mode = ""

First Start

The services have to be started manually for the first time by pressing both Start buttons for Apache and MySQL. Wait for a moment and the successful start will be displayed in the log at the bottom of the control panel.

Testing the Installation

The previous configuration prepared the Webserver. Now the welcome page of Apache should be displayed when you load the IP of the system. Whether or not the values set in the PHP.ini are correctly carried over can be checked in the PHPInfo section of the menu. The settings of the my.cnf are not displayed there.

Next Step

Now the operating system is pepared and i-doit can be installed.

Proceed to Setup