- 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>
80 lines
3.0 KiB
Markdown
80 lines
3.0 KiB
Markdown
# 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](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
|
|
|
|
1. **Drop the app into the web root**, named `pqs`:
|
|
```
|
|
xampp_lite_8_5\www\pqs\
|
|
```
|
|
(The app uses `/pqs/...` URLs, so the folder must be `pqs`.)
|
|
|
|
2. **Start Apache + MySQL** from `XL-Control-Panel.x64.exe`.
|
|
|
|
3. **Create the database** (one time). From `apps\mysql\bin`:
|
|
```
|
|
mysql.exe -u root < ..\..\..\www\pqs\install\pqs_install.sql
|
|
```
|
|
Or import `install\pqs_install.sql` via phpMyAdmin (http://localhost/phpmyadmin).
|
|
This creates the `pqs` database, the `pqs`/`pqs` user, every table (all
|
|
InnoDB) and the static seed (mechs, maps, game types, default config, pods).
|
|
|
|
4. **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`/`pqs` on `localhost` (see
|
|
`includes/db.php`) — a formality on an air-gapped LAN.
|
|
- **Timezone.** Set once in `includes/db.php` (`PQS_TIMEZONE`, default
|
|
`America/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 PowerShell `Set-Date` on 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:
|
|
|
|
```sql
|
|
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 `INSERT`s 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-*.sql` and `002-*.sql` instead, which convert the affected
|
|
tables to InnoDB in place.
|