Appearance
Installing the system
What the whole install looks like, start to finish, before you begin any of it. Time to read: 3 minutes. Time to install: about an hour.
Before you start
- Hosting that meets the requirements — see Which hosting do I need?
- Your domain, pointed at that hosting
- The files we supplied, and the
.sqldatabase file that came with them
There is no installer to run
You do not run any commands to install this. The database arrives ready-made — you import it, tell the system where it is, and it starts.
There is one command-like step, and it is unavoidable: a single cron job. Your hosting panel adds it with a form, no terminal needed. It is covered on its own page because everything that happens automatically depends on it.
The five steps
Full walkthrough: Installing on shared hosting.
| Step | What you do | Where |
|---|---|---|
| 1 | Upload and extract the files into your web folder | Hosting file manager |
| 2 | Create a MySQL database, then import the supplied .sql file | Hosting panel → databases |
| 3 | Copy .env.install.example to .env and fill in six values | File manager |
| 4 | Add one cron job | Hosting panel → cron jobs |
| 5 | Log in, change the default password | Your new site |
On shared hosting there is nothing to "point" anywhere
You may have read that Laravel systems need the domain aimed at a public folder. Not here. The files include a .htaccess that sends visitors to the right place automatically.
Upload everything into your normal web folder — public_html on hPanel and cPanel — and your domain works as it is.
VPS users on Nginx: this does not apply to you
That automatic redirect is an Apache feature. Nginx ignores it completely. On a VPS running Nginx you must set the site root to the public folder, or you will get a blank page or a download prompt instead of the site.
Do not copy .env.example
The file named .env.example is the developer default. Copying it will put your live site into debug mode (showing your database details to anyone who triggers an error), point it at the wrong kind of database, and write every email to a log file instead of sending it.
Always start from .env.install.example. It is the one written for you, with safe settings already in place and only six lines to change.
What you must change in .env
Everything else in the template is already correct. These are the only lines that need your details:
| Line | What to put | Example |
|---|---|---|
APP_KEY | Already filled in for you — but replace it before going live | base64:... |
APP_URL | Your real address, including https:// | https://erp.stmarys.edu.in |
DB_DATABASE | Database name from your panel | u123456_school |
DB_USERNAME | Database user from your panel | u123456_admin |
DB_PASSWORD | That user's password | — |
MAIL_* | Your email sending details | see the email setup page |
APP_URL must match how people actually reach the site
If people open https://erp.school.com but APP_URL says http://erp.school.com, logins and links behave strangely and payment gateways reject their return address. Include https:// and no trailing slash.
Your installation checks itself
Once you can log in, the system will tell you what is still wrong. Go to:
Sidebar → Server & Health → Server Health
It checks your hosting against what the system needs and reports in plain language — PHP version, missing extensions, folder permissions, whether uploaded files are reachable, and whether the cron job is set up. Work through anything it flags before you add your first school.
Two things there save real time:
- Media Storage Link — if it says Not linked, press Create Storage Link Now. That is the fix; there is no command to run.
- Scheduled Tasks (Cron) — shows the exact cron command for your server, ready to copy. See The cron job.
After it is running
- Log in and change the default password immediately
- Set up email — nothing else works properly until email sends
- Set up SMS and your payment gateway
- Create your first school
If something goes wrong
Work through it in this order — it is almost always one of these:
| What you see | Almost always means |
|---|---|
| Blank white page, or the browser downloads a file | On shared hosting: the .htaccess file did not upload — it starts with a dot, and some file managers hide those. On an Nginx VPS: the site root is not set to public |
| "No application encryption key" | APP_KEY is empty in .env |
| Database connection error | Wrong DB_ details, or the .sql file was never imported |
| Site loads but no email, no SMS, no reminders ever | The cron job is missing — see The cron job |
| Logos and uploaded files show as broken | The storage link is missing — fix it with the button on the Server Health page, above |
| Student documents, certificates or ID cards return "not found" on a VPS | Your web server is serving private files directly instead of letting the system check permission first. The Server Health page gives you the exact Nginx or Apache block to add — this affects VPS installs only, not shared hosting |