Ghost Nedir? Ubuntu 18.04 Ghost Kurulumu
7 min read

Ghost Nedir? Ubuntu 18.04 Ghost Kurulumu

Ghost Nedir? Ubuntu 18.04 Ghost Kurulumu

Ghost, NodeJS ile geliştirilen bir içerik yönetim sistemi(CMS) yazılımıdır. Günümüz içerik yönetim sistemleri arasındaki en meşhurlarından Wordpress'e alternatif olan Ghost, Wordpress'e göre çok daha performanslı olmasından dolayı bir çok blogger tarafından tercih edilmektedir.

Yeni blog sayfamı oluştururken önüme çıkan Ghost, yaptığım incelemeler ve denemeler sonucunda içerik yönetim sistemleri arasında benim için ilk sıraya yükseldi. Yazımda Ubuntu 18.04 üzerinde Ghost kurulumunu ve Ghost kurulumu sırasında karşılaştığım sorunların çözümlerini anlatacağım.

Eğer kurulum aşamalarıyla uğraşmak istemezseniz, Ghost ekibi tarafından kurulum ve barındırma işlemleri yapılan Ghost Pro paketini veya DigitalOcean, Scaleway gibi bazı firmaların sağladığı tek tıkla kurulum hizmetini satın alabilirsiniz. Eğer hazır paketleri satın almak istemez, kendi cihazınız veya sunucunuza kurulum yapmak isterseniz kurulum aşamalarına adım adım aşağıdan ulaşabilirsiniz.

Ghost Kurulumu

Ubuntu 18.04 üzerinde Ghost kurulumu yapabilmek için Ubuntu üzerinde

  • Nginx (>=1.9.5)
  • NodeJS
  • MySQL (5.5, 5.6 veya 5.7)

kurulu olmalıdır. Sistem özelliği olarak ise minimum 1GB RAM gerekmekte olup Eğer SSL kullanacaksanız alan adınızın DNS kayıtlarını sunucunuza erişebilecek şekilde düzenlemeniz gerekmektedir.

Not: Eğer sunucuya root kullanıcısıyla giriş yaptıysanız komutların başına sudo eklemenize gerek yoktur.

Sunucumuzda SSH ile oturum açarak kurulum işlemlerine başlayalım.

ssh [email protected]_server_ip

Kullanıcı Ekleme

Ghost kurulum işlemlerini root kullanıcısı ile yapamayacağımız ve root kullanıcısının bu şekildeki kurulum işlemlerinde kullanılmasının önerilmemesinden dolayı Ghost kurulum işlemlerini yapacak kullanıcıyı oluşturalım.

# ghostadmin adında bir kullanıcı oluşturalım. 
# Siz istediğiniz isimde bir kullanıcı oluşturabilirsiniz.
sudo adduser ghostadmin

Dikkat: Kullanıcı oluştururken kullanıcı adı olarak ghost kullanmamanız gerekmektedir. Ghost kullanıcı adına sahip bir kullanıcı oluştururmanız Ghost-CLI ile çakışmalara neden olacağı için kurulum işlemlerinde hatalara yol açacaktır.

# ghostadmin kullanıcısına yönetici yetkisi verelim.
sudo usermod -aG sudo ghostadmin

# ghostadmin kullanıcısıyla login olalım.
su - ghostadmin

Paket Güncellemeleri

Ubuntu üzerinde yüklü bulunan paketlerin güncel olduğundan emin olun.

# Güncelleme var mı kontrol et
sudo apt update

# Güncelleme varsa paketleri güncelle
sudo apt upgrade -y

NGINX Kurulumu

Ghost Nginx üzerinde çalışmaktadır ve Ghost yüklemesini SSL kullanarak yapacaksanız Nginx sürümü 1.9.5'ten yüksek olmalıdır.

# Nginx kurulumu
sudo apt install nginx

# Nginx çalıştır.
sudo systemctl start nginx

Ufw güvenlik duvarı aktifse HTTP ve HTTPS bağlantılara izin vermek için aşağıdaki komutu kullanabilirsiniz.

# HTTP ve HTTPS için Nginx'e izin ver
sudo ufw allow 'Nginx Full'

MySQL Kurulumu

Ardından veritabanı yazılımı olan MySQL'i kurmanız gerekir.

# MySQL Kurulumu
sudo apt install mysql-server

# Mysql çalıştır.
sudo systemctl start mysql

MySQL kurulumundan sonra parola oluşturma işlemi için aşağıdaki adımları uygulayınız.

# MySQL parolası oluşturmak için MySQL erişimi
sudo mysql

