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.
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.

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.