Install Academy LMS safely on cPanel, shared hosting, or a managed server.
The installer checks the server, records your central application URL, creates a clean schema, applies launch defaults, creates the administrator, and locks itself before normal use begins.
Before you start
- Create a new MySQL or MariaDB database and user with full privileges for this application only.
- Point the domain document root at the application
publicdirectory. - Make
.env,storage, andbootstrap/cachewritable by the PHP user. - Use HTTPS before choosing Production mode. Do not use a shared database containing another application.
The nine steps
| Step | Purpose | What to check |
|---|---|---|
| 1. Requirements | Confirms PHP extensions, folders, and server capability. | Fix every failed check before continuing. |
| 2. Application | Sets identity, URL, currency, central domains, and optional tenant suffix. | Use the public HTTPS URL that visitors will use. |
| 3. Database | Tests the chosen database credentials. | Test succeeds before settings can be saved. |
| 4. Database setup | Clears the selected install database, migrates, and seeds required data. | Confirm the destructive warning; retry always starts from a clean schema. |
| 5. Channels | Sets mail and optional SMS/WhatsApp delivery. | Use a test address owned by the installer administrator. |
| 6. Launch defaults | Sets deployment mode, academy defaults, access policy, session, and login baseline. | Production requires HTTPS and keeps self-registration off by default. |
| 7. Admin | Creates the first active administrator. | Use a unique password; the Admin role receives existing web permissions. |
| 8. Branding | Uploads optional assets and chooses colours. | The live preview reflects each valid colour before saving. |
| 9. Finish | Locks browser installation access. | Lock the installer before using the login page. |
cPanel deployment notes
Keep vendor, .env, and storage runtime files outside file-sync overwrite rules. Deploy application changes, run the release commands through the hosting terminal when available, and never publish database credentials in repository files. MySQL/MariaDB installation uses InnoDB and 191-character indexed strings for shared-hosting compatibility.
After installation
- Sign in with the administrator account.
- Review Settings, academy defaults, and role assignments.
- Run the security readiness check before a production release.
- Configure AI, payments, API access, and provider credentials only from protected Settings pages.
Developer note: the installer writes central-domain environment values and treats a one-domain deployment with no tenant-domain mappings as the central application. The browser installer is unavailable once its lock file exists.