rdcstarr/laravel-multisite

A multisite package for Laravel.

v1.0.8 2025-09-30 06:55 UTC

This package is auto-updated.

Last update: 2025-09-30 06:56:02 UTC


README

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

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
  1. 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;
    	}
    }
  2. Replace use Illuminate\Foundation\Application with use Rdcstarr\Multisite\Foundation\Application in ./bootstrap/app.php.
  3. 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

๐Ÿ“œ License

  • License for more information. โš–๏ธ

ToDo

  • [] Change single and daily logs to base path like /home/admin/web/{site.tld}/private/logs/laravel.log