rdcstarr / laravel-multisite
A multisite package for Laravel.
v1.0.8
2025-09-30 06:55 UTC
Requires
- php: ^8.0
- illuminate/contracts: ^11.0||^12.0
- spatie/laravel-package-tools: ^1.16
Requires (Dev)
- larastan/larastan: ^3.0
- laravel/pint: ^1.14
- nunomaduro/collision: ^8.8
- orchestra/testbench: ^10.0.0||^9.0.0
- pestphp/pest: ^4.0
- pestphp/pest-plugin-arch: ^4.0
- pestphp/pest-plugin-laravel: ^4.0
- phpstan/extension-installer: ^1.4
- phpstan/phpstan-deprecation-rules: ^2.0
- phpstan/phpstan-phpunit: ^2.0
README
A powerful and flexible Laravel package for multisite management, each site with different database and .env.
โจ Features
- ๐งฉ Multisite - Manage multiple sites with separate databases and configurations.
๐ฆ Installation
Install the package via Composer:
composer require rdcstarr/laravel-multisite
- Prepare your Nginx or Apache configuration to route requests to the same Laravel application. Example for nginx:
server { listen 80; server_name example.com; root /home/admin/web/{core.local}/public; index index.php index.html index.htm; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php8.4-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
- Replace
use Illuminate\Foundation\Application
withuse Rdcstarr\Multisite\Foundation\Application
in./bootstrap/app.php
. - Add next cod before bootstrap application:
$_SERVER['MULTISITE'] = [ 'production' => [ 'sites_path' => '/home/admin/web', // path where all sites are located 'base_path' => '/private', // path to the folder with .env files, e.g. in my case path will be: `/home/admin/web/{site.tld}/private/.env` 'public_path' => '/public_html', // path to the public files, e.g. in my case path will be: `/home/admin/web/{site.tld}/public_html` ], 'local' => [ 'sites_path' => '/var/www/html/.subdomains', // path where all sites are located in local development 'base_path' => '/private', // path to the folder with .env files, e.g. in my case path will be: `/var/www/html/.subdomains/{site.tld}/private/.env` 'public_path' => '/public_html', // path to the public files, e.g. in my case path will be: `/var/www/html/.subdomains/{site.tld}/public_html` ], // List of artisan commands who doesn't require multisite context 'SKIP_VALIDATION' => [ 'theme', ], ];
๐ ๏ธ Artisan Commands
The package provides dedicated Artisan commands for managing settings directly from the command line:
List sites
php artisan multisite:list
Run migrations for all sites
php artisan multisite:migrate [--force] [--seed] [--seeder]
Run migrations fresh for all sites
php artisan multisite:migrate-fresh [--force] [--seed] [--seeder]
Queue worker for sites
php artisan multisite:queue
Scheduler run for all sites
php artisan multisite:schedule-run
Seed database for all sites
php artisan multisite:seed [--force] [--class]
๐งช Testing
composer test
๐ Resources
- Changelog for more information on what has changed recently. โ๏ธ
๐ฅ Credits
- Rdcstarr ๐
๐ License
- License for more information. โ๏ธ
ToDo
- [] Change single and daily logs to base path like
/home/admin/web/{site.tld}/private/logs/laravel.log