Çok Dilli Ghost.org Blog Kurulumu

İren Saltalı
4 min readFeb 9, 2018

--

Bu yazıda çok dilli Ghost.org blogunun nasıl kurulacağını ile açıklamaya çalışacağım.

Motivasyon

Kendi bloguma başlamak için uzun zamandır bir blog alt yapısı arıyordum. (Evet, bu blog.) Tabii ki Wordpress, blogger, medium veya jekyll’i düşündüm. Ama seçim için bazı temel kurallarım vardı. Kolay kurulum, minimal ve temiz tasarım, hızlı alt yapı, kendi sunucunda kurulum seçeneği ve çoklu dil desteği. Bu konuda biraz araştırmak yaptıktan sonra ghost.org’u kullanmaya karar veriyordum ancak küçük bir sorun vardı. Ghost tek etki alanında (domain) çok dilli yapıyı desteklemiyordu.

Biraz düşündükten sonra bunun yapılabilir kılacak bir yol buldum. Ve işte o:

Ne kullandım

Sunucu olarak DigitalOcean standart droplet kullanıyorum. (5$/ay, en ucuzu). Ve benden isteyene 10$ hediye burada. Bu iki ay boyunca stardart asgari sunucu ihtiyacını karşılayacaktır. 10$ kazmak için buraya tıklayın.

SSH istemcisi için PuTTY’yi kullanıyorum.

FTP istemcisine ihtiyacınız olursa FileZilla kullanabilirsiniz. (İhtiyacım oldu)

Hepsi bu kadar.

Ghost Kurulum Kılavuzu

Bunun için Ghost.org kurulum kılavuzunu burada [İngilizce] kullanabilirsiniz. Bu fazlasıyla yeterli olacaktır.

Ancak önce bu rehberin hangi bölümlerinin çok dilli yapı için değiştirmeniz gerektiğini öğrenmek için bu yazıyı okuyun.

Başlayalım

Sunucuma Ubuntu 16.04 sürümünü kurdum. Kurulum sırasında PuTTYGen ile ürettiğim SSH anahtarını kullandım. SSH ve/veya FTP (SFTP) bağlantısı için bu anahtarı tekrar kullanacaksınız.

Daha sonra sunucunuza SSH ile bağlanıp Ghost.org’un kurulum dökümanını “Install Ghost via the CLI” başlığını görene kadar takip edebilirsiniz.

O başlığı geldikten sonra gerisini bu yazıdan takip ederek yapmalısınız. (Yan tarafta yine de Ghost.org’un rehberine bakmayı unutmayın)

Tüm diller için yeni dizinler oluşturun

sudo mkdir -p /var/www/html/en 
sudo mkdir -p /var/www/html/tr
sudo chown [user]:[user] /var/www/html/en
sudo chown [user]:[user] /var/www/html/tr

Kurulum klasörlerinin gerekli izinleri olmalı

sudo chmod 775 /var/www/html/en 
sudo chmod 775 /var/www/html/tr

Yarattığınız dizinlere gidin ve ghost kurulumunu başlatın

cd /var/www/html/en ghost installcd /var/www/html/tr ghost install
  • Bu kurulum bolgunuzu üretim (yayın) modunda standart olarak MySQL veritabanı kullanarak kuracaktır.
  • Tüm kurulumlarda MySQL için root kullanıcısını ve şifresini kullanın.
  • Ghost kurulumunda Sqlite3 veritabanını kullanmak istiyorsnız bu yazıyı okuyabilirsiniz.
  • Kurulum sırasında karşınıza çıkacak tüm komut satırı girdileri için Komut Satırı Çıktıları başlığını inceleyiniz.
  • Veritabanı isimleri için farklı root kullanıcısı ile farklı isimler kullanının. Örnek: en_prod, tr_prod.

Komut Satırı Çıktıları

Aşağıda komut satırı çıkları için verdiğim örnek bilgileri paylaşıyorum. İsterseniz daha detaylı açıklama için Ghost.org’un detaylı komut satırı rehberi’de [İngilizce] inceleyebilirsiniz.

Enter your blog URL: https://irensaltali.com/en
Enter your MySQL hostname: (localhost) localhost
Enter your MySQL username: root
Enter your MySQL password: [input is hidden] **********
Enter your Ghost database name: (en_prod) ghost_en_prod
Do you wish to set up "ghost" mysql user? (Y/n) Y
Do you wish to set up Nginx? (Y/n) Y
Do you wish to set up SSL? (Y/n) Y
Do you wish to set up Systemd? (Y/n) Y
Do you want to start Ghost? (Y/n) n

İkinci dil kurulumunda SSL veya nginx ile ilgili hatalar alabilirsiniz. Bunları önemli değil zaten gerekli yapılandırmaları elle yapacağız.

