Ghost Nedir? Nasıl Kurulur?
Hobi bloglarından çevrimiçi en büyük haber sitelerine kadar internetin %31 kadarı WordPress kullanıyor.
Yakın zamanda yayınlanan Ghost v.4 ile (Mart, 2021) yeni pek çok özellik ve değişiklik kullanıma sunuldu. Bu değişikliklerle ilgili ayrı bir yazı yayınlayacağım1.
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ı yazmak2 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. WordPress3 sayfasından uygulamaların odaklandıkları özellikleri karşılaştırmalar üzerinden görebilirsiniz.
Ghost İçerik Yönetim Sistemi
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 projesi4 olarak adını duyurmuştu5. 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 (işletim sistemi çekirdeği) ve Android işletim sistemleri üzerinen kolaylıkla yönetilebilmekte6. 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 Kurulum İşlemleri
Kurulum ve diğer işlemler için Docs7 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 edebilirsiniz8 9)
- 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 birkaç 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.
Hazır kurulum dışında ben kurulum işlemini adım adım LEMP ortamında gerçekleştireceğim. Bu kurulum sürecine dair Install & Setup10 sayfasındaki farklı yönergeleri de inceleyebilirsiniz. Ek olarak Emrah Emirtekip’in Ghost Kurulumu yazısına da göz atabilirsiniz11. Uygulamanın son sürüm notlarını ve Ghost Projects altındaki geliştirmeleri Developers sayfasından takip edebilirsiniz12. Şu anda 2.1.2 sürümüne sahip release edilmiş son paketi GitHub üzerinden indirebilirsiniz13. 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 LEMP14 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
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 && su -
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 HTTPHTTPS port iznini verelim.
sudo ufw allow 'Nginx Full'
LEMP üzerinde halihazı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üleyebilirsiniz13, 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 var15. NPM üzerinden yayınlanmış son sürümü indirelim.
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ç var14. 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 .conf
sudo nano .conf
Dosyasının içeriğini aşağıdaki şekilde düzenleyebilirsiniz.
server {
listen 80;
listen [::]:80;
server_name ;
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/.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.
- Ghost Releases ↩
- Ghost Customers ↩
- WordPress vs Ghost ↩
- Ghost: Just a Blogging Platform. Kickstarter ↩
- Creating the future of online publishing. About Ghost ↩
- Ghost: Turn your audience into a business ↩
- Ghost Documentation ↩
- ntroduction. Ghost Core Concepts ↩
- Supported Node versions. Frequently Asked Questions. Ghost ↩
- Setup Guide. Ghost ↩
- Emrah Emirtekin. (2016). Ghost Kurulumu ↩
- Ghost Documentation ↩
- Ghost Releases. TryGhost/Ghost. GitHub ↩ ↩
- LEMP. DigitalOcean Community ↩ ↩
- Ghost CLI. Ghost API Reference ↩