- install/pqs_install.sql: one-shot installer (creates pqs DB + user, all tables as InnoDB, static seed) so a fresh portable XAMPP deploy needs no separate migrations. Derived from docs/pqs.sql with engines forced to InnoDB. - install/README.md: XAMPP Lite 8.5 deployment steps plus fresh-vs-upgrade guidance. - time.php: OS-aware clock set (PowerShell Set-Date on Windows/XAMPP, sudo date on Linux); epoch is int-cast so the exec has no injection. - .gitignore: exclude the portable xampp_lite_8_5/ stack (not versioned here). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2.4 KiB
Deploying PQS on XAMPP Lite 8.5 (on-demand)
PQS is designed to run from a portable XAMPP Lite 8.5 stack (PHP 8.5 + MariaDB + 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.
Steps
-
Drop the app into htdocs. Copy the PQS folder to:
xampp\htdocs\pqs(The app uses
/pqs/...URLs, so the folder must be namedpqs.) -
Start Apache and MySQL from the XAMPP control panel.
-
Create the database. From
xampp\mysql\bin(XAMPP's MariaDB root has no password by default):mysql -u root < ..\..\htdocs\pqs\install\pqs_install.sqlOr in phpMyAdmin (http://localhost/phpmyadmin) → Import → choose
install\pqs_install.sql.This creates the
pqsdatabase, thepqs/pqsapplication user, every table (all InnoDB), and the static seed data (mechs, maps, game types, default game config, pod layout). Queue/mission/history start empty. It is safe to re-run; to wipe clean,DROP DATABASE pqsfirst. -
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
That's it — no build step, no internet.
Notes
- Credentials. The app connects as
pqs/pqsonlocalhost(seeincludes/db.php). These are a formality on an air-gapped LAN. - Timezone. Set once in
includes/db.php(PQS_TIMEZONE, defaultAmerica/Chicago). Change it there. - PHP target. Code targets PHP 7.4+; XAMPP Lite 8.5 ships PHP 8.5. Tested on
PHP 8.3 / MariaDB (see
dev/). time.php(optional clock sync). Sets the machine clock from the browser for the air-gapped box. On Windows it uses PowerShellSet-Date, which only works if Apache is running as administrator. If the host clock is already correct you don't need this.
Fresh install vs. upgrading an existing DB
- Fresh XAMPP deploy → use
install/pqs_install.sql(this folder). It already creates every table 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.