Installation Guide
Most failed installs come down to five things: the wrong PHP version, a missing extension, file permissions, an inactive SSL certificate, or a domain that does not resolve to the server. Fix those before you upload anything.
Before you start
- Server with PHP 8.x, MySQL and the required extensions (requirements).
- Database name, user and password ready.
- Domain pointing at the server, with SSL active.
- SMTP credentials for order and password emails.
- A backup plan and a maintenance window. Do not install over an existing live site.
1. Create the database
Create a dedicated database and user in your hosting panel or from MySQL. Grant the user all privileges on that database only. Note the host, port, database name, user and password — the installer will ask for them.
2. Upload the package
Upload the Foodomaa package to the web root and extract it. If the package contains a public directory, point the domain's document root at public; do not expose the application files above it. Keep the original archive until the install is verified.
3. Set permissions
The web user needs write access to the storage, cache and upload directories used by your build. A typical layout is:
storage/ writable
bootstrap/cache/ writable
public/uploads/ writable
Use the owner of the web server process (often www-data or www) and 755 for directories, 644 for files. Never use 777.
4. Run the installer
Open your domain in a browser. The installer asks for the database credentials, the site name, the admin account and sometimes the purchase/licence details. Use a strong admin password and a real email address you control.
If the installer returns a 500 or a blank page, check the PHP error log first, then the application log. The usual causes are a missing PHP extension, a database connection error, or a permission problem.
5. Post-install settings
- Site URL — the exact HTTPS URL, including
https://and the correct subdirectory if any. - Timezone and currency — every report and receipt inherits them.
- Commission and fees — set the vendor commission, delivery charge and minimum basket together.
- Delivery zones — draw the polygon or radius before adding restaurants.
- Payment gateway — start in sandbox; switch to live only after a successful end-to-end order.
- Email/SMS — send a test of each. OTP failures look like a broken app to customers.
- Branding — logo, colours, splash screen and app icons.
6. Cron and queue
Add the scheduler entry for the web user and confirm it runs every minute. If your build uses queues, start a worker under Supervisor or systemd and confirm jobs are processed. Recheck both after every deploy.
7. First test order
Create one test vendor, one menu item and one delivery zone. Place an order end to end: customer checkout, vendor acceptance, rider assignment, delivery completion and settlement report. Test one cancellation and one refund before inviting real vendors.
8. Backup
Take a full backup of files and database immediately after the install, and schedule daily database backups. Store them off the server. A backup you have never restored is not a backup.