How to Implement Multi-Tenancy in Laravel – Hindi Tutorial

How to Implement Multi-Tenancy in Laravel – Hindi Tutorial

यदि आप एक ऐसा लारवेल (Laravel) ऐप बनाना चाहते हैं, जो कई क्लाइंट्स (जैसे अलग-अलग कंपनियाँ या यूज़र्स) के लिए अलग-अलग डेटा मैनेज करे, तो मल्टी-टेनेंसी (Multi-Tenancy) आपके लिए आदर्श समाधान है। यह तकनीक एक ही ऐप इंस्टॉलेशन से कई टेनेंट्स (Tenants) का डेटा अलग-अलग और सुरक्षित रखने में मदद करती है। इस लारवेल मल्टी-टेनेंसी ट्यूटोरियल इन हिंदी (Laravel Multi-Tenancy Tutorial in Hindi) में हम आपको स्टेप-

Table of contents [Show]

परिचय: लारवेल में मल्टी-टेनेंसी क्यों इम्प्लीमेंट करें? (Why Implement Multi-Tenancy in Laravel?)

यदि आप एक ऐसा लारवेल (Laravel) ऐप बनाना चाहते हैं, जो कई क्लाइंट्स (जैसे अलग-अलग कंपनियाँ या यूज़र्स) के लिए अलग-अलग डेटा मैनेज करे, तो मल्टी-टेनेंसी (Multi-Tenancy) आपके लिए आदर्श समाधान है। यह तकनीक एक ही ऐप इंस्टॉलेशन से कई टेनेंट्स (Tenants) का डेटा अलग-अलग और सुरक्षित रखने में मदद करती है। इस लारवेल मल्टी-टेनेंसी ट्यूटोरियल इन हिंदी (Laravel Multi-Tenancy Tutorial in Hindi) में हम आपको स्टेप-बाय-स्टेप बताएँगे कि लारवेल में मल्टी-टेनेंट ऐप कैसे बनाते हैं, जिसमें डेटाबेस पर टेनेंट (Separate Database per Tenant) अप्रोच का उपयोग करेंगे। यह गाइड शुरुआती लोगों (Beginners) के लिए बहुत आसान है। तो, आइए शुरू करें! 🚀

 

लारवेल मल्टी-टेनेंसी के फायदे (Benefits of Laravel Multi-Tenancy)

मल्टी-टेनेंसी इतनी महत्वपूर्ण क्यों है? यहाँ कुछ प्रमुख फायदे हैं:

  • डेटा आइसोलेशन (Data Isolation): प्रत्येक टेनेंट का डेटा अलग और सुरक्षित रहता है।
  • स्केलेबिलिटी (Scalability): एक ही ऐप से कई क्लाइंट्स को हैंडल करें।
  • कम मेंटेनेंस (Low Maintenance): एक कोडबेस से सभी टेनेंट्स को मैनेज करें।
  • कस्टमाइज़ेशन (Customization): प्रत्येक टेनेंट के लिए अलग कॉन्फिगरेशन सेट करें।
  • कम्युनिटी सपोर्ट (Community Support): Laravel और मल्टी-टेनेंसी पैकेजेस की वैश्विक कम्युनिटी मजबूत समर्थन प्रदान करती है।

जानकारी (Fact): 2025 में 35% SaaS ऐप्स मल्टी-टेनेंसी अप्रोच का उपयोग करते हैं!

मल्टी-टेनेंसी से क्या बना सकते हैं? (What Can You Build with Multi-Tenancy?)

लारवेल में मल्टी-टेनेंसी के साथ आप कई प्रकार के प्रोजेक्ट्स बना सकते हैं, जैसे:

  • SaaS प्लेटफॉर्म्स (SaaS Platforms): CRM, ERP, या इनवॉइसिंग सिस्टम।
  • ई-कॉमर्स मार्केटप्लेस (E-commerce Marketplace): अलग-अलग स्टोर्स के लिए अलग डेटा।
  • स्कूल मैनेजमेंट सिस्टम (School Management System): प्रत्येक स्कूल के लिए अलग डेटाबेस।
  • हेल्थकेयर ऐप्स (Healthcare Apps): अलग-अलग क्लिनिक्स के लिए डेटा आइसोलेशन।

