tenancy-docs/dist/docs/2.x/installation/index.html
2019-09-18 16:33:16 +02:00

427 lines
16 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<meta name="description" content="Installing stancl/tenancy — A Laravel multi-database tenancy package that respects your code..">
<meta property="og:site_name" content="stancl/tenancy documentation"/>
<meta property="og:title" content="Installation | stancl/tenancy documentation"/>
<meta property="og:description" content="Installing stancl/tenancy — A Laravel multi-database tenancy package that respects your code.."/>
<meta property="og:url" content="https://tenancy.samuelstancl.me/docs/2.x/installation"/>
<meta property="og:image" content="/assets/img/logo.png"/>
<meta property="og:type" content="website"/>
<meta name="twitter:image:alt" content="stancl/tenancy documentation">
<meta name="twitter:card" content="summary_large_image">
<title>Installation | stancl/tenancy documentation</title>
<link rel="home" href="https://tenancy.samuelstancl.me/docs">
<link rel="icon" href="/favicon.ico">
<!-- Insert analytics code here -->
<link href="https://fonts.googleapis.com/css?family=Nunito+Sans:300,300i,400,400i,700,700i,800,800i" rel="stylesheet">
<link rel="stylesheet" href="/assets/build/css/main.css?id=0e3d47a146ef55ad0760">
</head>
<body class="flex flex-col justify-between min-h-screen bg-grey-lightest text-grey-darkest leading-normal font-sans">
<header class="flex items-center shadow bg-white border-b h-24 mb-8 py-4" role="banner">
<div class="container flex items-center max-w-4xl mx-auto px-4 lg:px-8">
<div class="flex items-center">
<a href="/" title="stancl/tenancy documentation home" class="inline-flex items-center">
<h1 class="text-lg md:text-2xl text-blue-darkest font-semibold hover:text-blue-dark my-0 pr-4">stancl/tenancy documentation</h1>
</a>
</div>
<div class="flex flex-1 justify-end items-center text-right md:pl-10">
</div>
<div class="flex flex-1 justify-end items-center text-right md:pl-10">
<select id="versionSelect">
<option
value="/https://tenancy.samuelstancl.me/docs1.x"
>
1.x
</option>
<option
value="/https://tenancy.samuelstancl.me/docs2.x"
selected
>
2.x (beta)
</option>
</select>
</div>
</div>
<button class="flex justify-center items-center bg-blue border border-blue h-10 mr-4 px-5 rounded-full lg:hidden focus:outline-none"
onclick="navMenu.toggle()"
>
<svg id="js-nav-menu-show" xmlns="http://www.w3.org/2000/svg"
class="fill-current text-white h-9 w-4" viewBox="0 0 32 32"
>
<path d="M4,10h24c1.104,0,2-0.896,2-2s-0.896-2-2-2H4C2.896,6,2,6.896,2,8S2.896,10,4,10z M28,14H4c-1.104,0-2,0.896-2,2 s0.896,2,2,2h24c1.104,0,2-0.896,2-2S29.104,14,28,14z M28,22H4c-1.104,0-2,0.896-2,2s0.896,2,2,2h24c1.104,0,2-0.896,2-2 S29.104,22,28,22z"/>
</svg>
<svg id="js-nav-menu-hide" xmlns="http://www.w3.org/2000/svg"
class="hidden fill-current text-white h-9 w-4" viewBox="0 0 36 30"
>
<polygon points="32.8,4.4 28.6,0.2 18,10.8 7.4,0.2 3.2,4.4 13.8,15 3.2,25.6 7.4,29.8 18,19.2 28.6,29.8 32.8,25.6 22.2,15 "/>
</svg>
</button>
</header>
<main role="main" class="w-full flex-auto">
<section class="container max-w-4xl mx-auto px-6 md:px-8 py-4">
<div class="flex flex-col lg:flex-row">
<nav id="js-nav-menu" class="nav-menu hidden lg:block">
<ul class="list-reset my-0">
<li class="list-reset pl-4">
<a href="https://tenancy.samuelstancl.me/docs/2.x/getting-started"
class="lvl0 nav-menu__item hover:text-blue"
>
Getting Started
</a>
<ul class="list-reset my-0">
<li class="list-reset pl-4">
<a href="https://tenancy.samuelstancl.me/docs/2.x/installation"
class="lvl1 active font-semibold text-blue nav-menu__item hover:text-blue"
>
Installation
</a>
</li>
<li class="list-reset pl-4">
<a href="https://tenancy.samuelstancl.me/docs/2.x/storage-drivers"
class="lvl1 nav-menu__item hover:text-blue"
>
Storage Drivers
</a>
</li>
<li class="list-reset pl-4">
<a href="https://tenancy.samuelstancl.me/docs/2.x/difference-between-this-package-and-others"
class="lvl1 nav-menu__item hover:text-blue"
>
This Package vs Others
</a>
</li>
<li class="list-reset pl-4">
<a href="https://tenancy.samuelstancl.me/docs/2.x/configuration"
class="lvl1 nav-menu__item hover:text-blue"
>
Configuration
</a>
</li>
</ul>
</li>
<li class="list-reset pl-4">
<a href="https://tenancy.samuelstancl.me/docs/2.x/usage"
class="lvl0 nav-menu__item hover:text-blue"
>
Usage
</a>
<ul class="list-reset my-0">
<li class="list-reset pl-4">
<a href="https://tenancy.samuelstancl.me/docs/2.x/creating-tenants"
class="lvl1 nav-menu__item hover:text-blue"
>
Creating Tenants
</a>
</li>
<li class="list-reset pl-4">
<a href="https://tenancy.samuelstancl.me/docs/2.x/tenant-routes"
class="lvl1 nav-menu__item hover:text-blue"
>
Tenant Routes
</a>
</li>
<li class="list-reset pl-4">
<a href="https://tenancy.samuelstancl.me/docs/2.x/tenant-storage"
class="lvl1 nav-menu__item hover:text-blue"
>
Tenant Storage
</a>
</li>
<li class="list-reset pl-4">
<a href="https://tenancy.samuelstancl.me/docs/2.x/tenant-manager"
class="lvl1 nav-menu__item hover:text-blue"
>
Tenant Manager
</a>
</li>
<li class="list-reset pl-4">
<a href="https://tenancy.samuelstancl.me/docs/2.x/console-commands"
class="lvl1 nav-menu__item hover:text-blue"
>
Console Commands
</a>
</li>
</ul>
</li>
<li class="list-reset pl-4">
<a href="https://tenancy.samuelstancl.me/docs/2.x/digging-deeper"
class="lvl0 nav-menu__item hover:text-blue"
>
Digging Deeper
</a>
<ul class="list-reset my-0">
<li class="list-reset pl-4">
<a href="https://tenancy.samuelstancl.me/docs/2.x/middleware-configuration"
class="lvl1 nav-menu__item hover:text-blue"
>
Middleware Configuration
</a>
</li>
<li class="list-reset pl-4">
<a href="https://tenancy.samuelstancl.me/docs/2.x/custom-database-names"
class="lvl1 nav-menu__item hover:text-blue"
>
Custom Database Names
</a>
</li>
<li class="list-reset pl-4">
<a href="https://tenancy.samuelstancl.me/docs/2.x/filesystem-tenancy"
class="lvl1 nav-menu__item hover:text-blue"
>
Filesystem Tenancy
</a>
</li>
<li class="list-reset pl-4">
<a href="https://tenancy.samuelstancl.me/docs/2.x/jobs-queues"
class="lvl1 nav-menu__item hover:text-blue"
>
Jobs &amp; Queues
</a>
</li>
<li class="list-reset pl-4">
<a href="https://tenancy.samuelstancl.me/docs/2.x/event-system"
class="lvl1 nav-menu__item hover:text-blue"
>
Event System
</a>
</li>
<li class="list-reset pl-4">
<a href="https://tenancy.samuelstancl.me/docs/2.x/tenancy-initialization"
class="lvl1 nav-menu__item hover:text-blue"
>
Tenancy Initialization
</a>
</li>
<li class="list-reset pl-4">
<a href="https://tenancy.samuelstancl.me/docs/2.x/application-testing"
class="lvl1 nav-menu__item hover:text-blue"
>
Application Testing
</a>
</li>
<li class="list-reset pl-4">
<a href="https://tenancy.samuelstancl.me/docs/2.x/writing-storage-drivers"
class="lvl1 nav-menu__item hover:text-blue"
>
Writing Storage Drivers
</a>
</li>
<li class="list-reset pl-4">
<a href="https://tenancy.samuelstancl.me/docs/2.x/development"
class="lvl1 nav-menu__item hover:text-blue"
>
Development
</a>
</li>
</ul>
</li>
<li class="list-reset pl-4">
<a href="https://tenancy.samuelstancl.me/docs/2.x/integrations"
class="lvl0 nav-menu__item hover:text-blue"
>
Integrations
</a>
<ul class="list-reset my-0">
<li class="list-reset pl-4">
<a href="https://tenancy.samuelstancl.me/docs/2.x/telescope"
class="lvl1 nav-menu__item hover:text-blue"
>
Telescope
</a>
</li>
<li class="list-reset pl-4">
<a href="https://tenancy.samuelstancl.me/docs/2.x/horizon"
class="lvl1 nav-menu__item hover:text-blue"
>
Horizon
</a>
</li>
</ul>
</li>
<li class="list-reset pl-4">
<p class="nav-menu__item text-grey-dark">Tips</p>
<ul class="list-reset my-0">
<li class="list-reset pl-4">
<a href="https://tenancy.samuelstancl.me/docs/2.x/https-certificates"
class="lvl1 nav-menu__item hover:text-blue"
>
HTTPS Certificates
</a>
</li>
<li class="list-reset pl-4">
<a href="https://tenancy.samuelstancl.me/docs/2.x/misc-tips"
class="lvl1 nav-menu__item hover:text-blue"
>
Misc
</a>
</li>
</ul>
</li>
<li class="list-reset pl-4">
<a href="https://tenancy.samuelstancl.me/docs/2.x/stay-updated"
class="lvl0 nav-menu__item hover:text-blue"
>
Stay Updated
</a>
</li>
<li class="list-reset pl-4">
<a href="https://tenancy.samuelstancl.me/docs/2.x/https://github.com/stancl/tenancy"
class="lvl0 nav-menu__item hover:text-blue"
>
GitHub
</a>
</li>
</ul>
</nav>
<div class="w-full lg:w-3/5 break-words pb-16 lg:pl-4" v-pre>
<h1 id="getting-started">Installation</h1>
<p>Laravel 5.8 or higher is needed.</p>
<h3>Require the package via composer</h3>
<p>First you need to require the package using composer:</p>
<pre><code>composer require stancl/tenancy</code></pre>
<h3 id="automatic-installation">Automatic installation</h3>
<p>To install the package, simply run</p>
<pre><code>php artisan tenancy:install</code></pre>
<p>You will be asked if you want to store your data in Redis or a relational database. You can read more about this on the <a href="https://tenancy.samuelstancl.me/docs/2.x/storage-drivers">Storage Drivers</a> page.</p>
<p>This will do all the steps listed in the <a href="#manual-installation">Manual installation</a> section for you.</p>
<p>The only thing you have to do now is create a database/Redis connection. Read the <a href="https://tenancy.samuelstancl.me/docs/2.x/storage-drivers">Storage Drivers</a> page for information about that.</p>
<h3 id="manual-installation">Manual installation</h3>
<p>If you prefer installing the package manually, you can do that too. It shouldn't take more than a minute either way.</p>
<h4>Setting up middleware</h4>
<p>Now open <code>app/Http/Kernel.php</code> and make the <code>InitializeTenancy</code> middleware top priority, so that it gets executed before anything else, making sure things like the database switch connections soon enough:</p>
<pre><code class="language-php">protected $middlewarePriority = [
\Stancl\Tenancy\Middleware\InitializeTenancy::class,
// ...
];</code></pre>
<h4>Creating routes</h4>
<p>The package lets you have tenant routes and &quot;exempt&quot; routes. Tenant routes are your application's routes. Exempt routes are routes exempt from tenancy — landing pages, sign up forms, and routes for managing tenants.</p>
<p>Routes in <code>routes/web.php</code> are exempt, whereas routes in <code>routes/tenant.php</code> have the <code>InitializeTenancy</code> middleware automatically applied on them.</p>
<p>So, to create tenant routes, put those routes in a new file called <code>routes/tenant.php</code>.</p>
<h4>Configuration</h4>
<p>Run the following:</p>
<pre><code>php artisan vendor:publish --provider='Stancl\Tenancy\TenancyServiceProvider' --tag=config</code></pre>
<p>This creates a <code>config/tenancy.php</code>. You can use it to configure how the package works.</p>
<p>Configuration is explained in detail on the <a href="https://tenancy.samuelstancl.me/docs/2.x/configuration">Configuration</a> page.</p> </div>
</div>
</section>
</main>
<script src="/assets/build/js/main.js?id=559633482baac87a89b5"></script>
<script>
const navMenu = {
toggle() {
const menu = document.getElementById('js-nav-menu');
menu.classList.toggle('hidden');
menu.classList.toggle('lg:block');
document.getElementById('js-nav-menu-hide').classList.toggle('hidden');
document.getElementById('js-nav-menu-show').classList.toggle('hidden');
},
}
</script>
<footer class="bg-white text-center text-sm mt-12 py-4" role="contentinfo">
<ul class="flex flex-col md:flex-row justify-center list-reset">
<li class="md:mr-2">
&copy; <a href="https://github.com/stancl" title="Samuel Štancl">Samuel Štancl</a> 2019.
</li>
<li>
Built with <a href="http://jigsaw.tighten.co" title="Jigsaw by Tighten">Jigsaw</a>
and <a href="https://tailwindcss.com" title="Tailwind CSS, a utility-first CSS framework">Tailwind CSS</a>.
</li>
</ul>
</footer>
<script>
document.getElementById('versionSelect').addEventListener('change', function () {
window.location = document.getElementById('versionSelect').value;
});
</script>
</body>
</html>