# 'parola' yazan alana kullanmak istediğiniz parolayı yazarak 
# root kullanıcısının parolasını belirlemiş olursunuz.
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'parola';

# MySQL'den çık
quit

# Tekrar oluşturduğunuz sistem kullanıcısına geçiş yap.
su - ghostadmin

NodeJS Kurulumu

Ghost NodeJS tabanlı bir yazılım olduğu için sisteminize Ghost tarafından desteklenen NodeJS sürümlerinden bir tanesini kurunuz. Uyumlu olmayan bir NodeJS sürümü kurarsanız Ghost düzgün çalışmayabilir.

# NodeJS kaynak deposunu sisteme ekle.
curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash

# NodeJS'i kur
sudo apt install -y nodejs

Ghost-CLI Kurulumu

Ghost-CLI, Ghost'u hızlı ve kolay bir şekilde kurmak ve kullanmak için yapılandırmanıza yardımcı olan bir komut seti aracıdır. Npm ve Yarn paket yöneticileri ile kurulumu yapılabilir.

sudo npm install [email protected] -g

Ghost-CLI komut satırı aracının mevcut komutlarını görmek ve ne işe yaradıklarını öğrenmek isterseniz

# Ghost-CLI komutlarını görüntüle
ghost help

komutunu kullanabilirsiniz.

Dizin Ayarları ve Ghost Kurulumu

Sunucu kurulumları ve Ghost-CLI kurulumu başarıyla tamamlandıysa sıra geldi Ghost kurulumuna. Kurulum sırasında dikkat etmeniz gereken en önemli şey kurulumu oluşturduğunuz kullanıcıyla ve oluşturduğunuz dizinde yapmanız.

# Nginx şweb dizini altına ghost adında klasör oluştur
sudo mkdir -p /var/www/ghost

# Makale başında oluşturduğumuz kullanıcıyı klasörde yetkilendir
sudo chown ghostadmin:ghostadmin /var/www/ghost

# Klasörün yazma izinlerini değiştir
sudo chmod 775 /var/www/ghost

# Klasöre git
cd /var/www/ghost

Yukarıdaki komut dizisinde Ghost kurulacak klasör oluşturuldu ve o klasör için yetkilendirmeler, yazma izinleri tanımlandı. Bu aşamadan sonra aşağıdaki komutla Ghost kurulumunu başlatabilirsiniz.

# Ghost kurulumunu başlat
ghost install

Blog Url: Kurulum yapmak istediğiniz alan adı. SSL kullanacaksanız HTTPS olarak kullanmayacaksanız HTTP olarak giriniz. Örnek olarak https://blog-url.com
MySQL hostname: MySQL sunucunuz. Bu kısıma yukarıda MySQL kurulumunu aynı sunucuya yaptığınız için localhost veya 127.0.0.1 yazarak geçebilirsiniz.
MySQL Username / Password: Yukarıda MySQL kurulumu aşamasındaki kullanıcı bilgileri. root/parola
Ghost database name: Ghost kurulumu sırasında kullanılacak veritabanı için isim.
Set up a ghost MySQL user? (Önerilen): Ghost kurulumuna özel bir MySQL kullanıcısını oluşturup oluşturmak istemediğinizi belirtmelisiniz. Önerim bu kısıma Yes diyerek geçiniz. Root kullanıcısını güvenlik nedeniyle kullanmanız önerilmez.
Set up NGINX? (Önerilen): Ghost kurulumu için Nginx ayarlarını otomatik olarak yapmak isterseniz Yes diyerek geçebilirsiniz bu adımı. Eğer Yes diyerek geçerseniz sisteminizde Nginx üzerinde yapılması gereken ayarları Ghost-CLI yapacaktır.
Set up SSL? (Önerilen): Eğer site adresiniz https ile başlıyorsa bu seçeneği Yes diyerek geçmeniz gerekmektedir. Bu seçenek alan adınız için Let's Encrypt kurulumunu ücretsiz şekilde yapacaktır. Bu aşamada emin değilseniz No diyerek geçip sonradan Ghost-CLI ile SSL ayarlarını yapabilirsiniz.
Enter your email: SSL sertifikası için gereklidir. SSL sertifikanızın yenilenme aşamasında kullanılacaktır.
Set up systemd? (Önerilen): Systemd bir işlem yönetimi uygulamasıdır. Yes diyerek Ghost'u arkaplan uygulaması olarak ayarlamanız gerekmektedir. Kendi işlem yönetim sisteminiz varsa No diyerek sonradan ayarlayabilirsiniz.
Start Ghost?: Yes seçerek oluşturduğunuz sitenizi çalıştırabilirsiniz.

Ghost Kaldırma