लारवेल में मल्टी-टेनेंसी इम्प्लीमेंट करने की स्टेप-बाय-स्टेप गाइड (Step-by-Step Guide)

स्टेप 1: लारवेल प्रोजेक्ट सेटअप करें (Setup Laravel Project)

सबसे पहले, एक नया लारवेल प्रोजेक्ट बनाएँ। इसके लिए निम्नलिखित चीज़ें चाहिए:

  • PHP: वर्जन 8.1 या उससे ऊपर।
  • कंपोजर (Composer): PHP पैकेज मैनेजर।
  • डेटाबेस: MySQL।

कैसे सेट करें?

  1. टर्मिनल में निम्नलिखित कमांड चलाएँ:
composer create-project laravel/laravel multi-tenant-app

इससे “multi-tenant-app” नाम का एक फोल्डर बनेगा।

  1. फोल्डर में जाएँ और सर्वर शुरू करें:
cd multi-tenant-app
php artisan serve

ब्राउज़र में http://localhost:8000 खोलें, आपको लारवेल का वेलकम पेज दिखेगा।

 

स्टेप 2: मल्टी-टेनेंसी पैकेज इंस्टॉल करें (Install Multi-Tenancy Package)

हम Tenancy for Laravel पैकेज का उपयोग करेंगे, जो मल्टी-टेनेंसी को आसान बनाता है।

  1. टर्मिनल में निम्नलिखित कमांड चलाएँ:
composer require stancl/tenancy
  1. Tenancy को इंस्टॉल करें:
php artisan tenancy:install

यह कमांड कॉन्फिगरेशन फाइल्स और माइग्रेशन्स जनरेट करेगा।

  1. Tenancy को कॉन्फिगर करें। config/tenancy.php में निम्नलिखित सेट करें:
'hostname_default' => 'localhost',
'database_template' => 'tenant_template',

स्टेप 3: सेंट्रल डेटाबेस सेटअप करें (Setup Central Database)

सेंट्रल डेटाबेस में टेनेंट्स की जानकारी स्टोर होगी।

  1. .env फाइल में सेंट्रल डेटाबेस डिटेल्स जोड़ें:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=central_db
DB_USERNAME=your_username
DB_PASSWORD=your_password
  1. MySQL में सेंट्रल डेटाबेस बनाएँ (central_db)।
  2. माइग्रेशन चलाएँ:
php artisan migrate

स्टेप 4: टेनेंट मॉडल और डेटाबेस सेटअप करें (Setup Tenant Model and Database)

प्रत्येक टेनेंट का अलग डेटाबेस होगा।

  1. टेनेंट्स के लिए मॉडल बनाएँ:
php artisan make:model Tenant -m
  1. database/migrations/ में टेनेंट माइग्रेशन फाइल में निम्नलिखित कोड जोड़ें:
Schema::create('tenants', function (Blueprint $table) {
    $table->id();
    $table->string('name');
    $table->string('domain')->unique();
    $table->string('database')->unique();
    $table->timestamps();
});
  1. app/Models/Tenant.php में निम्नलिखित कोड जोड़ें:
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Stancl\Tenancy\Database\Models\Tenant as BaseTenant;
class Tenant extends BaseTenant
{
    protected $fillable = ['name', 'domain', 'database'];
}
  1. प्रोडक्ट्स के लिए मॉडल और माइग्रेशन बनाएँ (टेनेंट डेटाबेस के लिए):
php artisan make:model Product -m
  1. database/migrations/ में प्रोडक्ट माइग्रेशन में निम्नलिखित कोड जोड़ें:
Schema::create('products', function (Blueprint $table) {
    $table->id();
    $table->string('name');
    $table->decimal('price', 8, 2);
    $table->timestamps();
});
  1. टेनेंट डेटाबेस माइग्रेशन सेट करें। config/tenancy.php में:
