Ghost Nedir? Nasıl Kurulur?

Hobi bloglarından çevrimiçi en büyük haber sitelerine kadar internetin %31 kadarı WordPress kullanıyor. WordPress alternatifleri de elbette pazardan pay alabilecekleri hamleler peşindeler. Grav ile ilgili daha önceden bir yazı yayınlamış ve kurulum sürecinden de bahsetmiştim. Bu yazıda da bir başka blogging alternatifi olan ve NodeJs ile geliştirilen  Ghost (ghost.org) uygulamasından bahsedeceğim. Öncelikle belirtmekte fayda var, WordPress (WPMU, WooCommerce, bbPress vb.) ve Grav (SnipCart vb.) gibi eklentilerle süreç içerisinde farklı kullanım amaçlarına göre geliştirmeler yapmak gibi bir düşünceniz varsa Ghost sizin için doğru bir tercih olmayacaktır. Şayet, amacınız sadece yazı yazmak ise Ghost, gereksiz tüm özelliklerden arındırılmış bir şekilde yazı yazma sürecinize odaklanmanızı sağlayan bir uygulama olarak oldukça işinize yarayabilir. Hatta Ghost vs. WordPress sayfasından uygulamaların odaklandıkları özellikleri karşılaştırmalar üzerinden görebilirsiniz.

Ghost Blog

Ghost Nedir?

Ghost Foundation çatısı altında yayın yapan ve tamamen açık kaynaklı olan Ghost kendisini “Gazeteciliğin geleceği için gururla sunulan, kar amacı gütmeyen bir organizasyon teknolojisi” şeklinde ifade etmekte. Nisan, 2013 tarihinde sunulan Ghost esasında bir Kickstarter projesi olarak adını duyurmuştu. 2013 yılından bu yana 1 milyondan fazla indirme sayısına ulaşan uygulama Handlebars template yapısını kullanmakta. Ghost(Pro) ile tamamen yönetilebilir bir platform olarak Basic, Standard ve Business paketleriyle ücretli kullanım imkanı da sunan uygulama ücretsiz olarak kendi sunucunuza kolaylıkla yapılandırılabilmekte.

Uygulamanın NodeJs ile geliştiriliyor olması düşük özellikli sunucularda yüksek performans sunabilmesini sağlamakta. Bu sayede daha az kaynak tüketerek ve daha hızlı bir blog sitesine sahip olabilmektesiniz. Masaüstü uygulamasına da sahip olan Ghost uygulaması Mac, Windows, Linux ve Android işletim sistemleri üzerinen kolaylıkla yönetilebilmekte. Sadeliğin ön planda olması sebebiyle Markdown Editor sisteminin yanı sıra bloklar halinde içerik üretilmesini ve görüntülenmesini mümkün kılan Ghost Koenig isimli bir diğer editör modeli daha kullanmakta.

Ghost Blog Editörü

Ghost Kurulum İşlemleri

Kurulum ve diğer işlemler için Docs bölümünü başucu kaynağı olarak kullanabilirsiniz.

Kurulum için önerilen özellikler ise şöyle:

  • Ubuntu 16.04 ya da Ubuntu 18.04
  • MySQL
  • NGINX
  • Systemd
  • >=8.9 (Node v8 carbon LTS) (detaylı bilgi için Supported Node Versions sayfasını takip edebilirsiniz.)
  • En az 1GB memory (swap kullanılabilir)

DigitalOcean, Amazon EC2, Google Cloud, Linode, Vultr, Dreamhost gibi barındırma firmaları üzerinden kolaylıkla kurulum işlemleri yürütülebilir. Ben kurulum işlemlerini çoğu zaman olduğu gibi yine DigitalOcean üzerinden gerçekleştireceğim.

Unutmadan, DigitalOcean Droplet olarak (One-click apps) doğrudan Ghost kurulumu sağlamakta. Bu sayede bir kaç dakika içerisinde blog sitenizi yayına açmanız mümkün. Diğer yandan uygulama Softaculous gibi hızlı kurulum sağlayan otomatik yükleyicileri (auto-installer) desteklememekte.

Ghost Blog Yapısı

Hazır kurulum dışında ben kurulum işlemini adım adım LEMP (LEMP Stack: Linux, NGINX, MySQL, & PHP) ortamında gerçekleştireceğim. Bu kurulum sürecine dair Install & Setup sayfasındaki farklı yönergeleri de inceleyebilirsiniz. Ek olarak Emrah Emirtekip’in Ghost Kurulumu yazısına da göz atabilirsiniz. Uygulamanın son sürüm notlarını ve Ghost Projects altındaki geliştirmeleri Developers sayfasından takip edebilirsiniz. Şu anda 2.1.2 sürümüne sahip release edilmiş son paketi Github üzerinden indirebilirsiniz.

Son bir uyarı olarak, sunucu yükleme işlemlerini root kullanıcı üzerinden gerçekleştirememektesiniz. Bu nedenle yeni bir kullanıcı oluşturmak ve yapılandırmaları bu kullanıcı üzerinden yürütmek gerekmekte.

O halde işlemlerimize geçebiliriz.

Öncelikle DigitalOcean üzerinden LEMP imajı üzerinden oluşturduğumuz sunucumuza SSH bağlantısı gerçekleştirelim ve ilk olarak komut satırı vasıtasıyla kullanıcımızı oluşturalım. ifadesini kendi belirlediğiniz bir kullanıcı adı ile değiştirmelisiniz.

