17 Mayıs 2010 Pazartesi

Debian Üzerine Trac Kurulumu

Bu yazıda Trac yazılımının Debian Linux dağıtımı üzerine kurulması ve örnek bir Trac proje ortamı oluşturulması anlatılmıştır.

Trac, yazılım projelerinin yönetiminde kullanılabilecek Web tabanlı bir sorun takip sistemidir. Bunun yanında version kontrol sistemlerine arabirim, bütünleşik wiki ve çeşitli raporlama araçları içermektedir.

Kurulu yazılımlar :

  • Debian Stable (Lenny 5.0.4)
  • Apache 2.x

İşlem adımları :

  • Gerekli paketlerin kurulması. Debian'ın apt aracı ile trac yazılımını ve Apache 2 için Python modülü kuruluyor.
    apt-get install trac
    apt-get install libapache2-mod-python
    
  • Yeni bir proje ortamı oluşturulması için aşağıdaki formata uygun olan bir komut girilmesi gerekiyor.
    trac-admin </path/to/projenv> initenv
    
    Örneğimizde içinde bulunduğumuz dizin altında sample-project adında bir dizin ve proje ortamı oluşturulacak.
    trac-admin sample-project initenv
    
    Yukarıdaki işlem proje ortamının üretim sürecini başlatacaktır. Üretim sürecinde proje adı ve kullanılacak veri tabanı seçimi yapılır. Trac, başka bir veri tabanı türü seçilmemişse proje veritabanını SQLite kullanacak şekilde ( sqlite:db/trac.db ) oluşturuyor. SQLite dosya tabanlı bir veritabanı yönetim sistemidir.
  • Proje ortamının sunulmasında iki ayrı yaklaşımdan biri seçilebilir :
    • Bağımsız "tracd" sunucusu kullanmak.
    • Python desteği olan bir Web sunucusu kullanmak.
  • Burada 2. seçenek tercih edilerek Python modülü entegre edilmiş Apache 2 Web sunucusu kullanıldı.
  • Apache 2 sunucusunun ayarlanması. Apache ayar dosyasında sunumun yapılacağı ilgili VirtualHost bloğu altına aşağıdaki şekilde Location ayarı eklenir. Örneğimizde sunucu adından hemen sonra /trac/sample-project erişim yolu üzerinden Trac projesi sunulacaktır. Bu ayarlarda görülen /disk/trac/sample-project kısmı ise projenin dosya sistemindeki tam yolunu örneklemektedir.
    <Location /trac/sample-project>
      SetHandler mod_python
      PythonHandler trac.web.modpython_frontend
      PythonInterpreter main
      PythonOption TracEnv     /disk/trac/sample-project
      PythonOption TracUriRoot /trac/sample-project
      SetEnv PYTHON_EGG_CACHE /tmp
    </Location>
    
    Bu ayarlamanın etkinleştirilmesi sonucunda Web tarayıcısından "Sample Project" Trac proje sitesinin aşağıdakine benzer bir URL üzerinden açılabildiği görülecektir:
    http://sample.host.name/trac/sample-project/
    
  • Kullanıcı doğrulaması. Trac proje sitesi şu an kullanıcı doğrulaması yapamamaktadır. Dolayısıyla siteyi ziyaret eden herkes "anonymous" kullanıcısıdır. Belirlenen kullanıcı adı ve şifre ikilisini giren kişilerin doğrulanmış kişi olarak Trac tarafından tanımlanabilmesi için bir mekanizma kullanılması gerekmektedir. Burada gizli bir şifre dosyası üzerinden (.htpasswd) HTTP Basic Authentication mekanizması kullanılması örneklenmiştir. Apache 2 ayar dosyasına aşağıdaki Location ayarı ekleniyor.
    <Location /trac/sample-project/login>
      AuthType Basic
      AuthName "Sample Project"
      AuthUserFile /disk/trac/.htpasswd
      Require valid-user
    </Location>
    
    Burada . htpasswd dosyası kullanıcıların şifrelerinin tek yönlü şifrelenmiş olarak tutulabileceği ve Apache sunucusu tarafından okunabilecek şekilde erişim hakları sınırlanmış bir dosyadır. Apache 2 ile birlikte gelen htpasswd programı ile söz kullanıcı şifrelerinin çeşitli algoritmalar (crypt, MD5, SHA) kullanılarak tek yönlü şifrelenmiş hali üretilebilir. Bu ayarın etkinleştirilmesi sonucunda Trac, proje sayfasında "Login" linkini gösterecektir. Bu linke tıklandığında kullanıcı adı ve şifresi soran bir HTTP doğrulama diyaloğu açılacaktır. Örneğimizde "user1" kullanıcı için .htpasswd dosyasında aşağıdakine benzer kullanıcı adı ve şifrelenmiş şifre içeren bir satır olmalıdır.
    user1:IcSyd/ljIYR9Y
    
    Kullanıcı doğrulaması için LDAP servisleri de kullanılabilir. Bunun nasıl yapıldığı ile ilgili olarak LDAP ve Apache - Kullanıcı Doğrulaması Pratikleri başlıklı yazıya bakılabilir.
  • Erişim yetkilerinin ayarlanması. Kullanıcı doğrulaması ile kullanıcılar Trac'a tanıtılabilir hale geldi. Şimdi kullanıcıların Trac uygulamasında neler yapabileceklerini, yani kullanıcı yetkilerini tanımlamak gerekiyor. Bu amaçla trac-admin programı kullanılabilir. Aşağıda trac-admin konsolunun açılması örneklenmiştir.
    root@xyz:/disk/trac/sample-project$ trac-admin .
    Welcome to trac-admin 0.11
    Interactive Trac administration console.
    Copyright (c) 2003-2009 Edgewall Software
    
    Type:  '?' or 'help' for help on commands.
    
    Trac [/disk/trac/sample-project]>
    
    Aşağıda ise trac-admin konsolu içinden kullanıcıların yetkilerinin listelenmesi, anonymous kullanıcıların tüm yetkilerinin silinmesi ve user1 kullanıcısına Trac yöneticisi yetkisi verilmesi için kullanılacak komutlar örneklenmiştir.
    permission list
    permission remove anonymous *
    permission add user1 TRAC_ADMIN
    
  • Yazılım güncellemesi. Biraz önce Debian dağıtımı ile hazır paket olarak kurulan Trac, 0.11 versiyonuna sahipti. Kullanılan Debian dağıtımının paket yönetim tercihlerine dokunmaksızın doğrudan Python'un kendi araçlarını kullanarak güncelleme yapmak aşağıdaki gibi mümkün.
    root@xyz:~# easy_install --upgrade Trac
    Searching for Trac
    Reading http://pypi.python.org/simple/Trac/
    Reading http://trac.edgewall.com/
    Reading http://trac.edgewall.org/wiki/TracDownload
    Reading http://projects.edgewall.com/trac
    Reading http://projects.edgewall.com/trac/wiki/TracDownload
    Best match: Trac 0.12b1
    ...
    
    Yazılımı güncelledikten sonra Trac proje sitesinin güncellemesi için proje sitesinin bulunduğu dizine girilerek aşağıdaki komutlar çalıştırılıyor. Bu komutlar sırayla veritabanı güncellemesi, wiki güncellemesi ve versiyon kontrol yeniden senkronizasyonunu gerçekleştirecektir.
    cd /disk1/trac
    trac-admin sample-project upgrade
    trac-admin sample-project wiki upgrade
    trac-admin sample-project repository resync *
    
  • Eklenti kurulumu. Trac yazılımına eklenti kurmak için öncelikle setup-tools kurulumu yapılır:
    easy_install -U setuptools
    
    Aşağıdaki örnekte wiki sayfalarında WYSIWYG düzenlemesi yapmakta kullanılabilecek bir plugin kurulumu yapılmıştır.
    easy_install http://trac-hacks.org/svn/tracwysiwygplugin/0.12
    Kurulumu yapılan eklentinin aktive edilmesi için Trac proje ortamının bulunduğu dizinde conf dizini altında trac.ini dosyasında components bloğu içine aşağıdaki satir eklenir.
    [components]
    tracwysiwyg.wysiwygmodule = enabled