Ghost’u Komut Satırından Yapılandırma ve Bakımı
Giriş
Ghost, modern web siteleri ve bloglar için tasarlanmış, açık kaynaklı, hızlı ve esnek bir yayıncılık platformudur. Geleneksel içerik yönetim sistemlerinden (CMS) farklı olarak, Ghost minimalist bir yaklaşımla geliştirilmiştir ve esas olarak yazmaya odaklanmıştır. Markdown desteği, temiz bir arayüz ve performans odaklı yapısıyla dikkat çeker. Ghost’un gücünün önemli bir kısmı, komut satırı arayüzü (CLI) üzerinden kolayca yönetilebilmesinden gelir. Bu makale, Ghost’u bir sunucuda komut satırı aracılığıyla nasıl yapılandıracağınızı, kuracağınızı, güncelleyeceğinizi, sorun gidereceğinizi ve genel olarak nasıl bakımını yapacağınızı ayrıntılı olarak ele alacaktır. Komut satırı becerileri, Ghost kurulumunuz üzerinde tam kontrol sağlamanın ve sorunları hızlıca çözmenin anahtarıdır.
Ön Gereksinimler
Ghost kurulumuna başlamadan önce, sunucunuzda belirli yazılımların kurulu ve yapılandırılmış olması gerekmektedir. Bu ön gereksinimler, Ghost’un sorunsuz çalışması için temel teşkil eder. Genellikle Ubuntu veya Debian tabanlı bir Linux sunucusu tercih edilir, ancak Ghost diğer Linux dağıtımlarında da çalışabilir.
Node.js ve npm
Ghost, Node.js üzerinde çalışan bir uygulamadır. Bu nedenle, sunucunuzda belirli bir Node.js sürümünün kurulu olması şarttır. Ghost’un resmi dokümantasyonu genellikle en son LTS (Uzun Süreli Destek) sürümünü önerir. Node.js ile birlikte gelen npm (Node Package Manager) de paket bağımlılıklarını yönetmek için gereklidir.
Kurulum örneği (Ubuntu için):
curl -sL https://deb.nodesource.com/setup_lts.x | sudo -E bash
sudo apt-get install -y nodejs
MySQL/MariaDB
Ghost, içerik verilerini depolamak için bir veritabanına ihtiyaç duyar. MySQL veya MariaDB, Ghost ile uyumlu popüler veritabanı sistemleridir. Kurulum öncesinde bir veritabanı sunucusu kurmalı ve Ghost için özel bir veritabanı kullanıcısı ile boş bir veritabanı oluşturmalısınız.
Kurulum örneği (Ubuntu için):
sudo apt-get install -y mysql-server
sudo mysql_secure_installation
MySQL içine girip kullanıcı ve veritabanı oluşturma
sudo mysql -u root -p
CREATE DATABASE ghost_db;
CREATE USER 'ghost_user'@'localhost' IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON ghost_db.* TO 'ghost_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
Nginx/Apache (Ters Proxy)
Ghost, varsayılan olarak Node.js’in dahili web sunucusunu kullanır. Ancak, üretim ortamlarında performansı ve güvenliği artırmak için Nginx veya Apache gibi bir ters proxy sunucusu kullanılması şiddetle tavsiye edilir. Bu, SSL sonlandırma, önbellekleme ve birden fazla site barındırma gibi özellikleri yönetmenize olanak tanır.
Kurulum örneği (Nginx için, Ubuntu):
sudo apt-get install -y nginx
sudo ufw allow 'Nginx Full'
Sistem Kullanıcısı ve İzinler
Ghost’u root kullanıcısı olarak çalıştırmak güvenlik riski taşır. Bu nedenle, Ghost için özel bir sistem kullanıcısı oluşturulması ve bu kullanıcının gerekli dosya izinlerine sahip olması önerilir.
sudo adduser ghost_user
sudo usermod -aG sudo ghost_user # (isteğe bağlı, kurulum için kolaylık sağlar)
Ghost CLI Kurulumu
Ghost CLI (Command Line Interface), Ghost kurulumlarını yönetmek için geliştirilmiş güçlü bir araçtır. Global olarak kurulması, herhangi bir dizinden Ghost komutlarını çalıştırmanıza olanak tanır.
Ghost CLI’yı Yükleme
npm kullanarak Ghost CLI’yı global olarak yükleyebilirsiniz:
sudo npm install -g ghost-cli@latest
sudo kullanmak, CLI’nın sistem genelinde erişilebilir olmasını sağlar.
Kurulumu Kontrol Etme
Kurulumun başarılı olup olmadığını kontrol etmek için Ghost CLI sürümünü sorgulayabilirsiniz:
ghost -v
Bu komut, kurulu Ghost CLI sürümünü göstermelidir.
Yeni Bir Ghost Kurulumu
Ghost CLI ile yeni bir Ghost kurulumu yapmak oldukça basittir. İster yerel geliştirme ortamı için olsun ister bir üretim sunucusu için, CLI size adım adım rehberlik eder.
Dizin Oluşturma ve Yetkilendirme
Ghost’u kurmak istediğiniz dizini oluşturun ve doğru izinleri ayarlayın. Bu adım, Ghost’un dosya sistemi üzerinde doğru şekilde çalışabilmesi için kritik öneme sahiptir.
sudo mkdir -p /var/www/ghost
sudo chown ghost_user:ghost_user /var/www/ghost
sudo chmod 775 /var/www/ghost
cd /var/www/ghost
ghost_user yerine kendi özel Ghost kullanıcınızın adını yazmalısınız.
Ghost Kurulum Komutu
ghost install komutu, Ghost’u kurmanın anahtarıdır. İki ana modda çalıştırılabilir:
Geliştirme Ortamı İçin Kurulum (Local)
Yerel bilgisayarınızda veya bir sanal makinede geliştirme yapmak için idealdir. Veritabanı olarak SQLite kullanır ve Nginx/SSL yapılandırması yapmaz.
ghost install local
Bu komut, Ghost’u 2368 portunda çalıştırır ve genellikle http://localhost:2368 adresinden erişilebilir olur.
Üretim Ortamı İçin Kurulum
Bir canlı sunucuya Ghost kurarken bu modu kullanırsınız. CLI, size veritabanı, Nginx, SSL ve sistemd başlatma gibi konularda sorular sorarak rehberlik eder.
ghost install
Bu komutu çalıştırdığınızda, CLI size aşağıdaki gibi sorular soracaktır:
* Enter your blog URL: Blogunuzun herkese açık URL’si (örn: https://blog.example.com). SSL kullanmayı planlıyorsanız https ile başlaması önemlidir.
* MySQL hostname: Veritabanı sunucunuzun adresi (genellikle localhost).
* MySQL username: Daha önce oluşturduğunuz Ghost veritabanı kullanıcısının adı (örn: ghost_user).
* MySQL password: Ghost veritabanı kullanıcısının şifresi.
* MySQL database name: Daha önce oluşturduğunuz Ghost veritabanının adı (örn: ghost_db).
* Do you wish to set up Nginx? (Evet/Hayır) Ters proxy olarak Nginx’i yapılandırmak isteyip istemediğiniz. Kesinlikle Evet seçmelisiniz.
* Do you wish to set up SSL with Let’s Encrypt? (Evet/Hayır) Ücretsiz SSL sertifikası kurmak isteyip istemediğiniz. Canlı siteler için Evet seçilmesi tavsiye edilir.
* Enter your email address (for Let’s Encrypt): Let’s Encrypt için e-posta adresiniz.
* Do you wish to set up Systemd? (Evet/Hayır) Ghost’u bir sistem servisi olarak yapılandırmak isteyip istemediğiniz. Evet seçmek, Ghost’un sunucu yeniden başladığında otomatik olarak başlamasını sağlar.
* Do you wish to start Ghost? (Evet/Hayır) Kurulum tamamlandıktan sonra Ghost’u hemen başlatmak isteyip istemediğiniz. Evet seçerek kurulumu tamamlayın.
Bu adımları tamamladıktan sonra Ghost kurulacak, Nginx yapılandırılacak, SSL sertifikası alınacak ve Ghost bir sistem servisi olarak başlatılacaktır. Kurulumun sonunda, yönetici paneline erişmek için bir URL verilecektir (örn: https://blog.example.com/ghost/).
Mevcut Bir Ghost Kurulumunu Yönetme
Ghost CLI, mevcut bir Ghost kurulumunu yönetmek için bir dizi kullanışlı komut sunar. Bu komutlar, günlük bakım işlemlerinden acil durum müdahalelerine kadar geniş bir yelpazede kullanılır.
Ghost Durumunu Kontrol Etme
Bir Ghost kurulumunun mevcut durumunu öğrenmek için ghost status komutunu kullanabilirsiniz. Bu komut, Ghost’un çalışıp çalışmadığını, hangi Node.js sürümünü kullandığını, URL’sini ve diğer önemli bilgileri gösterir.
ghost status
Eğer birden fazla Ghost kurulumunuz varsa, belirli bir dizinde bu komutu çalıştırmak o dizindeki Ghost kurulumunun durumunu gösterecektir.
Ghost’u Başlatma, Durdurma ve Yeniden Başlatma
Ghost servisini yönetmek için temel komutlardır. Özellikle yapılandırma değişikliklerinden sonra veya sorun giderme sırasında sıkça kullanılırlar.
* Başlatma: Ghost’u başlatır.
ghost start
* Durdurma: Ghost’u durdurur.
ghost stop
* Yeniden Başlatma: Ghost’u durdurur ve tekrar başlatır. Çoğu yapılandırma değişikliğinden sonra bu komutu kullanmanız gerekir.
ghost restart
Ghost Sürümünü Güncelleme
Ghost’u güncel tutmak, güvenlik yamaları, yeni özellikler ve performans iyileştirmeleri için kritik öneme sahiptir. Güncelleme işlemine başlamadan önce daima bir yedekleme yapmanız şiddetle tavsiye edilir.
ghost update
Bu komut, Ghost CLI’nın kurulu olduğu Ghost sürümünü kontrol eder ve en son kararlı sürüme günceller. Güncelleme işlemi sırasında, CLI size Ghost’un mevcut sürümünü yedeklemek isteyip istemediğinizi sorabilir. Genellikle Evet seçeneğini tercih etmek güvenliğiniz için önemlidir.
Eğer güncelleme sırasında bir hata oluşursa veya belirli bir sürümü zorlamak isterseniz --force bayrağını kullanabilirsiniz, ancak bu dikkatli kullanılmalıdır:
ghost update --force
Ghost Yapılandırma Dosyalarını Yönetme
Ghost’un yapılandırma ayarları, genellikle config.[env].json formatındaki dosyalarda saklanır (örn: config.production.json veya config.development.json). Bu dosyaları doğrudan düzenleyebilir veya ghost config komutunu kullanabilirsiniz.
ghost config Komutu ile Ayarları Değiştirme
ghost config komutu, yapılandırma dosyasındaki belirli değerleri programatik olarak değiştirmenize olanak tanır.
* URL Değiştirme: Blogunuzun URL’sini değiştirmek için:
ghost config url https://yeni-alanadi.com
ghost restart
* Mail Ayarları: E-posta gönderme ayarlarını yapılandırmak için (örneğin SMTP kullanarak):
ghost config mail.transport SMTP
ghost config mail.options.service 'Mailgun' # veya 'Gmail', 'SES' vb.
ghost config mail.options.auth.user 'postmaster@mg.alanadi.com'
ghost config mail.options.auth.pass 'YOUR_MAILGUN_API_KEY'
ghost restart
* Diğer Ayarlar: Herhangi bir yapılandırma değerini değiştirmek için kullanılabilir. Örneğin, bir SSL sertifikasını manuel olarak yeniledikten sonra Nginx yapılandırmasını yeniden oluşturmak için:
ghost config server.port 2368 # Varsayılan port
ghost setup nginx ssl # Nginx ve SSL'i yeniden yapılandırır
ghost restart
Manuel Düzenleme
Bazı durumlarda, config.production.json gibi yapılandırma dosyalarını doğrudan bir metin düzenleyici ile düzenlemek isteyebilirsiniz. Bu durumda, dosyayı düzenledikten sonra Ghost’u yeniden başlatmayı unutmayın.
sudo nano config.production.json
ghost restart
Veritabanı İşlemleri
Veritabanı, Ghost içeriğinizin kalbidir. Yedekleme ve geri yükleme işlemleri, veri kaybını önlemek için hayati öneme sahiptir.
Yedekleme
Ghost CLI, veritabanınızı kolayca yedeklemenizi sağlar:
ghost backup
Bu komut, Ghost’un çalıştığı dizinde ghost-backup-[timestamp].json formatında bir dosya oluşturur. Bu dosya, tüm içeriğinizi (yazılar, sayfalar, ayarlar vb.) içerir. Ancak, bu sadece Ghost’un dahili verilerini yedekler. Temalar, resimler ve diğer dosyalar için /content dizinini manuel olarak yedeklemeniz gerekir.
Manuel yedekleme örneği:
sudo mysqldump -u ghost_user -p ghost_db > ghost_db_backup.sql
sudo tar -czvf ghost_content_backup.tar.gz /var/www/ghost/content
Geri Yükleme
Ghost CLI’nın doğrudan bir ghost restore komutu bulunmamaktadır. Geri yükleme işlemi genellikle manuel olarak yapılır:
1. Yeni bir Ghost kurulumu yapın veya mevcut kurulumunuzu durdurun.
2. ghost-backup-[timestamp].json dosyasını Ghost admin paneli üzerinden “Labs” bölümünden içe aktarın.
3. /content dizininizi yedekten geri yükleyin (resimler, temalar vb.).
4. Veritabanını SQL dökümünden geri yüklemek için:
mysql -u ghost_user -p ghost_db < ghost_db_backup.sql
ghost restart
Geri yükleme işlemleri dikkatli yapılmalı ve her zaman bir test ortamında denenmelidir.
Temaları Yönetme
Ghost temaları, sitenizin görünümünü belirler. Temaları komut satırı üzerinden yükleyebilir ve yönetebilirsiniz.
Tema Yükleme
Yeni bir tema yüklemek için, tema dosyalarını ZIP formatında indirdikten sonra sunucunuzdaki /var/www/ghost/content/themes dizinine kopyalamanız gerekir.
cd /var/www/ghost/content/themes
sudo wget https://example.com/your-theme.zip
sudo unzip your-theme.zip
sudo rm your-theme.zip
sudo chown -R ghost_user:ghost_user your-theme-folder
Temayı etkinleştirmek için Ghost Admin paneline giderek "Settings" -> "Design" bölümünden yeni temayı seçmeniz gerekecektir. Ghost CLI doğrudan tema etkinleştirmeyi desteklemez, ancak yapılandırma dosyasını manuel olarak düzenleyerek varsayılan temayı değiştirebilirsiniz (bu önerilmez ve admin panel daha güvenlidir).
Hata Ayıklama ve Loglar
Bir sorunla karşılaştığınızda, log dosyaları ve hata ayıklama araçları sorunun kaynağını bulmak için hayati öneme sahiptir.
Ghost Logları
Ghost'un kendi loglarını görüntülemek için ghost log komutunu kullanabilirsiniz:
ghost log
Bu komut, Ghost'un hata ve erişim loglarını gösterir. --tail bayrağı ile gerçek zamanlı olarak logları takip edebilirsiniz:
ghost log --tail
Sistem Servisi Logları
Eğer Ghost'u Systemd ile bir servis olarak yapılandırdıysanız, Systemd'nin kendi loglarını da kontrol edebilirsiniz:
sudo systemctl status ghost_[your_blog_url] # Örn: ghost_blog-example-com
sudo journalctl -u ghost_[your_blog_url] -f
Nginx/Apache Logları
Ters proxy olarak Nginx veya Apache kullanıyorsanız, bu sunucuların logları da bağlantı veya SSL sorunlarını tespit etmek için önemlidir.
* Nginx logları: /var/log/nginx/access.log ve /var/log/nginx/error.log
* Apache logları: /var/log/apache2/access.log ve /var/log/apache2/error.log
Gelişmiş Komut Satırı Kullanımı
Ghost CLI'nın sunduğu bazı gelişmiş özellikler, daha karmaşık senaryolarda size yardımcı olabilir.
Çoklu Ghost Kurulumları
Bir sunucuda birden fazla Ghost sitesi barındırmak mümkündür. Her Ghost kurulumu kendi dizininde ayrı ayrı yönetilir.
Örneğin, /var/www/blog1 ve /var/www/blog2 dizinlerinde iki farklı Ghost kurulumunuz varsa:
cd /var/www/blog1
ghost status # Sadece blog1'in durumunu gösterir
cd /var/www/blog2
ghost start # Sadece blog2'yi başlatır
Her kurulum için Nginx ve SSL yapılandırmalarının doğru şekilde ayarlandığından emin olmanız gerekir. ghost install komutu, her kurulum için ayrı ayrı Nginx sanal host dosyaları oluşturacaktır.
SSL Yönetimi
Ghost CLI, ghost install sırasında Let's Encrypt ile SSL sertifikalarını otomatik olarak yapılandırır. Bu sertifikalar genellikle 90 günde bir yenilenir ve Ghost CLI bunu otomatik olarak halleder. Ancak, bazen manuel müdahale gerekebilir.
* SSL'i Yeniden Yapılandırma: Eğer SSL sertifikası sorunları yaşıyorsanız veya Nginx yapılandırmasını manuel olarak değiştirdiyseniz, SSL'i yeniden yapılandırmak için ghost setup nginx ssl komutunu kullanabilirsiniz. Bu komut, Let's Encrypt sertifikasını yenilemeye çalışır ve Nginx yapılandırmasını günceller.
ghost setup nginx ssl
ghost restart
Dosya İzinleri ve Sahiplikleri
Yanlış dosya izinleri ve sahiplikleri, Ghost'un çalışmasını engelleyebilir veya güvenlik açıkları oluşturabilir. Ghost CLI, kurulum sırasında doğru izinleri ayarlamaya çalışsa da, manuel olarak düzeltmeniz gerekebilir.
* Dizin Sahipliği: Ghost kurulum dizininin ve alt dizinlerinin Ghost kullanıcısına ait olduğundan emin olun:
sudo chown -R ghost_user:ghost_user /var/www/ghost
* Dosya İzinleri: Genellikle dizinler için 775 veya 755, dosyalar için 664 veya 644 izinleri yeterlidir. 777 gibi geniş izinlerden kaçının.
sudo find /var/www/ghost -type d -exec chmod 775 {} \;
sudo find /var/www/ghost -type f -exec chmod 664 {} \;
Bu komutları uyguladıktan sonra Ghost'u yeniden başlatmanız gerekebilir.
Performans ve Güvenlik İpuçları
Ghost kurulumunuzu komut satırından yönetirken, performans ve güvenliği artıracak bazı önemli noktalara dikkat etmek önemlidir.
Güncel Tutma
Hem Ghost hem de Node.js, npm, MySQL gibi temel bağımlılıklarınızı düzenli olarak güncellemek, güvenlik açıklarını kapatır ve performansı artırır. ghost update ve sudo apt update && sudo apt upgrade komutlarını düzenli olarak çalıştırın.
Güçlü Şifreler
MySQL kullanıcısı, sunucu SSH şifresi ve Ghost yönetici paneli şifresi gibi tüm şifrelerinizin güçlü ve benzersiz olduğundan emin olun.
Firewall (UFW)
Sunucunuzda bir güvenlik duvarı (örn: UFW - Uncomplicated Firewall) etkinleştirin ve yalnızca gerekli portlara (SSH için 22, HTTP için 80, HTTPS için 443) izin verin.
sudo ufw enable
sudo ufw allow ssh
sudo ufw allow http
sudo ufw allow https
Ters Proxy Yapılandırması
Nginx veya Apache gibi bir ters proxy kullanmak, doğrudan Node.js sunucusuna erişimi engelleyerek ek bir güvenlik katmanı sağlar. Ayrıca önbellekleme ve sıkıştırma gibi özelliklerle performansı artırır.
CDN Kullanımı (Cloudflare)
Bir İçerik Dağıtım Ağı (CDN) kullanmak, sitenizin hızını artırır ve DDoS saldırılarına karşı koruma sağlar. Cloudflare gibi hizmetler, ücretsiz planlarında bile önemli faydalar sunar.
Sık Karşılaşılan Sorunlar ve Çözümleri
Komut satırından Ghost yönetirken karşılaşabileceğiniz bazı yaygın sorunlar ve bunların çözümleri.
ghost install Hataları
* İzin Sorunları: En yaygın hatalardan biridir. sudo chown -R ghost_user:ghost_user /var/www/ghost ve sudo chmod 775 /var/www/ghost komutlarıyla izinleri kontrol edin.
* Veritabanı Bağlantı Sorunları: MySQL/MariaDB servisinin çalışır durumda olduğundan, kullanıcı adının, şifrenin ve veritabanı adının doğru olduğundan emin olun. mysql -u ghost_user -p ile manuel olarak bağlanmayı deneyin.
* Node.js Sürümü: Ghost'un gerektirdiği Node.js sürümünün kurulu olduğundan emin olun.
* Port Çakışmaları: Ghost'un kullanmaya çalıştığı portun (varsayılan 2368) başka bir uygulama tarafından kullanılmadığından emin olun.
Ghost'un Başlamaması
* ghost status komutuyla durumu kontrol edin.
* ghost log komutuyla logları inceleyin.
* sudo systemctl status ghost_[instance_name] ile Systemd loglarını kontrol edin.
* Yapılandırma dosyasında (config.production.json) bir hata olup olmadığını kontrol edin.
* ghost doctor komutu, yaygın sorunları tespit etmenize yardımcı olabilir.
SSL Sorunları
* Let's Encrypt sertifikasının süresi dolmuş olabilir. ghost setup nginx ssl komutuyla yenilemeyi deneyin.
* Nginx yapılandırmasının doğru olduğundan emin olun. /etc/nginx/sites-available/your-domain.conf dosyasını kontrol edin.
* Firewall'un 443 portuna izin verdiğinden emin olun (sudo ufw status).
Yüksek CPU/RAM Kullanımı
* top veya htop komutlarıyla hangi işlemlerin kaynak tükettiğini belirleyin.
* Ghost loglarında olağandışı aktivite olup olmadığını kontrol edin.
* Node.js sürümünüzü güncelleyin.
* Temanızda veya kullanılan entegrasyonlarda performans sorunları olabilir.
Sonuç
Ghost'u komut satırından yapılandırmak ve bakımını yapmak, platformun gücünden tam olarak yararlanmanın en etkili yoludur. Ghost CLI, kurulumdan güncellemeler, yedeklemeler ve sorun gidermeye kadar tüm süreçleri kolaylaştıran kapsamlı bir araç seti sunar. Komut satırı becerileri, Ghost kurulumunuz üzerinde derinlemesine kontrol sağlamanıza, performansı optimize etmenize ve olası sorunları hızlı bir şekilde çözmenize olanak tanır. Bu makalede ele alınan adımlar ve ipuçları, Ghost deneyiminizi daha verimli ve güvenli hale getirmenize yardımcı olacaktır. Unutmayın, düzenli yedekleme ve güncellemeler, herhangi bir web sitesi yönetiminin temel taşlarıdır. Ghost CLI ile bu süreçler artık daha erişilebilir ve yönetilebilir hale gelmiştir.
Resmi kurulum sayfasında mysql öneriliyor. Mariadb ile kurmamda sorun olur mu?
Merhaba, Hayır, MariaDB ile kurmanda bir sorun olmaz.