Kurduğunuz Ghost tabanlı siteyi kaldırmak veya kurulum sırasında yanlış giden bir şeyler olursa

# Ghost kurulumunu kaldır
ghost uninstall

komutuyla kurulumu kaldırıp, oluşturduğunuz klasörü sildikten sonra tekrar kurulum işlemlerine başlayabilirsiniz.

Karşılaşılan Sorunlar ve Çözümleri

Kurulum sırasında veya kurulum sonrasında karşılaşılan bazı sorunlar ve çözümleri aşağıdaki gibidir.

SSL Problemi (www ve non-www) veya İkinci Adres

Kurulum aşamasında blog url istenildiğinde adres www ile girildiyse www olmayan, www olmayan şekilde girildiyse www olan adres için SSL hatası alacaksınız. Bunun sebebi Ghost-CLI acme.sh kullanarak SSL sertifikası oluştururken sadece tek alan adı için sertifika üretmektedir.

Çözüm olarak ise Ghost-CLI ile ikinci bir domain eklemek ve nginx ile SSL kurulumlarını yapmak. Kurulumlardan sonra ise Nginx ayar dosyalarından gerekli yönlendirmeleri yaptığınızda artık asıl adresiniz www ise www olmayan adres www olan adrese, asıl adresiniz www ile başlamıyorsa www ile başlayan adres www ile başlamayan adrese yönlendirilecektir.

# Ghost kurulu olan dizine girin.
cd /var/www/ghost

# İkinci adresi tanımlayın.
ghost config url https://ikinci-adres.com

# Tanımlanan adres için Nginx ve SSL ayarlarını yapın.
ghost setup nginx ssl

# Tekrar asıl yani ikinci domaini eklemeden önceki adresi girin.
ghost config url https://asil-adres.com

# İkinci adres eklendikten sonra ikinci adrese gelen istekleri ilk yani asıl adrese yönlendirin. /etc/nginx/sites-enabled/ikinci-adres.com.conf içine aşağıdaki satırı ekleyin.
return 301 https://asil-adres.com$request_uri;

# Eklediğiniz satır ve yaptığınız ayarlarda hata olup olmadığını kontrol edin.
sudo nginx -t

# Nginx üzerinde yeni ayarları aktif et
sudo nginx -s reload

Ek olarak Ghost-CLI tarafından kullanılan SSL aracı acme.sh ile problem yaşarsanız certbot adındaki aracı inceleyebilirsiniz.

Sunucu Yeniden Başlayınca Sayfam Çalışmıyor

Eğer Nginx, MySQL ve Ghost-CLI sistem başlangıcında çalışacak şekilde ayarlamadıysanız sunucunuz yeniden başladığında sayfanız yanıt vermeyecektir.

Çözüm olarak Nginx, MySQL ve Ghost'u sistem başlangıcında çalışacak şekilde ayarlayınız. Ghost kurulumu sırasında Set up systemd? sorusuna Yes cevabı verirseniz Ghost için ek ayar yapmanıza gerek kalmayacak sadece Nginx ve MySQL için ayar yapmanız gerekecektir.

# Nginx sistem başlangıcında çalıştır.
sudo systemctl enable nginx

# MySQL sistem başlangıcında çalıştır.
sudo systemctl enable mysql

Ghost-CLI Güncelleme

Ghost-CLI güncel tutmak isterseniz

# NPM Kullanıyorsanız
sudo npm i -g [email protected]

# Yarn Kullanıyorsanız
sudo yarn global add [email protected]

komutlarını kullanabilirsiniz.

Ghost Temaları

Ghost üzerinde varsayılan olarak Casper teması ile gelmektedir. Ek tema arasanız Themeforest üzerinden ücretli, Github üzerinden ücretsiz temalara ulaşabilir veya Ghost resmi sayfası tarafından oluşturulan Marketplace inceleyebilirsiniz.

Ghost resmi blogundan paylaşılan ücretsiz Ghost temalarını incelemek isterseniz buraya tıklayınız.

Ghost kurulumu hakkında merak ettikleriniz veya Ghost-CLI ile ilgili merak ettiklerinize aşağıdaki bağlantılardan ulaşabilirsiniz.

How to install & setup Ghost on Ubuntu 16.04 + 18.04
A full production install guide for how to install the Ghost professional publishing platform on a production server running Ubuntu 16.04 or 18.04.
Ghost-CLI Knowledge Base - Documentation
Advanced information about the Ghost-CLI and how it works!
Ghost: The #1 open source headless Node.js CMS
The world’s most popular modern open source publishing platform. A headless Node.js CMS used by Apple, Sky News, Tinder and thousands more. MIT licensed, with 30k+ stars on Github.