Grav SubDirectory Multisite Kullanımı

Grav Nedir? Nasıl Kurulur? ve DigitalOcean Ubuntu Üzerine Nginx Grav Kurulumu ardından ihtiyaç duyulabileceğini düşündüğüm bir diğer konu olarak (WordPressµ‘dan aşia olabilirsiniz) tek Grav kurulumu üzerinden çoklu site yayınından bahsedeceğim.

Grav SubDirectory Multisite Kullanımı

Grav kurulumunuzu yaptığınızı varsayıyor ve buna göre ilerliyorum. Öncelikle belirtmekte fayda var, çoklu site yayınını aşağıdaki şekillerde gerçekleştirebilirsiniz.

  • subdomain: http://.alanadi.com
  • subdirectory: http://alanadi.com/

Ben bu yazıda şimdilik subdirectory yapılandırmasına değineceğim. Grav‘ın çoklu site yayını WordPress’e göre biraz farklı. Subdomain ya da subdirectory olması fark etmeksizin site tanımlandırmaları user/sites/ yolu üzerinden sağlanmakta. Örneğin site1 adında bir altsite oluşturmak istiyoruz, bu durumda user/sites/ altında site1 adında bir klasör oluşturmalı ve bu klasör içeriğine ilgili sitede kullacağımız tema, eklenti ve ayarlarını oluşturmalıyız. İlerledikçe süreç daha da netleşecektir.

Grav kurulumumuzu çoklu site amacıyla yürüteceğimizden haberdar etmeliyiz. Bu amaçla grav kurulumunun olduğu temel dizinde setup.php adında bir dosya oluşturacağız. Örneğin, DigitalOcean Ubuntu Üzerine Nginx Grav Kurulumu başlıklı yazıda biz kurulumlarımızı ~/www/html/grav yolunda gerçekleştirmiştik. Dolayısıyla setup.php dosyamız bu nedenle ~/www/html/grav/setup.php yoluna sahip olacaktır.

SSH üzerinden siteye bağlandığımızı varsayalım (FTP ile de elbette aynı işlemleri gerçekleştirebilirsiniz) ve setup.php dosyamızı oluşturalım.

cd ~/www/html/grav
nano setup.php

Açılacak olan boş metin dosyasına aşağıdaki satırları ekleyip dosyayı kaydedin ve dosyayı kapatın.

<?php
/**
 * Multisite setup for sub-directories or path based
 * URLs for subsites.
 *
 * DO NOT EDIT UNLESS YOU KNOW WHAT YOU ARE DOING!
 */
 
use Grav\Common\Filesystem\Folder;
 
// Get relative path from Grav root.
$path = isset($_SERVER['PATH_INFO'])
   ? $_SERVER['PATH_INFO']
   : Folder::getRelativePath($_SERVER['REQUEST_URI'], ROOT_DIR);
 
// Extract name of subsite from path
$name = Folder::shift($path);
$folder = "sites/{$name}";
$prefix = "/{$name}";
 
if (!$name || !is_dir(ROOT_DIR . "user/{$folder}")) {
    return [];
}
 
// Prefix all pages with the name of the subsite
$container['pages']->base($prefix);
 
return [
    'environment' => $name,
    'streams' => [
        'schemes' => [
            'user' => [
               'type' => 'ReadOnlyStream',
               'prefixes' => [
                   '' => ["user/{$folder}"],
               ]
            ]
        ]
    ]
];

setup.php dosyasında bir çok değişiklik yapmak mümkün. Detaylarla ilgili olarak bu sayfayı inceleyebilirsiniz. Ancak, unutmamanız gereken bir konu var, setup.php dosyası her sayfa erişiminde çağırılacaktır. Bu nedenle yapacağınız düzenlemelere bağlı olarak sistem yavaşlığı yaşayabilirsiniz.

Evet, tüm ayarlamalarımız bu kadar. Şimdi site kurulumlarımıza geçebiliriz. İlk aşamada sitelerimizin yer alacağı sites klasörünü ve ardından içeriğinde ilgili tema, eklenti ve ayar klasörleri de barındıran subdirectory olarak erişilecek 2 alt site (site1 ve site2) oluşturalım.

mkdir -p ~/www/html/grav/user/sites/{site1/{themes,plugins,pages,config},site2/{themes,plugins,config}}

Son adımda da ~/www/html/grav/user altındaki config, themes ve plugins içeriklerini oluşturduğumuz site1 ve site2 klasörleriyle eşitleyelim. Kaç site kuracaksınanız ona göre aşağıdaki komutu düzenleyerek devam edebilirsiniz.

cp -r ~/www/html/grav/user/{config,pages,themes,plugins}/ ~/www/html/grav/user/sites/site1/
cp -r ~/www/html/grav/user/{config,pages,themes,plugins}/ ~/www/html/grav/user/sites/site2/

Grav admin

Yukarıdaki işlemlerin ardından bir üst paragrafta belirttiğim gibi admin paketi de yüklenmiş (temel kurulumda mevcut olduğu için kopyalama işleminde klasör içeriği olduğu gibi almakta) olacaktır. Bu nedenle site1, site2 vb. girişlerde ilk olarak kullanıcı oluşturma ekranını görebilirsiniz. WordPress kurulumunda veritabanı üzerinden kullanıcıların site erişimleri yapılandırılabilmekteyken Grav için siteler için ayrı ayrı erişim ve login süreçleri söz konusu olacaktır.

Grav Hakkındaki Yazılardan Haberdar Olmak İster Misin?

E-posta listesine katılarak yeni yazılardan haberdar olabilirsin.

Leave a Reply

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir