Grav SubDomain (Alt Alanadı) Multisite Kullanımı
Grav CLI Nedir? Nasıl Kullanılır? başlıklı bir önceki yazıda da belirttiğim gibi Grav kurulumu ve temel yapılandırmaların ardından daha detaylı ve işlevsel konulara geçtik.
Bu yazıda da Grav subdirectory (alt klasör) multisite kullanımı ile ilgili yazıya ek olarak Grav subdomain multisite yapılandırmasını nasıl gerçekleştirebileceğimizden bahsedeceğim.
Grav SubDomain Multisite Kullanımı
Öncelikle, bu işlem için DNS yönetimi ve subdomain1 konusunda da temel bilginiz olması gerekiyor. Bu aşamada SubDirectory yazısındaki adımlara benzer bir yol izleyeceğiz. İlk olarak setup.php
dosyamızı oluşturacağız.
cd ~/www/html/grav
nano setup.php
Oluşturduğumuz bu dosyaya aşağıdaki PHP kodunu yapştırıp, dosyası kayıt edebiliriz. Bu işlemin sonucunda http://.ornekwebsitesi.com --> user/sites/.ornekwebsitesi.com
olarak sitemizi yapılandırmış olacağız.
/**
* Multisite setup for subsites accessible via sub-domains.
*
* DO NOT EDIT UNLESS YOU KNOW WHAT YOU ARE DOING!
*/
use Grav\Common\Utils;
// Get subsite name from sub-domain
$environment = isset($_SERVER['HTTP_HOST'])
? $_SERVER['HTTP_HOST']
: (isset($_SERVER['SERVER_NAME']) ? $_SERVER['SERVER_NAME'] : 'localhost');
// Remove port from HTTP_HOST generated $environment
$environment = strtolower(Utils::substrToString($environment, ':'));
$folder = "sites/{$environment}";
if ($environment === 'localhost' || !is_dir(ROOT_DIR . "user/{$folder}")) {
return [];
}
return [
'environment' => $environment,
'streams' => [
'schemes' => [
'user' => [
'type' => 'ReadOnlyStream',
'prefixes' => [
'' => ["user/{$folder}"],
]
]
]
]
];
Bu aşamada subDirectory ile subDomain arasındaki farkı da görmüş olacaksınız. subDirectory sürecinde user/sites/
altında tanımlamayı alanadı olmaksızın gerçekleştirmiştik. Yayın için ayrıca subDomain için ayrıca alan adı tanımlaması ve wildcard yapılandırmasının da yapılması gerekir2.
![cPanel SubDomain İşlemi cPanel SubDomain İşlemi](https://ceaksan.com/tr/grav-multisite-subdomain/cpanel-subdomain_qdlwto.jpg)
Örneğin cPanel üzerinden altsite1
adında bir subdomain oluşturalım. Elbette bu subdomain kullanmak istediğimiz alanadı içerisinde yer almalıdır. Tanımlama aşamasında ornekwebsitesi1
yerine wilcard kullanabilir ve *
ile daha genel bir çözüm üretebilirdik. Çünkü wilcard kullanımı bize ilerleyen süreçte subdomain isimlerinde rahatlıkla değişiklik yapma ve hızlı bir şekilde yeni subdomainler oluşturma imkanı sunacaktır. Bu işlemlerin ardından altsite1.ornekwebsitesi.com
adresini görüntülemek istediğinizde büyük ihtimalle quark
temasının bulunamadığına dair bir hata alacaksınız. Bu nedenle tema ve eklentiler için de setup.php
içerisinde tanımlamalar yapmalıyız.
/**
* Multisite setup for subsites accessible via sub-domains.
*
* DO NOT EDIT UNLESS YOU KNOW WHAT YOU ARE DOING!
*/
use Grav\Common\Utils;
// Get subsite name from sub-domain
$environment = isset($_SERVER['HTTP_HOST'])
? $_SERVER['HTTP_HOST']
: (isset($_SERVER['SERVER_NAME']) ? $_SERVER['SERVER_NAME'] : 'localhost');
// Remove port from HTTP_HOST generated $environment
$environment = strtolower(Utils::substrToString($environment, ':'));
$folder = "sites/{$environment}";
$themes = ["user/themes"];
if (is_dir(__DIR__ . "/user/{$folder}/themes")) {
array_unshift($themes, "user/{$folder}/themes");
}
$plugins = ["user/plugins"];
if (is_dir(__DIR__ . "/user/{$folder}/plugins")) {
array_unshift($themes, "user/{$folder}/plugins");
}
if ($environment === 'localhost' || !is_dir(ROOT_DIR . "user/{$folder}")) {
return [];
}
return [
'environment' => $environment,
'streams' => [
'schemes' => [
'user' => [
'type' => 'ReadOnlyStream',
'prefixes' => [
'' => ["user/{$folder}"],
]
],
'environment' => [
'type' => 'ReadOnlyStream',
'prefixes' => [
'' => ["user/{$folder}"],
]
],
'themes' => [
'type' => 'ReadOnlyStream',
'prefixes' => [
'' => $themes
]
],
'plugins' => [
'type' => 'ReadOnlyStream',
'prefixes' => [
'' => $plugins
]
],
'plugin' => [
'type' => 'ReadOnlyStream',
'prefixes' => [
'' => ['plugins://']
]
]
]
]
];
Artık temalarımızı ve eklentilerimiz oluşturacağımız tüm subdomainler için /var/www/grav/themes
ve /var/www/grav/plugins
olacaktır. Bu sayede bin/gpm install işlemlerinde de bu klasörü kontrol edebiliyor olacağız3. Son bir not olarak, her subdomain için pages
klasörünün ayrı olacağını unutmamalısınız. Bu sayede içerikleri subdomain temelinde oluşturabileceğiz.
Özetle, subdomain kullanımı için user
klasörü içerisinde sites
ve sites
altında da altsite1.ornekwebsitesi.com
adında subdomainimizi tanımlayan klasörümüzü oluşturduk. Bu klasör içerisinde config
ve pages
klasörlerimiz olmalı. pages
bildiğimiz üzere içeriklerimizi yönettiğimiz alanımız. config
ise ilgili subdomain için gerekli yapılandırmaların yer aldığı klasörümüz. Bu aşamaların tamamlanmasının ardından artık subdomainimizi görüntüleyebilir hale gelmiş oluyoruz. Hatta admin eklentisini kullanarak hızlı bir şekilde altsite1.ornekwebsitesi.com/admin/
yolu üzerinden sitenizi yönetmetmeye başlayabilir ve hatta dil yapılarını da düzenleyerek tek bir kurulum üzerinden pek çok dilde site yayını ve e-ticaret işlemleri gerçekleştirebilirsiniz.