Enter your blog URL: https://irensaltali.com/tr
Enter your MySQL hostname: (localhost) localhost
Enter your MySQL username: root
Enter your MySQL password: [input is hidden] **********
Enter your Ghost database name: (tr_prod) ghost_tr_prod
Do you wish to set up "ghost" mysql user? (Y/n) n
Do you wish to set up Nginx? (Y/n) n
Do you wish to set up SSL? (Y/n) Y
Do you wish to set up Systemd? (Y/n) Y
Do you want to start Ghost? (Y/n) n

Nginx Yapılandırması

Bu kurulumlarla birlikte iki bloguda başarılı bir şekilde kurmuş olduk. Şimdi sitelere https ile erişmek için gerekli nginx yapılandırmasını yapmamız gerekmekte.

cd /etc/ngnix/site-available
rm -rf *
cd /etc/ngnix/site-enabled
rm -rf *

Yukarıda iki dizindeki tüm eski dosyaları sildikten sonra yeni ayarları yapabiliriz. Yapılandırma için ben ilk kurduğım blogun yapılandırma dosylarını kullandım. Dosyada aşağıda gösterdiğim yapılandırma ayarlarını yaparak iki blog içinde gerekli ayarlar yapmış oldum.

cd /var/www/html/en/system/files
vi irensaltali.com.conf

irensaltali.com.conf:

server {
listen 80;
listen [::]:80;

server_name irensaltali.com;
root /var/www/html;

location ^~ /en {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_pass http://127.0.0.1:2368;
alias /var/www/html/en/system/nginx-root;
proxy_redirect off;
}

location ^~ /tr {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_pass http://127.0.0.1:2369;
alias /var/www/html/tr/system/nginx-root;
proxy_redirect off;
}

location ~ /.well-known {
allow all;
}

client_max_body_size 50m;
}

irensaltali.com-ssl.conf:

server {
listen 443 ssl http2;
listen [::]:443 ssl http2;

server_name irensaltali.com;
root /var/www/html;

ssl_certificate /etc/letsencrypt/irensaltali.com/fullchain.cer;
ssl_certificate_key /etc/letsencrypt/irensaltali.com/irensaltali.com.key;
include /etc/nginx/snippets/ssl-params.conf;

location ^~ /en {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_pass http://127.0.0.1:2368;
alias /var/www/html/en/system/nginx-root;
proxy_redirect off;
}

location ^~ /tr {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_pass http://127.0.0.1:2369;
alias /var/www/html/tr/system/nginx-root;
proxy_redirect off;
}

location ~ /.well-known {
allow all;
}

client_max_body_size 50m;
}

Yapılandırmanın Açıklaması

Aslına bakarsanız ghost scriptinin yaptığı yapılandırmadan sadece üç satırı değiştirerk gerekli ayarları yapmış olduk.

Birinci:

alias /var/www/html/en/system/nginx-root;

İkinci:

alias /var/www/html/en/system/nginx-root;

ve Üçüncü:

root /var/www/html;

İlk iki değişiklik iki blogun nginx kök dizinlerini tanıtmak için. Üçüncü ise kök alan adına erişildiği zaman (irensaltali.com) ne yapılacağını belirlemek için. Fark ettiğiniz gibi blogları ‘irensaltali.com/en’ ve ‘irensaltali.com/tr’ adreslerine kurduk. Peki ‘irensaltali.com’ ne olacak?

Yukarıda gördüğünüz gibi kök alan adı isterklerini ‘/var/www/html’e yönlendirdik. Kendi adıma buraya başka bir site veya başka bir şey kurmak gibi bir niyetim yoktu. Sadece gelen ziyaretçileri ‘irensaltali.com/en’ veya ‘irensaltali.com/tr’a yönlendirmek istiyordum. Bu nedenle ziyaretçilerin coğrafi konumlarına göre bir yönlendirme yapmaya karar verdim. Bunun için Coğrafi Konuma Göre Ziyaretçi Yönlendirme yazısında anlattığım html dosyasını index.html adı ile ‘/var/www/html/ altına atmanız yeterli olacaktır.
Yönlendirme yapmasanız bile iki blogda direkt adreslerini girerek ulaşılabilir durumdadır.

Not: Bu iki blog bir birinden tamamen bağımsızdır. Bunları aynı sunucuya kurulmuş iki ayrı websitesi olarak görebilirsiniz.

Kurulumdan sonra İngilizce olmayan blogun sabit metinleri için bir çeviri yapılması gerekmektedir. Bunun için de bir repo ve yazı hazırlıyorum. Takipte kalın.

Umarım bu yazı size faydalı olmuştur.

Originally published at irensaltali.com on February 9, 2018.

--

--

İren Saltalı
İren Saltalı

Written by İren Saltalı

MSc. Computer Engineer ( @itu1773 -DHO). CTO of @wopehq , co-organizer in @serverlesstr , Community Builder of @awscloud

No responses yet