- install/DEPLOYMENT-WALKTHROUGH.md: full verified runbook (operator + headless methods) from an actual deploy — PHP 8.5.5 + MariaDB 11.4.10 + Apache, app at www/pqs, DB provisioned via installer, registration/commit verified, zero PHP 8.5 warnings from app code. - install/start-pqs.bat: one-command launcher (starts MariaDB + Apache, sets the XAMPP_LITE_ROOT/SRVROOT placeholders, provisions the DB on first run). - install/README.md: aligned to this stack's layout (apps/, www/, control panel); corrected the installer 'safe to re-run' note (seed inserts are not idempotent). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Deploying PQS on XAMPP Lite 8.5 (on-demand)
PQS runs from a portable XAMPP Lite 8.5 stack (PHP 8.5 + MariaDB 11.4 + Apache) so the whole system can be stood up on demand at a venue with no internet. This folder holds the one-shot database installer.
For the full, verified step-by-step (including the headless/scripted method and validation results), see DEPLOYMENT-WALKTHROUGH.md. This page is the short version.
Stack layout (this XAMPP Lite build)
xampp_lite_8_5\
XL-Control-Panel.x64.exe <- start/stop Apache + MySQL here
apps\apache\ <- Apache (serves PHP 8.5 as a module)
apps\mysql\ <- MariaDB 11.4 (root, no password)
apps\php\ <- PHP 8.5
www\ <- document root (http://localhost/ -> www\)
Quick start
-
Drop the app into the web root, named
pqs:xampp_lite_8_5\www\pqs\(The app uses
/pqs/...URLs, so the folder must bepqs.) -
Start Apache + MySQL from
XL-Control-Panel.x64.exe. -
Create the database (one time). From
apps\mysql\bin:mysql.exe -u root < ..\..\..\www\pqs\install\pqs_install.sqlOr import
install\pqs_install.sqlvia phpMyAdmin (http://localhost/phpmyadmin). This creates thepqsdatabase, thepqs/pqsuser, every table (all InnoDB) and the static seed (mechs, maps, game types, default config, pods). -
Open the app:
Screen URL Registration kiosk http://localhost/pqs/callsign.php Registration console http://localhost/pqs/registration.php Game/ops console http://localhost/pqs/console.php Queue wall http://localhost/pqs/combinedqueue.php
No build step, no internet.
Notes
- Credentials. The app connects as
pqs/pqsonlocalhost(seeincludes/db.php) — a formality on an air-gapped LAN. - Timezone. Set once in
includes/db.php(PQS_TIMEZONE, defaultAmerica/Chicago). - PHP target. Code targets PHP 7.4+; verified on XAMPP Lite's PHP 8.5.5 with zero warnings/deprecations from app code.
time.php(optional clock sync). Uses PowerShellSet-Dateon Windows, which only works if Apache runs as administrator. Skip it if the host clock is already correct.
Re-running / resetting
The installer is not idempotent for the seed data — re-running it duplicates
rows and fails on the gameconfig unique key. To reset to a clean database:
DROP DATABASE pqs;
then load pqs_install.sql again. (The CREATE DATABASE/USER ... IF NOT EXISTS
lines are harmless on their own; it's the seed INSERTs that must not run twice.)
Fresh install vs. upgrading an existing DB
- Fresh XAMPP deploy → use
install/pqs_install.sql(this folder). Every table is created as InnoDB, so no migrations are needed. - Upgrading a pre-existing (older MyISAM) database → run the incremental
dev/migrations/001-*.sqland002-*.sqlinstead, which convert the affected tables to InnoDB in place.