Cumartesi, Aralık 21, 2024

Centos 7 Üzerine Ghost CMS Kurulumu

ghost cms yüksek çözünürlüklü logo, ghost cms logo, ghost cms svg, ghost migrate

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