Ubuntu 16.04 Üzerine Ghost Kurulumu ve Yapılandırması
Giriş: Ghost Nedir ve Neden Tercih Edilmelidir?
Dijital içerik yayıncılığının hızla büyüdüğü günümüzde, blog platformları ve içerik yönetim sistemleri (CMS) arasında birçok seçenek bulunmaktadır. WordPress, Joomla, Drupal gibi köklü sistemlerin yanı sıra, son yıllarda sade ve performansa odaklanmış yeni nesil platformlar da popülerlik kazanmıştır. Bu platformlardan biri de Ghost’tur. Ghost, özellikle yazarlar ve yayıncılar için modern, hızlı ve minimalist bir blog deneyimi sunmak amacıyla tasarlanmış açık kaynaklı bir CMS’tir. Node.js üzerinde inşa edilmiş olması, ona eşsiz bir hız ve esneklik kazandırır.
Ghost’un temel felsefesi, karmaşıklıktan arınmış, sadece yazmaya odaklanmış bir ortam sağlamaktır. WordPress gibi çok yönlü bir platformun sunduğu eklenti ve tema çeşitliliğine kıyasla daha sınırlı olsa da, bu sadelik Ghost’un en büyük avantajlarından biridir. Markdown tabanlı editörü sayesinde içerik oluşturma süreci oldukça akıcı ve keyifli hale gelir. SEO dostu yapısı, hızlı yükleme süreleri ve modern API’leri ile geliştiricilere de geniş imkanlar sunar. Kısacası, eğer amacınız hızlı, güvenli ve sade bir blog veya dergi sitesi kurmaksa, Ghost mükemmel bir seçim olabilir.
Bu makalede, Ubuntu 16.04 işletim sistemi yüklü bir sunucu üzerine Ghost’un nasıl kurulacağını ve temel yapılandırmalarının nasıl yapılacağını adım adım ele alacağız. Ubuntu 16.04, uzun süreli destek (LTS) sunan, kararlı ve yaygın olarak kullanılan bir sunucu işletim sistemidir. Bu kombinasyon, güvenilir ve yüksek performanslı bir blog altyapısı oluşturmak için idealdir.
Ön Gereksinimler
Ghost kurulumuna başlamadan önce, bazı temel gereksinimleri karşılamış olmanız gerekmektedir. Bu adımlar, sorunsuz bir kurulum süreci için kritik öneme sahiptir.
Ubuntu 16.04 Sunucusu
En az 1 GB RAM’e sahip, temiz bir Ubuntu 16.04 (Xenial Xerus) sunucusuna ihtiyacınız olacaktır. Bulut sağlayıcılarından (AWS, DigitalOcean, Vultr vb.) veya kendi fiziksel sunucunuzdan temin edebilirsiniz.
SSH Erişimi
Sunucunuza SSH (Secure Shell) üzerinden erişim sağlamanız gerekmektedir. Genellikle bir terminal (Linux/macOS) veya PuTTY (Windows) gibi bir SSH istemcisi kullanılır.
Sudo Yetkilerine Sahip Kullanıcı
Kurulum adımlarının çoğu yönetici ayrıcalıkları gerektireceğinden, sudo komutunu kullanma yetkisine sahip bir kullanıcı hesabınız olmalıdır. Güvenlik nedeniyle root kullanıcısı yerine sudo yetkilerine sahip standart bir kullanıcı kullanılması önerilir.
Alan Adı ve DNS Yapılandırması (İsteğe Bağlı ama Önerilir)
Ghost’u bir alan adı üzerinden yayınlamak isterseniz, alan adınızın DNS kayıtlarının sunucunuzun IP adresine yönlendirilmiş olması gerekir. Özellikle SSL (HTTPS) kullanmak için bu zorunludur. Örneğin, blog.alanadiniz.com gibi bir A kaydının sunucunuzun IP adresine işaret etmesi gerekmektedir.
Adım 1: Sunucuyu Güncelleme
Herhangi bir yazılım kurulumuna başlamadan önce, sunucunuzdaki paket listelerini ve yüklü paketleri güncelleyerek olası uyumluluk sorunlarının önüne geçmek iyi bir uygulamadır.
SSH ile sunucunuza bağlandıktan sonra aşağıdaki komutları çalıştırın:
sudo apt update
sudo apt upgrade -y
sudo apt update komutu, yerel paket indeksini uzak depolardaki en son bilgilerle günceller. sudo apt upgrade -y komutu ise, mevcut tüm yüklü paketleri en yeni sürümlerine yükseltir. -y bayrağı, tüm sorulara otomatik olarak “evet” yanıtı verilmesini sağlar. Bu işlem biraz zaman alabilir.
Adım 2: Node.js Kurulumu
Ghost, Node.js üzerinde çalıştığı için sunucunuzda uyumlu bir Node.js sürümünün yüklü olması gerekmektedir. Ubuntu 16.04’ün varsayılan depolarında genellikle eski Node.js sürümleri bulunur. Ghost’un çoğu sürümü (özellikle Ghost 1.x ve 2.x, Ubuntu 16.04 ile daha uyumlu olanlar), belirli Node.js sürümlerini gerektirir. Bu makale için Node.js 8.x sürümünü kuracağız, çünkü bu sürüm Ghost’un o dönemdeki stabil sürümleriyle en iyi uyumluluğu sağlar ve Ubuntu 16.04 üzerinde sorunsuz çalışır.
Öncelikle, NodeSource deposunu sisteminize eklememiz gerekiyor:
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
Bu komut, NodeSource’un Node.js 8.x sürümü için gerekli kurulum betiğini indirir ve çalıştırır. Bu betik, NodeSource deposunu apt kaynak listenize ekler ve gerekli GPG anahtarlarını içe aktarır.
Depo eklendikten sonra, Node.js paketini kurabiliriz:
sudo apt-get install -y nodejs
Kurulum tamamlandıktan sonra, Node.js ve npm (Node.js paket yöneticisi) sürümlerini kontrol ederek kurulumun başarılı olup olmadığını doğrulayabilirsiniz:
node -v
npm -v
Çıktılar sırasıyla v8.x.x ve 5.x.x (veya benzer bir sürüm) gibi değerler göstermelidir.
Adım 3: Nginx Kurulumu
Nginx, Ghost uygulamanız için ters proxy (reverse proxy) görevi görecek, gelen HTTP isteklerini Ghost’a yönlendirecek ve SSL (HTTPS) sonlandırmasını yönetecek güçlü ve hafif bir web sunucusudur. Ayrıca, performans ve güvenlik açısından da önemli avantajlar sunar.
Nginx’i kurmak için aşağıdaki komutu kullanın:
sudo apt-get install -y nginx
Kurulum tamamlandıktan sonra Nginx servisini başlatın ve sistem başlangıcında otomatik olarak başlamasını sağlayın:
sudo systemctl start nginx
sudo systemctl enable nginx
Eğer sunucunuzda UFW (Uncomplicated Firewall) etkinse, Nginx’in gelen bağlantıları kabul etmesi için güvenlik duvarını yapılandırmanız gerekir. Nginx, UFW ile entegre profillerle gelir:
sudo ufw allow 'Nginx HTTP' # Sadece HTTP (80) trafiğine izin verir
sudo ufw allow 'Nginx HTTPS' # Sadece HTTPS (443) trafiğine izin verir
sudo ufw allow 'Nginx Full' # Hem HTTP hem de HTTPS trafiğine izin verir (Önerilir)
sudo ufw enable # Eğer firewall kapalıysa açın
sudo ufw status # Firewall durumunu kontrol edin
Tarayıcınızda sunucunuzun IP adresini ziyaret ederek Nginx’in doğru şekilde çalıştığını doğrulayabilirsiniz. “Welcome to Nginx!” sayfasını görmelisiniz.
Adım 4: MySQL Kurulumu
Ghost, içeriklerini depolamak için bir veritabanına ihtiyaç duyar. MySQL, Ghost tarafından desteklenen popüler bir veritabanı çözümüdür.
MySQL sunucusunu kurmak için:
sudo apt-get install -y mysql-server
Kurulum sırasında size root kullanıcısı için bir şifre belirlemeniz istenebilir. Güçlü bir şifre seçtiğinizden emin olun.
Kurulum tamamlandıktan sonra, MySQL kurulumunu güvence altına almak için mysql_secure_installation betiğini çalıştırmanız önerilir:
sudo mysql_secure_installation
Bu betik size bir dizi soru soracaktır:
* VALIDATE PASSWORD PLUGIN: Bu eklentiyi kullanmak isteyip istemediğiniz sorulur. Genellikle “y” (evet) seçeneğini seçerek güçlü şifre politikalarını zorunlu kılmak iyi bir uygulamadır.
* Remove anonymous users?: Anonim kullanıcıları kaldırmak güvenlik için önemlidir. “y” seçin.
* Disallow root login remotely?: Root kullanıcısının uzaktan giriş yapmasını engellemek güvenlik için hayati önem taşır. “y” seçin.
* Remove test database and access to it?: Test veritabanını kaldırmak gereksiz kaynakları temizler. “y” seçin.
* Reload privilege tables now?: Değişikliklerin hemen uygulanması için “y” seçin.
Şimdi Ghost için özel bir veritabanı ve kullanıcı oluşturmamız gerekiyor. Bu, güvenlik açısından önemlidir, çünkü Ghost’un root kullanıcısı yerine kendi ayrıcalıklı kullanıcısı ile veritabanına erişmesi sağlanır.
MySQL kabuğuna root kullanıcısı olarak giriş yapın:
sudo mysql -u root -p
Şifrenizi girmeniz istenecektir.
MySQL kabuğunda aşağıdaki komutları sırasıyla çalıştırın. ghost_db yerine istediğiniz veritabanı adını, ghost_user yerine istediğiniz kullanıcı adını ve your_password yerine güçlü bir şifre belirlemeyi unutmayın:
CREATE DATABASE ghost_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'ghost_user'@'localhost' IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON ghost_db.* TO 'ghost_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
* CREATE DATABASE: Ghost için yeni bir veritabanı oluşturur. CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ayarları, modern karakter setlerini ve emoji desteğini sağlar.
* CREATE USER: Sadece localhost üzerinden erişebilecek yeni bir MySQL kullanıcısı oluşturur.
* GRANT ALL PRIVILEGES: Yeni kullanıcıya ghost_db veritabanı üzerinde tüm ayrıcalıkları verir.
* FLUSH PRIVILEGES: Ayrıcalık tablolarını yeniden yükleyerek değişikliklerin hemen etkili olmasını sağlar.
* EXIT: MySQL kabuğundan çıkar.
Adım 5: Ghost CLI Kurulumu
Ghost CLI (Command Line Interface), Ghost blogunuzu kurmak, yönetmek ve güncellemek için kullanılan resmi komut satırı aracıdır. Global olarak kurulması, herhangi bir dizinden ghost komutunu çalıştırmanıza olanak tanır.
Ghost CLI’ı kurmak için aşağıdaki komutu kullanın:
sudo npm install -g ghost-cli@latest
Bu komut, npm (Node.js Paket Yöneticisi) kullanarak Ghost CLI’ın en son sürümünü global olarak yükler.
Kurulumdan sonra, Ghost CLI’ın doğru şekilde kurulup kurulmadığını kontrol etmek için sürümünü sorgulayabilirsiniz:
ghost -v
Çıktı, Ghost CLI’ın yüklü sürümünü göstermelidir.
Adım 6: Ghost Kurulumu İçin Dizin Oluşturma
Ghost uygulamanızı barındıracak bir dizin oluşturmanız ve bu dizine uygun izinleri vermeniz gerekmektedir. Genellikle /var/www/ dizini web uygulamaları için kullanılır.
sudo mkdir -p /var/www/ghost
Bu komut, /var/www/ghost dizinini oluşturur. -p bayrağı, eğer üst dizinler (örneğin /var/www) mevcut değilse onları da oluşturur.
Şimdi bu dizinin sahipliğini, Ghost’u kuracağınız kullanıcıya (genellikle sudo yetkilerine sahip kullanıcınız) vermeniz gerekiyor. Bu, Ghost’un dizine yazma ve okuma izinlerine sahip olmasını sağlar. your_user kısmını kendi kullanıcı adınızla değiştirin:
sudo chown -R your_user:your_user /var/www/ghost
Ardından, dizine gerekli izinleri verin:
sudo chmod 775 /var/www/ghost
Bu izinler, sahibin ve grubun tam okuma/yazma/çalıştırma erişimine sahip olmasını, diğerlerinin ise okuma/çalıştırma erişimine sahip olmasını sağlar.
Şimdi oluşturduğunuz Ghost dizinine geçiş yapın:
cd /var/www/ghost
Tüm Ghost kurulum ve yönetim işlemleri bu dizin altında gerçekleştirilecektir.
Adım 7: Ghost Kurulumu
Artık tüm ön gereksinimler karşılandığına göre, Ghost’u kurmak için Ghost CLI’ı kullanabiliriz. ghost install komutu, Ghost uygulamasını indirir, yapılandırır, Nginx’i ayarlar, SSL’i kurar ve bir systemd servisi olarak başlatır.
Ghost dizininde olduğunuzdan emin olun (/var/www/ghost) ve aşağıdaki komutu çalıştırın:
ghost install
Ghost CLI size kurulumla ilgili bir dizi soru soracaktır:
1. Enter your blog URL: Buraya Ghost blogunuzun erişilebilir olacağı tam URL’yi girin. Örneğin, https://blog.alanadiniz.com. SSL kullanmak istiyorsanız https ile başlaması önemlidir.
2. Enter your MySQL hostname: Genellikle localhost (sunucu aynı makinede olduğu için).
3. Enter your MySQL username: Daha önce oluşturduğunuz MySQL kullanıcı adı (ghost_user).
4. Enter your MySQL password: Daha önce belirlediğiniz MySQL kullanıcı şifresi.
5. Enter your MySQL database name: Daha önce oluşturduğunuz MySQL veritabanı adı (ghost_db).
6. Do you wish to set up Nginx?: Yes (evet) seçeneğini seçin. Ghost CLI sizin için Nginx yapılandırmasını otomatik olarak oluşturacaktır.
7. Do you wish to set up SSL?: Yes (evet) seçeneğini seçin. Bu, Let’s Encrypt kullanarak ücretsiz bir SSL sertifikası alacak ve Nginx’i HTTPS için yapılandıracaktır. Bu adım için alan adınızın DNS kayıtlarının doğru şekilde yapılandırılmış olması gerektiğini unutmayın.
8. Enter your email (for Let’s Encrypt): Let’s Encrypt sertifikaları için bir e-posta adresi girin. Bu adres, sertifika süresi dolduğunda size bildirim göndermek için kullanılır.
9. Do you wish to set up Systemd?: Yes (evet) seçeneğini seçin. Bu, Ghost’u bir systemd servisi olarak yapılandıracak, böylece sunucu yeniden başlatıldığında otomatik olarak başlayacak ve arka planda çalışacaktır.
10. Do you wish to start Ghost?: Yes (evet) seçeneğini seçin. Bu, Ghost uygulamasını başlatacaktır.
Kurulum işlemi biraz zaman alabilir. Ghost CLI, bağımlılıkları yükleyecek, veritabanını başlatacak, Nginx yapılandırmasını oluşturacak, Let’s Encrypt sertifikasını alacak ve Ghost servisini başlatacaktır.
Başarılı bir kurulumdan sonra, terminalde “Ghost was installed successfully!” mesajını görmelisiniz.
Adım 8: Nginx Yapılandırmasını Kontrol Etme ve Uygulama
Ghost CLI, Nginx için bir yapılandırma dosyası oluşturur ve bunu genellikle /etc/nginx/sites-available/your_domain.conf adresine yerleştirir ve /etc/nginx/sites-enabled/ dizinine bir sembolik bağlantı oluşturur.
Nginx yapılandırma dosyasının sözdizimini kontrol etmek için:
sudo nginx -t
Eğer herhangi bir hata yoksa, “syntax is ok” ve “test is successful” mesajlarını görmelisiniz. Her şey yolundaysa, Nginx servisini yeniden yükleyerek yeni yapılandırmayı etkinleştirin:
sudo systemctl reload nginx
Bu, Nginx’in yeni yapılandırma dosyasını okumasını ve uygulamayı başlatmasını sağlar.
Adım 9: Ghost Yöneticisine Erişim
Kurulum tamamlandığında, web tarayıcınızı açın ve blogunuzun URL’sine /ghost ekleyerek yönetici paneline erişin. Örneğin, https://blog.alanadiniz.com/ghost.
İlk kez eriştiğinizde, Ghost sizden bir yönetici hesabı oluşturmanızı isteyecektir. Burada e-posta adresinizi, kullanıcı adınızı ve güçlü bir şifre belirleyerek ilk yönetici hesabınızı oluşturabilirsiniz. Bu hesap, blogunuzu yönetmek, içerik oluşturmak ve ayarları yapılandırmak için kullanılacaktır.
Hesabı oluşturduktan sonra, Ghost yönetici paneline yönlendirileceksiniz. Buradan yazılarınızı yazmaya başlayabilir, temaları değiştirebilir, ayarları yapılandırabilir ve blogunuzu özelleştirebilirsiniz.
Adım 10: Ek Yapılandırmalar ve Önemli Notlar
Ghost kurulumunuz artık çalışır durumda olsa da, daha iyi bir deneyim ve güvenlik için bazı ek yapılandırmalar ve önemli noktalar bulunmaktadır.
Ghost Sürüm Yükseltme
Ghost CLI, Ghost uygulamanızı kolayca güncellemeyi sağlar. Yeni bir Ghost sürümü çıktığında, Ghost dizininize gidip aşağıdaki komutu çalıştırarak blogunuzu güncelleyebilirsiniz:
cd /var/www/ghost
ghost update
Bu komut, Ghost’un en son kararlı sürümünü indirir, gerekli veritabanı geçişlerini yapar ve uygulamayı yeniden başlatır.
Yedekleme Stratejileri
Verilerinizin güvenliği için düzenli yedeklemeler yapmak hayati önem taşır. Ghost için iki ana yedekleme türü vardır:
1. Veritabanı Yedeklemesi: MySQL veritabanınızı düzenli olarak yedeklemelisiniz. mysqldump aracı bunun için kullanılabilir:
mysqldump -u ghost_user -p ghost_db > ghost_backup_$(date +%F).sql
Bu komut, ghost_db veritabanını bir SQL dosyasına yedekler.
2. İçerik Dizinleri Yedeklemesi: Ghost’un yüklediği temalar, resimler ve diğer statik dosyalar /var/www/ghost/content/ dizininde bulunur. Bu dizini de düzenli olarak yedeklemelisiniz.
sudo tar -czvf ghost_content_backup_$(date +%F).tar.gz /var/www/ghost/content
Yedekleri güvenli bir yere (uzak depolama, bulut depolama vb.) taşımayı unutmayın.
Güvenlik İpuçları
* Güvenlik Duvarı (Firewall): UFW gibi bir güvenlik duvarı kullanarak sadece gerekli portlara (SSH, HTTP, HTTPS) erişime izin verin.
* Güçlü Şifreler: Tüm hesaplarınız (sunucu, MySQL, Ghost yönetici) için güçlü ve benzersiz şifreler kullanın.
* Düzenli Güncellemeler: İşletim sisteminizi, Node.js’i, Nginx’i ve Ghost’u düzenli olarak güncelleyerek bilinen güvenlik açıklarını kapatın.
* SSH Anahtarları: Şifre yerine SSH anahtarları kullanarak sunucunuza daha güvenli bir şekilde bağlanın.
* Root Olmayan Kullanıcı: Root kullanıcısı yerine sudo yetkilerine sahip standart bir kullanıcı ile çalışın.
Temalar ve Entegrasyonlar
Ghost, varsayılan olarak “Casper” temasıyla gelir. Ancak, Ghost Marketplace’ten veya üçüncü taraf sitelerden birçok ücretsiz ve ücretli tema bulabilirsiniz. Yeni bir tema yüklemek için temayı indirip /var/www/ghost/content/themes/ dizinine taşımanız ve ardından yönetici panelinden etkinleştirmeniz yeterlidir.
Ghost, çeşitli entegrasyonlar için de API’ler sunar. Mailchimp, Zapier, Google Analytics gibi hizmetlerle kolayca entegre olabilir. Bu entegrasyonları yönetici panelindeki “Integrations” bölümünden yapılandırabilirsiniz.
Performans Optimizasyonu
Ghost zaten hızlı bir platform olmasına rağmen, ek performans optimizasyonları düşünebilirsiniz:
* CDN (Content Delivery Network): Resimler ve statik dosyalar için bir CDN kullanmak, global olarak daha hızlı yükleme süreleri sağlayabilir.
* Resim Optimizasyonu: Blogunuza yüklediğiniz resimleri optimize edin (boyut, format).
* Önbellekleme: Nginx’in önbellekleme özelliklerini daha detaylı yapılandırarak sunucu yükünü azaltabilirsiniz.
Hata Ayıklama ve Loglar
Eğer Ghost uygulamanızda bir sorunla karşılaşırsanız, Ghost CLI’ın ghost doctor komutunu kullanarak yaygın sorunları kontrol edebilirsiniz:
cd /var/www/ghost
ghost doctor
Ghost’un log dosyaları genellikle /var/www/ghost/content/logs/ dizininde bulunur. Bu log dosyalarını inceleyerek hataların nedenini anlayabilirsiniz. Nginx logları ise /var/log/nginx/ dizininde bulunur.
Sonuç
Bu makalede, Ubuntu 16.04 sunucusu üzerine Ghost blog platformunun adım adım nasıl kurulacağını ve yapılandırılacağını detaylı bir şekilde ele aldık. Node.js, Nginx ve MySQL gibi temel bileşenlerin kurulumundan, Ghost CLI kullanarak uygulamanın kendisinin yapılandırılmasına kadar her adımı kapsadık. Ayrıca, kurulum sonrası yapılması gereken önemli ayarlamalara, güvenlik ipuçlarına ve yedekleme stratejilerine de değindik.
Ghost, sade, hızlı ve yazmaya odaklı yapısıyla modern blogcular ve yayıncılar için mükemmel bir seçenektir. Ubuntu 16.04’ün kararlılığı ile birleştiğinde, Ghost blogunuz için sağlam ve güvenilir bir temel oluşturur. Artık kendi Ghost blogunuzu başarıyla kurmuş ve yapılandırmış olmalısınız. Yönetici paneline giriş yaparak ilk yazılarınızı yazmaya başlayabilir, temanızı özelleştirebilir ve içeriklerinizi dünya ile paylaşabilirsiniz. Unutmayın, düzenli bakım, güncellemeler ve yedeklemeler, blogunuzun uzun ömürlü ve güvenli olmasını sağlayacaktır. Ghost’un sunduğu esneklik ve performansla, içerik yayıncılığı yolculuğunuzda başarılı olmanız dileğiyle!