'migrations' => [
    'migrate' => [
        \Database\Migrations\CreateProductsTable::class,
    ],
],

स्टेप 5: टेनेंट रजिस्ट्रेशन सेटअप करें (Setup Tenant Registration)

नए टेनेंट्स को रजिस्टर करने का सिस्टम बनाएँ।

  1. कंट्रोलर बनाएँ:
php artisan make:controller TenantController
  1. app/Http/Controllers/TenantController.php में निम्नलिखित कोड जोड़ें:
namespace App\Http\Controllers;
use App\Models\Tenant;
use Illuminate\Http\Request;
use Stancl\Tenancy\Database\TenantManager;
class TenantController extends Controller
{
    public function create(Request $request)
    {
        $validated = $request->validate([
            'name' => 'required|string|max:255',
            'domain' => 'required|string|unique:tenants,domain',
        ]);
        $tenant = Tenant::create([
            'name' => $validated['name'],
            'domain' => $validated['domain'],
            'database' => 'tenant_' . str_replace('.', '_', $validated['domain']),
        ]);
        tenancy()->initialize($tenant);
        tenancy()->migrate();
        return response()->json(['message' => 'Tenant created successfully', 'tenant' => $tenant], 201);
    }
}
  1. routes/api.php में रूट जोड़ें:
use App\Http\Controllers\TenantController;
Route::post('/tenants', [TenantController::class, 'create']);

स्टेप 6: टेनेंट रिज़ॉल्यूशन सेटअप करें (Setup Tenant Resolution)

डोमेन के आधार पर टेनेंट रिज़ॉल्व करें।

  1. app/Providers/TenancyServiceProvider.php में डोमेन रिज़ॉल्यूशन कॉन्फिगर करें:
namespace App\Providers;
use Stancl\Tenancy\Bootstrappers\DatabaseTenancyBootstrapper;
class TenancyServiceProvider extends \Stancl\Tenancy\TenancyServiceProvider
{
    protected $bootstrappers = [
        DatabaseTenancyBootstrapper::class,
    ];
}
  1. config/app.php में प्रोवाइडर रजिस्टर करें:
App\Providers\TenancyServiceProvider::class,

स्टेप 7: टेनेंट-बेस्ड डेटा मैनेजमेंट (Manage Tenant-Based Data)

टेनेंट-बेस्ड प्रोडक्ट्स मैनेज करें।

  1. प्रोडक्ट कंट्रोलर बनाएँ:
php artisan make:controller ProductController --api
  1. app/Http/Controllers/ProductController.php में निम्नलिखित कोड जोड़ें:
namespace App\Http\Controllers;
use App\Models\Product;
use Illuminate\Http\Request;
class ProductController extends Controller
{
    public function index()
    {
        return Product::all();
    }
    public function store(Request $request)
    {
        $validated = $request->validate([
            'name' => 'required|string|max:255',
            'price' => 'required|numeric|min:0',
        ]);
        $product = Product::create($validated);
        return response()->json($product, 201);
    }
}
  1. routes/api.php में रूट्स जोड़ें:
use App\Http\Controllers\ProductController;
Route::apiResource('products', ProductController::class);

स्टेप 8: टेस्टिंग (Testing)

मल्टी-टेनेंट सेटअप को टेस्ट करें।

  1. Postman में टेनेंट क्रिएट करें:
POST http://localhost:8000/api/tenants
{
    "name": "Test Tenant",
    "domain": "test.localhost"
}
  1. टेनेंट डेटाबेस में प्रोडक्ट्स जोड़ें:
POST http://test.localhost:8000/api/products
{
    "name": "Test Product",
    "price": 99.99
}
  1. लोकलहोस्ट में डोमेन टेस्टिंग के लिए /etc/hosts में जोड़ें:
127.0.0.1 test.localhost

 

स्टेप 9: होस्टिंग (Hosting)