adduser <kullanici>

Oluşturduğumuz <kullanici> isimli kullanıcıya super user özelliği verelim ve yeni kullanıcı üzerinden oturum başlatalım.

usermod -aG sudo <kullanici> && su - <kullanici>

Sunucu yapılandırması öncesinde paketlerimizi güncelleyelim ve yeni sürümü olanların sürümlerini yükseltelim.

sudo apt-get update
apt-get upgrade

Firewall üzerinden HTTP/HTTPS port iznini verelim.

sudo ufw allow 'Nginx Full'

LEMP üzerinde hali hazırda NGINX ve MySQL bulunduğu için yükleme işlemi yapmamız gerekmemekte. Bu nedenle doğrudan NodeJs kurulumuna geçiyorum. Uygun NodeJs dağıtımlarını GitHub üzerinden görüntüleyebilirsiniz, ben tavsiye edilen Node.js v8.x üzerinden kurulumu gerçekleştireceğim.

curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash
sudo apt-get install -y nodejs

Bundan sonraki yapılandırma süreci için ghost-cli uygulamasına ihtiyacımız var.

sudo npm i -g ghost-cli@latest

Bu aşamada dikkat etmemiz gereken nokta 2 dizin içerisinde işlemlerimizin gerçekleştirileceği. Bunlardan ilki public dizinimiz (DigitalOcean için /var/www/html/), bir diğeri de ghost core dökümanlarının yer alacağı ghost (DigitalOcean için /var/www/ghost/) dizini. html klasörümüz zaten hazır yapmamız gereken html klasörü içerisindeki gereksiz dosyaları silmek ve ghost klasörünü oluşturmak.

sudo rm /var/www/html/*
sudo mkdir -p /var/www/ghost

.npm, .config dosyalarına ve oluşturduğumuz ghost klasörüne kullanıcı yetkilerini atayalım ve klasöre 755 izni verelim.

sudo chown -R $USER:$USER ~/.npm
sudo chown -R $USER:$USER ~/.config
sudo chown $USER:$USER /var/www/ghost
sudo chmod 775 /var/www/ghost

Şimdiye kadarki süreçte yapılandırma işlemlerini gerçekleştirdik ve artık ghost uygulamasını yüklemeye hazırız. DigitalOcean tarafından oluşturulan MySQL root şifresini de alıp bir kenara not edelim.

cat ~/.digit*

Kurulum işlemi için oluşturduğumuz ghost klasörüne geçiş yapalım ve kurulumu başlatalım.

cd /var/www/ghost
ghost install

Kurulum biraz zaman alacaktır ve dosyaların yapılandırılmasının ardından bizden blog adresi ve MySQL erişim bilgileri istenecektir. Bir kenara kopyaladığımız MySQL root kullanıcısına ait şifreyi girebilirsiniz. Ancak, öncesinde dosya ve klasör izinlerini yeniden düzenleyelim.

find . -type d -exec chmod 0755 {} \;
find . -type f -exec chmod 0644 {} \;

Do you want to start Ghost? sorusuna vereceğiniz Yes cevabıyla, işlemlerin ardından ghost blog uygulamasının yüklenme süreci tamamlanmış olmakta. Blogunuzu güzel günlerde kullanın.

NGINX Yapılandırması

ghost config sürecinde, Do you want to start Ghost? sorusunun ardından blog sayfanızı görüntüleyemiyor olabilirsiniz. Kurulum sürecinde bir hata olmadıysa büyük ihtimalle NGINX yapılandırmasına ihtiyaç var. Hemen, hızlıca bu sorunu da ortadan kaldıralım.

Öncelikle sites-available dizinine geçelim. Klasör içeriğini listelediğinizde sunucunun .conf şeklinde /var/www/ghost/system/files/.conf yoluna linklenmiş bir ayar dosyası göremiyorsanız tespitimizde haklıyız ve bu ayar dosyasını oluşturmalı ve ayar dosyasını düzenlemeliyiz.

cd /etc/nginx/sites-available && ls -li
sudo cp digitalocean <IP-adresi>.conf
sudo nano <IP-adresi>.conf

Dosyasının içeriğini aşağıdaki şekilde düzenleyebilirsiniz.

server {
    listen 80;
    listen [::]:80;
 
    server_name <IP-adresi>;
    root /var/www/ghost/system/nginx-root;
 
    location / {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $http_host;
        proxy_pass http://127.0.0.1:2368;
 
    }
 
    location ~ /.well-known {
        allow all;
    }
 
    client_max_body_size 50m;
}

Dosyayı kaydedip NGINX ayar dosyasını işleyelim ve ardından eğer bir sorun yoksa restart işlemi gerçekleştirelim.

sudo ln -s /etc/nginx/sites-available/<IP-adresi>.conf /etc/nginx/sites-enabled/
sudo /usr/sbin/nginx -t
service nginx restart

Bu işlemlerin ardından artık blog sayfanızın yayına açıldığını görebilirsiniz. MySQL, NGINX yapılandırması, Site URL’i gibi install sürecinde size sorulan soruları ghost config komutuyla güncelleyebilirsiniz. Blogunuzu artık <IP-adresi>/ghost adresi üzerinden yönetebilirsiniz.

Leave a Reply