Explore complete technical guides covering installation, system requirements, performance benchmarks, customization methods, and troubleshooting.
Laravel 11 • PHP 8.2 • MySQL • Bootstrap 5 • Vue.js 3
Target: cPanel & VPS (2026)
| Requirement | Minimum | Recommended |
|---|---|---|
| OS | Ubuntu 20.04 / CentOS 8 | Ubuntu 22.04 LTS / AlmaLinux 9 |
| PHP | 8.0 | 8.2 (Laravel 11) |
| PHP Extensions | pdo_mysql, mbstring, openssl, tokenizer, xml, ctype, json, bcmath, fileinfo | All above + gd, exif, intl |
| Database | MySQL 5.7 / MariaDB 10.2 | MySQL 8.0 / MariaDB 10.5 |
| Web Server | Apache 2.4 or Nginx 1.18 | Apache 2.4 or Nginx 1.22 |
| Node | 14.x | 18.x LTS (for Vue CLI) |
| Composer | 2.0 | 2.6+ |
| Disk Space | 2 GB | 5 GB+ (including media) |
| RAM | 1 GB | 2 GB+ (for smooth queue processing) |
# Update system
sudo apt update && sudo apt upgrade -y # Ubuntu/Debian
# sudo dnf update -y # AlmaLinux/CentOS
# Install PHP 8.2 and required extensions
sudo apt install -y php8.2 php8.2-{cli,fpm,mysql,mbstring,xml,zip,curl,gd,intl,bcmath,opcache} \
php8.2-common php8.2-dev
# Install Composer globally
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php composer-setup.php --install-dir=/usr/local/bin --filename=composer
rm composer-setup.php
# Install Node.js 18 LTS (via nvm)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
nvm install 18 && nvm use 18
# Install Git (if not present)
sudo apt install -y gitsudo adduser --system --shell /bin/bash --group --no-create-home foodomaa
sudo usermod -aG www-data foodomaa # Give access to web server groupsudo mysql -u root -pCREATE DATABASE foodomaa_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'foodomaa_user'@'127.0.0.1' IDENTIFIED BY 'StrongP@ssw0rd!';
GRANT ALL PRIVILEGES ON foodomaa_db.* TO 'foodomaa_user'@'127.0.0.1';
FLUSH PRIVILEGES;
EXIT;.env file. Avoid using default credentials that bots can guess.Developers can order the verified clean untouched source code with instant on‑demand delivery for a flat $5.00 rate via 217G. The package includes the full Laravel project, .env.example, and a ready‑to‑run composer.json.
# Assuming the zip is uploaded to /home/username/
cd /var/www/
sudo mkdir foodomaa && sudo chown $USER:$USER foodomaa
unzip /home/username/foodomaa.zip -d foodomaapublic_html/foodomaa.cd /var/www/foodomaa
# Install PHP dependencies
composer install --optimize-autoloader --no-dev
# Install front‑end assets
npm ci
npm run prod # Generates minified Vue.js assetsIf you encounter memory errors, increase PHP CLI memory limit:
php -d memory_limit=2G $(which composer) installCopy the example file and edit the credentials:
cp .env.example .env
nano .envKey sections to update:
APP_NAME=Foodomaa
APP_ENV=production
APP_KEY= # generate with `php artisan key:generate`
APP_DEBUG=false
APP_URL=https://yourdomain.com
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=foodomaa_db
DB_USERNAME=foodomaa_user
DB_PASSWORD=StrongP@ssw0rd!Generate the application key:
php artisan key:generate# Set directory ownership (replace www-data with your web server user)
sudo chown -R www-data:www-data /var/www/foodomaa
# Set folder permissions
find /var/www/foodomaa -type d -exec chmod 775 {} \;
find /var/www/foodomaa -type f -exec chmod 664 {} \;
# Storage & bootstrap cache need write access
sudo chmod -R 775 storage bootstrap/cachechmod 775 is required for Laravel’s runtime directories. Avoid 777 as it creates security risks.Create a virtual host file:
sudo nano /etc/apache2/sites-available/foodomaa.conf<VirtualHost *:80>
ServerName yourdomain.com
DocumentRoot /var/www/foodomaa/public
<Directory /var/www/foodomaa/public>
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/foodomaa_error.log
CustomLog ${APACHE_LOG_DIR}/foodomaa_access.log combined
</VirtualHost>Enable the site and rewrite module:
sudo a2enmod rewrite
sudo a2ensite foodomaa.conf
sudo systemctl reload apache2Create an Nginx server block:
sudo nano /etc/nginx/sites-available/foodomaaserver {
listen 80;
server_name yourdomain.com www.yourdomain.com;
root /var/www/foodomaa/public;
index index.php;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;
}
location ~ /\.ht {
deny all;
}
# Cache static assets
location ~* \.(js|css|png|jpg|jpeg|gif|svg|ico)$ {
expires 30d;
add_header Cache-Control "public, immutable";
}
error_log /var/log/nginx/foodomaa_error.log;
access_log /var/log/nginx/foodomaa_access.log;
}Enable the block and test syntax:
sudo ln -s /etc/nginx/sites-available/foodomaa /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginxphp artisan migrate --force
php artisan db:seed --force # Optional: loads demo restaurant dataIf you receive a “SQLSTATE[HY000] [2002] Connection refused” error, double‑check the DB credentials in .env and ensure MySQL is listening on 127.0.0.1.
Foodomaa uses Laravel’s queue for order notifications. Set up Supervisor (or systemd) to keep workers alive:
sudo apt install -y supervisor
sudo nano /etc/supervisor/conf.d/foodomaa-worker.conf[program:foodomaa-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/foodomaa/artisan queue:work --sleep=3 --tries=3
autostart=true
autorestart=true
user=www-data
numprocs=2
redirect_stderr=true
stdout_logfile=/var/www/foodomaa/storage/logs/worker.logsudo supervisorctl reread && sudo supervisorctl updateAdd a cron entry for the scheduler:
* * * * * www-data php /var/www/foodomaa/artisan schedule:run >> /dev/null 2>&1| Symptom | Likely Cause | Fix |
|---|---|---|
| 500 Internal Server Error after upload | Incorrect file permissions or missing .env | Ensure chmod 775 on storage & bootstrap/cache, verify .env exists and contains APP_KEY. |
| CSRF Token Mismatch on admin login | Cache still holds old env values | Run php artisan config:clear && php artisan cache:clear. |
| Images not loading | public/storage symlink missing | php artisan storage:link. |
| Queue workers stop after reboot | Supervisor not enabled at boot | systemctl enable supervisor. |
Nginx returns 404 for /admin | try_files directive mis‑ordered | Ensure try_files $uri $uri/ /index.php?$query_string; appears before other location blocks. |
| Composer out of memory | Low PHP CLI memory limit | php -d memory_limit=2G $(which composer) install. |
storage/logs/laravel.log) and the web‑server error log for detailed diagnostics.certbot) and force HTTPS in the web‑server config.url()->canonical() helper is enabled by default; verify <link rel="canonical"> tags in the page source.php artisan sitemap:generate (if the package is installed) and place robots.txt at the site root.gzip on; in Nginx) and HTTP/2.Order now for only $5.00 flat. Receive the complete untouched ZIP archive and database SQL within minutes.