Github Pages ve Jekyll ile blog oluşturmak

İlk olarak Jekyll nedir, ondan bahsedelim. Jekyll, statik içeriklerle site oluşturabildiğiniz bir araçtır. Ruby dili ile yazılmıştır. İçerik oluşturduğunuzda, header, sidebar, footer kısımları ( tabi kullandığınız temaya ve layout yapısına bağlı başka yerler de olabilir )  sabit kalır ve içerik kısmı url’e göre değişir.

GitHub Pages, projelerinize vs. websitesi oluşturabildiğiniz GitHub reponuzda host edilen, dolayısıyla terminalden git ile kontrol edebileceğiniz bir yapıdır.

Peki Jekyll’nin GitHub ile olayı nedir? Oluşturduğunuz bir GitHub Page içerisine, Jekyll push ettiğiniz takdirde, bir adet blogunuz olmakta. İşin özeti tamamen bu aslında.

Hızlıca bu işlemleri yapmak istiyorsanız, şu linke tıklamanız yeterli. Adım adım ne yapacağınız yazıyor, ancak ben kısaca bahsedeyim.

İlk olarak github içerisinde {{username}}.github.com isminde bir repo oluşturuyorsunuz. Ardından bilgisayarınızda Jekyll’i clonelayıp, remote set-url ile oluşturduğunuz repoya gönderiyorsunuz. Ve {{username}}.github.io adresiniz yaklaşık bir 10 dakika içerisinde açılmış oluyor.

Linkini verdiğim sitede layoutları bootstrap ile yapılmış bir Jekyll var. Eğer isterseniz tabi ki kendiniz de temasını şeklini felan düzenleyebilirsiniz. Ayrıca eğer isterseniz mevcut bir Jekyll’den clonelayıp kendiniz bir tane oluşturabilirsiniz. Burada bir liste var örneğin : https://github.com/jekyll/jekyll/wiki/Sites

Postların tamamı, _posts klasörünün altında bulunuyor. Eğer terminalden rake post title=”deneme” derseniz, _posts klasörünün altında, current-date-deneme.md isminde bir dosya oluşuyor. Bu dosyayı herhangi bir editör ile düzenlediğinizde bir adet post yazmış oluyorsunuz. Ancak bu şekilde yapmak zorunda değilsiniz, _posts altında herhangi bir dosya oluşturup onu {{username}}.github.io/{{dosya_adi}} şeklinde veya bir klasör oluşturup ardından onun altında dosya oluşturup {{username}}.github.io/{{klasör}}/{{dosya_adi}} şeklinde çalıştırabilirsiniz.

Jekyll’i localde çalıştırabilmek için bilgisayarınızda ayrıca ruby kurulu olması gerekiyor. Onu da buradaki yazımda anlatmıştım, belki yardımcı olabilir.

Ayrıca localde çalışırken başıma gelen bir olay; _config.yml dosyası jekyll serve dediğinizde load oluyor. Üzerinde değişiklik yaptığınızda tekrar jekyll serve  demeniz gerekiyor.

Localde çalışırken başıma gelen bir başka hata ise şu şekildeydi : runner.rb:365:in `require_program’: program version required (Commander::Runner::CommandError)

Çözümü ise : sudo gem install json

Jekyll’nin asıl amacı, yazılımcıların kod yazar gibi blog içeriği oluşturmalarıymış. Ufak bir araştırma yaptığımda kullanan sayısının bir hayli çok olduğunu da gördüm.

partition not found grub rescue hatası ve çözümü

İçerisinde Ubuntu ve Windows 7 işletim sistemleri dual boot olarak yüklü bilgisayarda, açılış sırasında aldığımız grub rescue hatasını aşağıdaki şekilde çözdük;

Boot ayarlarından USB’ye öncelik verdik ve içerisinde Ubuntu bulunan usb ile bilgisayarı başlattık. Install etmeden çalıştırdık. Ardından terminali açtık. Aşağıdaki komutları çalıştırdıktan sonra bilgisayarı restart ettik.

 sudo add-apt-repository ppa:yannubuntu/boot-repair && sudo apt-get update
 sudo apt-get install -y boot-repair && boot-repair

Bu şekilde sorunu halletmiş olduk.

linux toplu bul ve degistir (find and replace) islemi

Linuxta belirli dosyalar üzerinde find ve replace işlemi yapmak istiyorsak 2 komut kombinasyonu kullanarak bu işinizi halledebilirsiniz.

grep -l 'aratilacak_dizgi' * | xargs sed -e 's/aratilacak_dizgi/yeni_dizgi/' -i

sadece grep -l ‘aratilacak_dizgi’ ile içinde ‘aratilacak_dizgi’ olan dosyaları listeleyebilrsiniz. sed komutu ile de replace işlemini yapmış oluyoruz.

Umarım işinize yarar.

Linuxta belirli bir boyuttan buyuk dosyalari listelemek – find komutu

Linuxta belirli bir boyuttan büyük dosyaları listelemek istiyorsanız, yapacağımız şöyle :

aşağıdaki kod bulunulan klasördeki 10 Megabayt üstü dosyaları listeler

 find . -size +10M -ls

aşağıdaki kod bulunulan klasördeki 10 kilobayt üstü dosyaları listeler

 find . -size +10k -ls

nginx virtual host ayarları (nginx vhost) -ubuntu

Nginx’in kurulumuna buradaki yazımızdan ulaşabilirsiniz : ubuntu nginx kurulumu (Ubuntu 12.04)

Sanal sunucu yani virtual host ayarlarının nasıl yapılacağına bakalım şimdi.

Örnek olarak, web sitelerimi barındırdığım dizin /home/khantunckale/sites
Bunun içerisinde test diye bir klasörümüz olsun, içerisinde de index.html olsun.

cd /home/khantunckale/sites
mkdir test
gedit test/index.html /*düzenleyip içine bişeyler yazalım*/

Amacımız, buradaki index.html dosyasını browserımız üzerinden http://www.test/ olarak çağırmak.

Şimdi nginx ayarlarını yapalım.

Önce ayarları yapmak için nginx’in sites-available klasörüne gidiyoruz.

cd /etc/nginx/sites-available

Default config dosyasının bir kopyasını oluşturuyoruz.

cp default test 

Ardından bu dosyayı bir editör ile açıp düzenleyelim. (gedit, nano vs.) Ben kendi ayarlarımı şu şekilde yaptım.

server {
    server_name www.test;
    access_log /home/khantunckale/sites/test/access.log;
    error_log /home/khantunckale/sites/test/error.log;
    root /home/khantunckale/sites/test/public_html;

    location / {
        index  index.html index.htm index.php;
    }

    location ~ \.php$ {
        include /etc/nginx/fastcgi_params;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME /host/web/emfw/public_html$fastcgi_script_name;
    }
}

server_name : sitemizi çağırdığımız adres.
root : sitenin index dosyasının olduğu dizin.
access_log ve error_log parametreleri de yukarıda göründüğü üzere loglarla ilgilidir.

Bu dosyayı kaydettiğiniz zaman, sitemiz sadece uygun durumda olur (available). Sitemizi aktifleştirmek için, sites-enabled klasörüne bir sembolink link yaratmamız gerekiyor. O yüzden şu komutu çalıştırmalıyız.

ln -s /etc/nginx/sites-available/test /etc/nginx/sites-enabled/test

Ardından da service nginx restart diyelim.