Grav + Dropbox İle Site Yayını

Veritabanı gereksinimi bulunmayan, flat-file uygulamaların kolaylıkla taşınabiliyor ve düşük ortamlarda çalışabiliyor oluşlarına dair bir örnek paylaşmak istiyorum.

AA

Bu örneğimizde flat-file cms’lerden biri olan grav‘a ve farklı cihazlar arasında işleyebilen bir dosya depolama ve senkronizasyon (paylaşımı ve yedeklemeyi de buna dahil edebiliriz) uygulaması olan dropbox‘a yer vereceğim.

Grav + Dropbox İle Web Sitesi Yönetimi

Dropbox gerçekten başarılı dosya paylaşım ve depolama uygulamalarından biri. Farklı cihazlardan kolaylıkla erişim sağlanabiliyor oluşunun yanı sıra Paper gibi ek özelliklerle pratik bir şekilde sayfalar oluşturabilmek ve markdown (md) editör ile de mümkün hale gelmekte. Evet, bu yazıda bir web sayfası yayına almak ve yönetmek için Dropbox tarafından sunulan bu özellikleri kullanacağız. Genelde web sitemize ait dosyaları özel ya da lokal sunucularda barındırır, işlemlerimizi bu alanlarda gerçekleştiririz. MAMP, WAMP gibi sunucu çözümleri de sürecin bir parçası haline gelmektedir. Ancak, farklı alternatif yöntemler de mevcut. macOS X Üzerinde Kurulumsuz PHP Çalıştırmak başlıklı yazımda değindiğim gibi, macOS ortamında PHP ve Apache kurulu ve erişilebilir durumda. Bu sayede özel amaçlarımız doğrultusunda çeşitli denemeler için bu özelliklerden neden faydalanmayalım?

Grav + Dropbox Symlink Oluşturmak

Dropbox hesabınız olduğunu ve bilgisayarınızla telefonunuzun senkronize durumda olduğunu varsayıyorum. Diğer yandan Grav‘a dair de aşinalığınız olmalı. Çünkü yazının sonunda ister dağda olun, ister yolda telefonunuzdaki bir web editörü ile dosya kaybetme ve benzeri endişeleriniz olmadan senkronize edilebilen web içerikleri oluşturacak ve anında içeriklerinizi online hale getirebileceksiniz. Lokal ortamda yayın yapabilmek için ön tanımlı olarak DocumentRoot "/Library/WebServer/Documents" yolunu kullanmaktayız. Bu bilgiyi httpd.conf dosyasından erişebilirsiniz.

cat /Library/WebServer/Documents/httpd.conf | grep ^DocumentRoot

Dolayısıyla normal şartlar altında Grav kurulumumuzu bu klasör içerisine yapmamız gerekir. Ancak bu durumda Dropbox üzerinden dosyalarımızı görüntüleyemez ve farklı cihazlar arasında senkronize edemeyiz. İşte bu nedenle kurulumumuzu Dropbox içerisine gerçekleştirecek ve DocumentRoot ile bir sembolik link (symlink / symbolic link) vasıtasıyla sanal bir ilişki kuracağız. Öncelikle Dropbox klasörümüze geçiş yapalım ve grav indirme işlemimizi başlatalım. Çoğunlukla bu yol /Users/[kullanici-adi]/Dropbox/ şeklinde tanımlanmıştır. İlgil bilgiyi Dropbox uygulaması üzerinden edinebilirsiniz. Benzer durum çoklu Dropbox uygulaması çalıştırdığınız zaman da geçerlidir. Önemli olan hangi uygulama üzerinden internet yayını gerçekleştirmek istediğiniz. Standart Grav paketini kullanabileceğiniz gibi Skeleton seçeneklerini de değerlendirebilirsiniz1. Ben SnapCart yazımda da kullandığım Shop Site paketini indireceğim2.

cd /Users/$USER/Dropbox | wget https://github.com/getgrav/grav-skeleton-shop-site/releases/download/1.0.0/grav-skeleton-shop-site-v1.0.0.zip -P /Users/$USER/Dropbox

Arşivimizin indirilmesinin ardından grav-skeleton-shop-site-v1.0.0.zip içeriğini açalım ve klasör adını (grav-skeleton-shop-site) düzenleyelim.

unzip grav-skeleton-shop-site-v1.0.0.zip && mv grav-skeleton-shop-site grav && rm -R grav-skeleton-shop-site-v1.0.0.zip

Artık ln (linkname) komutunu kullanarak /Library/WebServer/Documents/ ile /Users/$USER/Dropbox arasında bir sembolik bağlantı (symlink) oluşturabiliriz. /Library/WebServer/Documents/ içerisinde işlem yapabilmek için yönetici erişimi kullanmamız gerekmekte.

sudo ln -s /Users/$USER/Dropbox/grav /Library/WebServer/Documents/
sudo apachectl restart

Evet, bu komutun ardından Dropbox içerisindeki grav kurulumumuz http://localhost/grav adresi üzerinden erişilebilir hale gelecektir. Şayet You don't have permission to access /grav/ on this server. hatası alıyorsanız Dropbox > Grav klasörü, alt klasörler ve dosya izinlerini yapılandırmanız gerekir3.

Grav

Ek olarak, mod_rewrite almanız durumunda /Library/WebServer/Documents/httpd.conf dosyasını açıp LoadModule satırlarının başındaki # karakterini silmelisiniz.

#LoadModule rewrite_module libexec/apache2/mod_rewrite.so
#LoadModule php5_module libexec/apache2/libphp5.so

Ardından, satırını şu şekilde güncellemelisiniz.

DocumentRoot "/Library/WebServer/Documents"
 Options Indexes Includes FollowSymLinks SymLinksifOwnerMatch MultiViews
    MultiviewsMatch Any
    Order allow,deny
    Allow from all
    AllowOverride All
    Require all granted

Bu güncellemenin ardından Apache server’ı yeniden başlatmalıyız.

sudo apachectl restart

Yukarıdaki işlemde tüm grav kurulumumuzu Dropbox altında gerçekleştirmiştik. Peki, alternatif bir durum söz konusu olabilir mi? Örneğin, grav kurulumumuzu /Library/WebServer/Documents altında gerçekleştirip sadece user klasörü altındaki pages klasörünü symlink ile bağlayamaz mıyız? Neden olmasın! Kurulum adımlarını bu defa /Library/WebServer/Documents altında gerçekleştiriyor ve ardından sadece pages klasörünü Dropbox’a taşıyoruz.

sudo mv /Library/WebServer/Documents/grav/user/pages /Users/$USER/Dropbox/

Ardından symlink oluşturuyoruz.

sudo ln -s /Users/$USER/Dropbox/pages /Library/WebServer/Documents/grav/user/

Hepsi bu kadar!

Markdown Editör Kullanımı

Tüm işlemlerimizi sorunsuz bir şekilde tamamladık, sitemiz görüntüleniyor. Artık son aşamadayız ve uygun bir editör ile yeni sayfalar oluşturabilir ve düzenleyebiliriz. Yazının başında da belirttiğim gibi, Grav üzerinde markdown (md) dosyaları içerik olarak sunabiliyor ve Dropbox Paper ile bu dosyaları kontrol edebiliyor olmamız ihtiyacımız olan tüm gereksinimleri tamamlıyor. Ancak, harici olarak bir editör kullanmak da isteyebilirsiniz. Bu durumda önerim masaüstü kullanımı için Marky, hem masaüstü hem de Android telefonlar için iA Writer uygulaması olacaktır.