Skip to content

rdcstarr/laravel-multisite

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Laravel Multisite

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

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages