Lumina Documentation

Shared Hosting Deployment (cPanel/Plesk)

Complete cPanel deployment steps: domain, SSL, DB import, SMTP, PHP extensions, and production .env setup.

Step 1: Buy Domain and Connect It to Shared Hosting

  1. Buy a domain from your registrar (Namecheap, GoDaddy, Cloudflare, etc.).
  2. From cPanel welcome email, copy nameservers.
  3. At registrar, replace old nameservers with hosting nameservers.
  4. In cPanel, open Domains and click Create a New Domain.
  5. Add your domain and point its document root to your app public directory.

DNS propagation may take from a few minutes up to 24 hours.

Step 2: Create Database and Import SQL in cPanel phpMyAdmin

  1. Open MySQL Databases in cPanel.
  2. Create database (example: cpuser_luminaai).
  3. Create DB user and password.
  4. Assign user to database with ALL PRIVILEGES.
  5. Open phpMyAdmin in cPanel.
  6. Select database, click Import, choose SQL file, click Go.

If SQL file is too large, upload compressed SQL or split dump before import.

Step 3: Upgrade PHP and Enable Required Extensions

In cPanel open Select PHP Version (or MultiPHP Manager):

  • Set domain PHP version to 8.2 or 8.3.
  • Enable: bcmath, ctype, curl, fileinfo, gd, intl, mbstring, mysqli/pdo_mysql, openssl, tokenizer, xml, zip.
  • Optionally enable exif, opcache, redis if your plan supports them.

Step 4: Upload Laravel Project in File Manager

  1. Zip project locally (exclude node_modules).
  2. Upload zip to cPanel File Manager (outside public_html is preferred).
  3. Extract zip into folder like /home/cpaneluser/luminaai.
  4. Point domain docroot to /home/cpaneluser/luminaai/public.
  5. If host does not allow custom docroot, copy only public contents to public_html and update index.php paths to app folder.

Step 5: Configure .env for Live Site

Set core production values in .env:

APP_ENV=production
APP_DEBUG=false
APP_URL=https://yourdomain.com
DB_DATABASE=cpuser_luminaai
DB_USERNAME=cpuser_dbuser
DB_PASSWORD=strong_password_here

Then from terminal/SSH (or cPanel terminal) run:

composer install --no-dev --optimize-autoloader
php artisan key:generate --force
php artisan migrate --force
php artisan storage:link
php artisan config:cache && php artisan route:cache && php artisan view:cache

Step 6: Activate SSL and Configure Business Email SMTP

In cPanel open SSL/TLS Status or AutoSSL and run SSL for the domain. If SSL is not active, force HTTPS only after certificate is issued.

Create mailbox in cPanel Email Accounts and configure SMTP in .env:

MAIL_MAILER=smtp
MAIL_HOST=mail.yourdomain.com
MAIL_PORT=465
MAIL_USERNAME=info@yourdomain.com
MAIL_PASSWORD=mailbox_password
MAIL_ENCRYPTION=ssl
MAIL_FROM_ADDRESS=info@yourdomain.com
MAIL_FROM_NAME='LuminaAI'

Step 7: Cron, Queue Fallback, and Filament Admin Seed

Shared hosting often has no supervisor, so configure cron and fallback queue:

* * * * * php /home/USER/app/artisan schedule:run >> /dev/null 2>&1
php artisan queue:work --stop-when-empty
php artisan make:filament-user

Access website at https://yourdomain.com and Filament admin at https://yourdomain.com/admin.

Troubleshooting (Shared Hosting)

  • Domain opens cPanel default page: verify domain document root points to Laravel public, then clear browser cache.
  • 500 Internal Server Error: check storage/logs/laravel.log, verify file permissions, and ensure APP_KEY is set.
  • Mixed content warning after SSL: set APP_URL=https://yourdomain.com and clear Laravel caches.
  • SQL upload limit hit in phpMyAdmin: use split SQL or ask host to raise upload limits in PHP settings.
  • Composer command unavailable: use cPanel Terminal, SSH, or upload vendor folder from local build as fallback.
  • Email not sending: verify SMTP host/port/encryption, mailbox credentials, and use provider-recommended SPF/DKIM records.