मल्टी-टेनेंट ऐप को ऑनलाइन ले जाएँ।

  1. होस्टिंग चुनें: Hostinger किफायती और शुरुआती लोगों के लिए उपयुक्त है।
  2. प्रोजेक्ट फाइल्स और सेंट्रल डेटाबेस को सर्वर पर अपलोड करें।
  3. सबडोमेन्स कॉन्फिगर करें (जैसे tenant1.yourdomain.com)।

 

लारवेल मल्टी-टेनेंसी टिप्स (Tips for Laravel Multi-Tenancy)

  • डेटा आइसोलेशन (Data Isolation): डेटाबेस पर टेनेंट अप्रोच का उपयोग करें।
  • सुरक्षा (Security): टेनेंट डेटा को क्रॉस-एक्सेस से सुरक्षित रखें।
  • टेस्टिंग (Testing): प्रत्येक टेनेंट के लिए अलग टेस्ट केस बनाएँ।
  • डॉक्यूमेंटेशन (Documentation): Tenancy Docs और Laravel Docs पढ़ें।

अक्सर पूछे जाने वाले सवाल (FAQs)

1. लारवेल में मल्टी-टेनेंसी क्यों इम्प्लीमेंट करें? (Why Implement Multi-Tenancy in Laravel?)

मल्टी-टेनेंसी से एक ऐप के ज़रिए कई क्लाइंट्स का डेटा मैनेज किया जा सकता है। **(HQ)**

2. क्या मल्टी-टेनेंसी शुरुआती लोगों के लिए आसान है? (Is Multi-Tenancy Easy for Beginners?)

हाँ, इस laravel multi-tenancy tutorial in hindi गाइड के साथ शुरुआती लोग आसानी से सीख सकते हैं। **(HQ)**

3. मल्टी-टेनेंट ऐप बनाने में कितना समय लगता है? (How Long to Build Multi-Tenant App?)

इस गाइड को फॉलो करके 2-3 दिन। जटिल ऐप्स के लिए 1 सप्ताह लग सकता है। **(HQ)**

4. क्या मैं सिंगल डेटाबेस का उपयोग कर सकता हूँ? (Can I Use Single Database?)

हाँ, लेकिन डेटाबेस पर टेनेंट अप्रोच अधिक सुरक्षित है।

5. मल्टी-टेनेंट ऐप को ऑनलाइन कैसे लाएँ? (How to Launch Multi-Tenant App Online?)

Hostinger पर प्रोजेक्ट अपलोड करें।

निष्कर्ष: आज ही मल्टी-टेनेंसी शुरू करें! (Start Multi-Tenancy Today!)

इस लारवेल मल्टी-टेनेंसी ट्यूटोरियल इन हिंदी (Laravel Multi-Tenancy Tutorial in Hindi) के माध्यम से आपने सीखा कि Laravel में Tenancy for Laravel पैकेज का उपयोग करके मल्टी-टेनेंट ऐप कैसे बनाया जाता है। इस गाइड को फॉलो करें और स्केलेबल SaaS ऐप्स बनाएँ। यदि आपके कोई सवाल हैं, तो नीचे कमेंट करें। अपने ऐप को Hostinger पर होस्ट करें और इसे ऑनलाइन ले जाएँ।

अगला क्या सीखें? (What to Learn Next?) Laravel GraphQL, Websockets, या Docker जैसे टॉपिक्स पर ट्यूटोरियल्स हिंदी में (Tutorials in Hindi) चाहिए? InHindi24.com पर और गाइड्स पढ़ें!

Munna Patel

हाय, मैं एक फुल स्टैक डेवलपर (Full Stack Developer) हूँ, जिसके पास 7 साल का अनुभव (7 Years of Experience) है। मेरा जुनून है वेब डेवलपमेंट (Web Development) और कोडिंग (Coding) को आसान (Easy) और मजेदार बनाना, खासकर हिंदी भाषी ऑडियंस के लिए। मैं InHindi24.com पर हिंदी में टेक ट्यूटोरियल्स (Tech Tutorials in Hindi) शेयर करता हूँ, जिसमें लारवेल (Laravel), HTML, CSS, JavaScript, Python, और बहुत कुछ