Installing Bagisto on a fresh LEMP stack often fails due to mismatched PHP versions or missing extensions. We'll walk through the exact steps to get a stable e-commerce store running, covering common pitfalls from day one. Our team has configured Bagisto for over 15 production stores, and we guarantee every installation for 6 months.
Why Bagisto on Laravel Is a Solid Choice
Bagisto leverages Laravel 11, Vue 3, and Redis, offering flexibility and performance. However, the setup demands precise version control.
Common Installation Headaches
Typical errors: incompatible PHP (needs 8.1+), missing BCMath or GD, misconfigured queue workers, and filesystem permissions. Below we address each.
Server Requirements
| Component | Minimum | Recommended |
|---|---|---|
| PHP | 8.1 | 8.2+ |
| MySQL / MariaDB | 8.0 / 10.3 | MySQL 8.0 |
| Composer | 2.x | 2.x |
| Node.js | 16 | 18 LTS |
| RAM | 1 GB | 2 GB+ |
Required PHP extensions: BCMath, Ctype, cURL, DOM, Fileinfo, JSON, Mbstring, OpenSSL, PCRE, PDO, Tokenizer, XML, GD or Imagick.
Note: Using Redis for cache and queues cuts processing time by 5–10× compared to file-based caching. Configure it early.
Installation via Composer
composer create-project bagisto/bagisto:^2.2 myshop cd myshop cp .env.example .env Edit .env:
APP_URL=https://myshop.example.com DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=bagisto DB_USERNAME=bagisto_user DB_PASSWORD=secret CACHE_DRIVER=redis QUEUE_CONNECTION=redis SESSION_DRIVER=redis REDIS_HOST=127.0.0.1 REDIS_PORT=6379 Run the installer:
php artisan bagisto:install This runs migrations, seeders, publishes assets, and creates the first admin. Then build frontend:
npm install npm run build Nginx Configuration
server { listen 80; server_name myshop.example.com; root /var/www/myshop/public; index index.php; add_header X-Frame-Options "SAMEORIGIN"; add_header X-Content-Type-Options "nosniff"; charset utf-8; location / { try_files $uri $uri/ /index.php?$query_string; } location = /favicon.ico { access_log off; log_not_found off; } location = /robots.txt { access_log off; log_not_found off; } error_page 404 /index.php; location ~ \.php$ { fastcgi_pass unix:/var/run/php/php8.2-fpm.sock; fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; include fastcgi_params; } location ~ /\.(?!well-known).* { deny all; } } Enable SSL with Certbot: certbot --nginx -d myshop.example.com.
Queue Workers with Supervisor
Bagisto uses queues for emails, invoices, and webhooks.
[program:bagisto-worker] process_name=%(program_name)s_%(process_num)02d command=php /var/www/myshop/artisan queue:work redis --sleep=3 --tries=3 --max-time=3600 autostart=true autorestart=true stopasgroup=true killasgroup=true user=www-data numprocs=2 redirect_stderr=true stdout_logfile=/var/www/myshop/storage/logs/worker.log stopwaitsecs=3600 supervisorctl reread supervisorctl update supervisorctl start bagisto-worker:* Admin Panel Initial Setup
Log in at /admin to configure:
Channels and Locales
A channel is a separate "storefront" with its own domain, currency, and language. For multilingual stores, create one channel with multiple locales.
Taxes
Catalog → Taxes → Tax Categories — create categories (e.g., VAT 20%). Then link to taxpayer groups and regions via Tax Rates.
Shipping Methods
Built-in: FlatRate, Free Shipping. For third-party carriers (e.g., CDEK), install a package or create a custom provider in config/carriers.php.
Payment Methods
Built-in: Cash On Delivery, Money Transfer, PayPal. Custom gateways register in config/paymentmethods.php and implement Webkul\Payment\Payment.
Email Configuration
MAIL_MAILER=smtp MAIL_HOST=smtp.example.com MAIL_PORT=587 [email protected] MAIL_PASSWORD=secret MAIL_ENCRYPTION=tls [email protected] MAIL_FROM_NAME="My Store" Publish email templates:
php artisan vendor:publish --tag=bagisto-mail-views Edit them in resources/views/vendor/shop/emails/.
Cron for Scheduler
* * * * * cd /var/www/myshop && php artisan schedule:run >> /dev/null 2>&1 Handles cart cleanup, sitemap generation, and currency rate updates.
File Permissions
chmod -R 775 storage bootstrap/cache chown -R www-data:www-data /var/www/myshop What Our Turnkey Setup Includes
| Phase | Duration | Actions |
|---|---|---|
| Analysis | 1–2 days | Hosting selection, version alignment |
| Installation | 1 day | Composer, environment, dependencies |
| Configuration | 1–2 days | Channels, taxes, shipping, payments |
| Integration | 1 day | Email, queues, cron |
| Testing | 1 day | Functional checks |
Post-Installation Checklist
- [ ] Run
php artisan config:cache && php artisan route:cache - [ ] Set up DB backups (cron + mysqldump or
spatie/laravel-backup) - [ ] Verify Redis via
php artisan tinker→Redis::ping() - [ ] Test email with a sample order
- [ ] Monitor queues using Laravel Horizon (
composer require laravel/horizon) - [ ] Confirm sitemap generation at
/sitemap.xml
Additional Tips
For performance, use Redis for cache and queues. Monitor with Laravel Horizon. Laravel Queues documentation
What to Do If Something Breaks? Common Fixes
- Database connection error: check .env
- Composer errors: update PHP version
- Assets not loading: run
npm install && npm run build
If you need a turnkey Bagisto installation with warranty and support, contact us. We'll assess your project free of charge.







