01 August 2011

Django'da Fabric Kullanımı

Bir Django projesinde statik dosyaları bir dizinde toplayıp, sunuma hazır hale getirmek için kaç satır komut giriyorsunuz? Bu tip durumlarla baş etmek için küçük bir betik yazıp, o betiği python deploy.py collectstatic gibi belirli argümanlarla çalıştırarak üstesinden gelmek, her projeyi güncellerken tekrar tekrar aynı komutları girmekten daha pratik olabiliyor.

Daha pratiği, fabric kullanmak. Fabric, bir web projesini sunmak için gerekli komutları yazabileceğimiz, argümanları kolayca tanılayabileceğimiz, gerektiğinde kendi bilgisayarımızdan uzaktaki sunucuya bağlanmasını sağlayabileceğimiz bir kitaplık ve konsol uygulamasıdır. Django belgelerinde, fabric ile uzaktaki sunucuya erişim statik dosyaları sunuma hazır hale getiren örnek bir fonksiyon bulunuyor:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
from fabric.api import *

# Hosts to deploy onto
env.hosts = ['www1.example.com', 'www2.example.com']

# Where your project code lives on the server
env.project_root = '/home/www/myproject'

def deploy_static():
    with cd(env.project_root):
    run('./manage.py collectstatic -v0 --noinput')

Bu kodu proje dizini içinde fabfile.py veya fabfile/__init__.py'ye yazmak gerekiyor. Eğer statik dosyaları sıkıştırmak, coffeescript'i javascript koduna çevirmek gibi statik dosyalarınız ile ilgili daha başka işlemleriniz varsa, deploy_static() fonksiyonu altında bunların hepsini yazabilirsiniz. Daha sonra konsoldan proje dizinine girip şu komutu vermeniz yeterli olacak:

fab deploy_static

Sadece Django değil, sunucunuzda sunacağınız herhangi bir web çatısı, cms veya uygulamada fabric kullanmak, konsol araçları yazmakta kolaylık sağlayabilir. Hatta Fabric'i kullanacağınız projenin ana dilinin Python olmasına bile gerek yok. Yeter ki bir konsol aracına ihtiyacınız olduğu an, Fabric'e bir göz atın.