Skip to content

Installation (Windows server)

How to install NADA on Windows Server with IIS, PHP, and either MySQL 8.x / MariaDB 10.x+ or Microsoft SQL Server.

Before you start: Installation overview (requirements and folder layout).
Pattern aligned with the Metadata Editor Windows installation.

IIS on Windows 10/11 Pro — the same steps apply; enable IIS and CGI via “Turn Windows features on or off.”


Prerequisites

ComponentVersion
OSWindows Server with IIS 10+ recommended
PHP7.4 minimum; 8.x recommendedNon-Thread Safe (NTS) x64 for IIS
DatabaseMySQL 8.x / MariaDB 10.x+, or SQL Server 2012+ with full-text
Web serverIIS 10+ with CGI / FastCGI
PHP Manager for IISOptional but recommended
URL RewriteOptional — iis.net URL Rewrite

Enable IIS and the CGI feature (Server Manager or Windows Features) before registering PHP.


Step 1: Install PHP and register it with IIS

1a. Download PHP

  1. Download PHP NTS x64 from windows.php.net (prefer 8.x; minimum 7.4).
  2. Extract to a stable path, for example C:\PHP or C:\PHP\8.3.
  3. Copy php.ini-production to php.ini if needed.

PHP Manager for IIS registers PHP and manages extensions from IIS Manager.

  1. Install PHP Manager (match your IIS version); restart IIS Manager.
  2. IIS Manager → server node → PHP ManagerRegister new PHP version → select php-cgi.exe (e.g. C:\PHP\php-cgi.exe).
  3. Enable extensions:
    • xsl / php_xsl.dll
    • mbstring
    • mysqli — MySQL or MariaDB
    • sqlsrv — only if using SQL Server (install drivers first: SQL Server guide)
  4. Use Check phpinfo() (or a temporary info.php), confirm extensions, then delete any test info.php.

Recycle the app pool (or use PHP Manager refresh) after php.ini changes.

1c. Manual FastCGI (without PHP Manager)

  1. Confirm CGI/FastCGI is installed for IIS.
  2. IIS Manager → Handler MappingsAdd Module Mapping:
    • Request path: *.php
    • Module: FastCgiModule
    • Executable: C:\PHP\php-cgi.exe
    • Name: e.g. PHP_via_FastCGI
  3. Edit php.ini — see PHP settings.
  4. Recycle the application pool.
ini
memory_limit = 256M
max_execution_time = 300
post_max_size = 800M
upload_max_filesize = 800M

More: PHP settings.


Step 2: Folder layout and download

Typical path:

text
C:\inetpub\wwwroot\nada

Create the folder. The application root must contain index.php (see folder layout).

Download options:

  1. Zip (recommended for production): NADA Releases — extract so index.php is under C:\inetpub\wwwroot\nada (remove an extra nested folder if the zip creates one).
  2. Git: Install with Git, then continue from Step 3.

Prefer tagged releases for production.


Step 3: Database

Choose one database for the whole install.

Option A — MySQL 8.x or MariaDB 10.x+

  1. Install MySQL or MariaDB for Windows; set and record the root password.
  2. Create database and user (Workbench, MariaDB client, or CLI):
sql
CREATE DATABASE nada CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'nada'@'localhost' IDENTIFIED BY 'yourpassword';
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER,
  CREATE TEMPORARY TABLES, LOCK TABLES ON nada.* TO 'nada'@'localhost';
FLUSH PRIVILEGES;
  1. In the NADA folder, copy application\config\database-sample.php to database.php and set credentials with dbdriver = mysqli.

Full field reference and sample array: Configure MySQL / MariaDB.

Option B — Microsoft SQL Server

SQL Server is a full install option, not an add-on.

  1. Ensure SQL Server has full-text enabled.
  2. Install PHP sqlsrv drivers and (if needed) SQL Client — follow Install with SQL Server through database.php configuration.
  3. Enable the sqlsrv extension in PHP Manager (or php.ini), then return here for Step 4.

Step 4: Permissions

Grant the IIS application pool identity Modify on datafiles, logs, and files (create the folders if missing).

Default identity:

text
IIS AppPool\DefaultAppPool

Elevated command prompt (from the NADA root):

bat
icacls datafiles /grant "IIS AppPool\DefaultAppPool:(OI)(CI)M" /T
icacls logs /grant "IIS AppPool\DefaultAppPool:(OI)(CI)M" /T
icacls files /grant "IIS AppPool\DefaultAppPool:(OI)(CI)M" /T

For a custom app pool, use IIS AppPool\<YourAppPoolName>.

Security

Consider locating datafiles outside inetpub after install.


Step 5: Configure the IIS site

  1. Open IIS Manager.
  2. Add a Website or Application with physical path = NADA application root (...\nada where index.php lives).
  3. Application pool: No Managed Code, Integrated pipeline.
  4. Confirm .php maps to FastCGI (PHP Manager or Step 1c).
  5. Recycle the app pool after PHP changes.

Optional: install URL Rewrite. Apache-oriented clean URL docs: Clean URLs.


Step 6: Run the web installer

  1. Browse to http://localhost/nada (or your site binding/host header).
  2. Fix any failed prerequisite checks (extensions, writable folders, database).
  3. Click Install Database and create the Site Administrator account.

NADA installer

Complex password

Use at least 12 characters with uppercase, numbers, and punctuation. Do not lose this account.


Step 7: Post-install

  1. Email and other Configurations
  2. Optional: Solr, themes, CSP
  3. Getting started

Hardening

  • Dedicated DB user (not root / sa)
  • Strong admin password
  • Delete temporary info.php
  • Move datafiles outside the web root when possible
  • Plan backups (Backup)

Troubleshooting

IssueWhat to check
500 / handler errorsPHP Manager registration or FastCGI mapping; path to php-cgi.exe; recycle app pool
Wrong php.ini / missing extensionsPHP Manager phpinfo; enable extensions; PHP settings
Installer cannot writeApp pool identity on datafiles, files, logs
Database connection faileddatabase.php; MySQL service or SQL Server / sqlsrv drivers
PHP Manager missingCorrect IIS version installer; restart IIS Manager as administrator