Ghost oldukça hızlı ve açık kaynak kodlu bir içerik yönetim sistemidir. Ghost tamamen ölçeklendirilebilir, ayrıca birçok temada mevcuttur.
Yakın zamanda da ben Jekyll den direk olarak Ghost CMS geçiş kararı aldım. ve bende centos üzerinde kullanmaktayım.
Öncelikle Ghostu kurmamız gerekiyor. Ghostun önerilen kurulum yeri olan /var/www/ghost
dizinine yerleştireceğiz. Ama bundan hemen önce sistemimizin güncel olduğundan ve aşağıdaki paketlerin kurulu olduğundan emin oluyoruz. Aksi durumda yüklüyoruz.
yum update -y
yum install epel-release -y
yum update -y
yum install nano nginx -y
Bu aşamada kuracaklarımız var şimdi direk olarak aşağıdaki komutları geçiyoruz.
yum install nodejs
ardından gerekli olan yolu ve önerilen alana gerekli dosyaları kurma zamanı bunun için internet üzerindeki tüm makalelerde geçenleri yapmamıza gerek yok zaten eski sürümde kaldı tüm bunlar bunun dışında yenilerinde mümkünse CLI yükleme aracını kullanacağız.
Dizini oluşturuyoruz.
mkdir -p /var/www/ghost
belirttiğimiz /var/www/ghost
yoluna geçiş yapıyoruz. Ghost, bu işlemler tamamlandıktan sonra işlem biter, ancak Ghost’u başlatmak için kurmamız gerekir.
Dizine geçiş yapıyoruz.
cd /var/www/ghost
Aşağıdaki paketi sisteme dahil ediyoruz.
npm i -g ghost-cli
Normal şartlar altında config.example.js
dosyasını config.js
yaparak devam ediyorsunuz. Ancak biz en son stable sürümü çekeceğimiz için onda bu şekilde bir ayarlama yapmamız söz konusu değil
Yeni sürümde herşey json üzerinden yürüyor. ama biz kurulumu local olarak yapacağız bunun içinde aşağıdaki komut ile kurulumu tamamlayacağız
ghost install local
Kurulum tamamlandıktan sonra sisteminiz hazır URL bilgileriniz şunlar diyeyek. Ancak biz direk olarak haliyle oraya sunucuda olduğumuz için ulaşamayacağız.
Ulaşmak için ise nginx amcamız aracılığı ile proxy yapmamız gerekecek bunun içinde kurduğumuz nginx ayarlarını /etc/nginx/conf.d
yoluna yeni bir conf
dosyası düzenleyerek yapacağız ve içerisine aşağıdakileri ekleyeceğiz
server {
listen 80;
server_name 192.168.86.131;
location / {
proxy_set_header HOST $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass ;
}
}
Ardından nginx yeniden başlattığımızda Ghost CMS ekranını göreceksiniz.
nginx -s reload
Bunlar ile uğraşmak istemezseniz şu şekilde birde betiğimiz bulunuyor.
#!/bin/bash
#
#
# v1.0 Frederik Niedernolte
# https://www.peleke.de/ghost-1-0-aktualisierung-bei-uberspace/
# First Release
#
#
#
# v1.1 Mertcan GOKGOZ
# https://mertcangokgoz.com/centos-7-uzerine-ghost-cms-kurulumu/
# Translate English
#
#
set -e
GHOSTDIR=~/node_apps/ghost
PACKAGE_VERSION_OLD=$(sed -nE 's/^s*"version": "(.*?)",$/1/p' $GHOSTDIR/package.json)
CURRENT_GHOST=$(curl -s https://api.github.com/repos/TryGhost/Ghost/releases | grep tag_name | head -n 1 | cut -d '"' -f 4)
CURRENT_GHOST_DOWNLOAD=$(curl -s https://api.github.com/repos/TryGhost/Ghost/releases/latest | grep browser_download_url | cut -d '"' -f 4)
CURRENT_GHOST_FILE=$(echo $CURRENT_GHOST_DOWNLOAD | sed 's:.*/::')
echo "Installed version of Ghost: $PACKAGE_VERSION_OLD"
echo " Available version of Ghost: $CURRENT_GHOST"
cd $GHOSTDIR
if [[ $CURRENT_GHOST != $PACKAGE_VERSION_OLD ]]
then
read -r -p "Is Ghost to be updated from $PACKAGE_VERSION_OLD to $CURRENT_GHOST version [Y/n] " response
if [[ $response =~ ^([Yy][aA]|[yY]|"")$ ]]
then
read -r -p "Do you want to back up the previous instance? [Y/n] " response
if [[ $response =~ ^([Yy][aA]|[yY]|"")$ ]]
then
echo "Backup of previous version under $GHOSTDIR-$(date +%F@%T) is created ..."
cp -r $GHOSTDIR $GHOSTDIR-$(date +%F@%T)
fi
echo "Ghost $CURRENT_GHOST is downloaded and unpacked ..."
curl -LOk $CURRENT_GHOST_DOWNLOAD
unzip $GHOSTDIR/$CURRENT_GHOST_FILE -d ghost-latest
rm $GHOSTDIR/$CURRENT_GHOST_FILE
rm -rf $GHOSTDIR/core
rm -rf $GHOSTDIR/content/themes/casper
rm $GHOSTDIR/index.js
rm $GHOSTDIR/*.md
rsync -a --remove-source-files $GHOSTDIR/ghost-latest/* $GHOSTDIR
rm -rf $GHOSTDIR/ghost-latest
echo "The database of Ghost is migrated to the new version ..."
NODE_ENV=production knex-migrator migrate
read -r -p "Clear cache before Ghost update? [y/N] " response
if [[ $response =~ ^([Yy][aA]|[yY])$ ]]
then
echo "Cache is cleared and Ghost is then updated"
rm -rf $GHOSTDIR/node_modules && npm cache clear && npm install --python="/usr/local/bin/python2.7" --production
else
echo "Ghost is now updated ..."
npm install --python="/usr/local/bin/python2.7" --production
fi
svc -du ~/service/ghost
PACKAGE_VERSION=$(sed -nE 's/^s*"version": "(.*?)",$/1/p' $GHOSTDIR/package.json)
echo "Ghost has been updated from version $PACKAGE_VERSION_OLD to version $PACKAGE_VERSION and is restarted. This may take a few seconds ..."
echo "Check the logfile for errors: 'tail -F ~ /service/ghost/log/main/current'"
else
echo "-> Ghost is not updated"
fi
else
echo "-> Ghost is already up to date, no update is necessary"
fi