Sunday, August 28, 2011

Trac on Pardus

Windows XP'nin kapalı kutu sistemi ve Trac ve bileşenlerini kurarken kullandığım üçüncü parti yazılım (BitNami) nedeniyle, karşılaştığım sorunlar ile uğraşmak ve bu sorunları çözmek gerçekten zorlaştı.

İlk başta resmin tamamımı görmemi sağlayan, BitNami'yi Windows XP'den kaldırdım. Windows işletim sistemi kaynak doküman ve bendeki Windows'a olan güven eksikliği nedeniyle çalışmalarıma Pardus üzerinde devam edeceğim. Artık daha fazla "nasıl" (how-to) belgesini kaynak olarak kullanabiliyorum.

Bilgisayarımda kurulu Pardus'un 28 Ağustos 2011 itibarıyla tüm güncellemeleri tamamlanmış durumda.

İşletim Sistemi sürüm bilgisi şöyle;
Linux pardus2011 2.6.37.6 #1 SMP Wed Mar 30 16:31:56 EEST 2011 i686 i686 i386 GNU/Linux

Pyhton 2.7.1 kurulu;
Python 2.7.1 (r271:86832, Apr 28 2011, 14:34:05)
[GCC 4.5.2] on linux2

Kurulu setuptools bilgisi ise şöyle;
Name : python-setuptools, version: 0.6_11, release: 10
Summary : Python setuptools

SQLite database konusunda ise Phytho 2.7.1 kurulu olduğu için ek bir kurulum yapmadım. "If you're using Python 2.5 or 2.6, you already have everything you need." http://trac.edgewall.org/wiki/TracInstall#ForSQLite

İleride version kontrolü de yapmak istediğim için Subversion'ın da kurulu olmasını istiyorum. Sistemime kurulu subversion bilgileri ise şu şekilde;
subversion, version: 1.6.17, release: 68

Tek eksiğim Genshi, şablonlama sistemi.
"Genshi is a Python library that provides an integrated set of components for parsing, generating, and processing HTML, XML or other textual content for output generation on the web." http://genshi.edgewall.org/

Genshi'nin kaynak kodunu tar.gz olarak indirdim.
http://genshi.edgewall.org/wiki/Download#SourceTarballs

Sıkıştırılmış dosyayı açtıntan sonra, kullanıcı yetkilerimi "root"a çevirdim. İnternet sitesinde açıkladığı şekilde yazılımı kurdum.
http://genshi.edgewall.org/wiki/Documentation/0.5.x/install.html#id4

Aslında tek yaptığım komut satırına,
 
$ python setup.py install

yazmak oldu. Kurulum sırasında bir hata almadım.

Ardından Trac'in kaynak kodu dosyasını tar.gz olarak indirdim.

http://trac.edgewall.org/wiki/TracDownload

Sıkıştırılmış tar.gz dosyasını açtıktan sonra, (bu arada hala root yetkilerine sahibim)

$ python ./setup.py install

komutu ile kurulumu gerçekleştirdim. Kurulum sırasında bir hata almadım.

Kurulum tamamlandıktan sonra sıra Trac Environment'ın oluşturulmasına geldi.

$ trac-admin /ABCKonutlari initenv

komutu ile gerekli proje klasör ve dokümanları /ABCKonutlari oluşturuldu.

(Klasörler kök dizinde oluştu.(/) Aslında projenin kurululacağı "Path"i daha anlamlı bir şekilde verebilirdim. Aklımda hiç bir dizin planlaması olmadığı için şimdilik bu şekilde kalması benim için problem değil. İlerleyen günlerde Trac'e ulaşımın Apache server üzerinden sağlanması sırasında bazı zorluklar ile karşılaşırsam o zaman bir plan yaparım.)

Trac'e standalone bir server olarak ulaşılmasını sağlayan http://trac.edgewall.org/wiki/TracInstall#RunningtheStandaloneServer

$ sudo tracd --port 8000 /ABCKonutlari

komutu ile deneme projem "ABC Konutlarına"

http://127.0.0.1:8000/ABCKonutlari

adresinden ulaşabildim.

"tracd" komutunu "sudo" ile yazmamın sebebi, konsolda komutu çalıştıran kullanıcının /ABCKonutlari klasörüne ve database dosyasına okuma-yazma hakkına sahip olması gerekliliği. Farklı bir kullanıcı ile komutu çalıştırdığınızda internet arayüzünde size bir hata mesajı veriyor.

Traceback (most recent call last):
  File "build/bdist.linux-i686/egg/trac/web/api.py", line 440, in send_error
    data, 'text/html')
  File "build/bdist.linux-i686/egg/trac/web/chrome.py", line 827, in render_template
    message = req.session.pop('chrome.%s.%d' % (type_, i))
  File "build/bdist.linux-i686/egg/trac/web/api.py", line 216, in __getattr__
    value = self.callbacks[name](self)
  File "build/bdist.linux-i686/egg/trac/web/main.py", line 300, in _get_session
    return Session(self.env, req)
  File "build/bdist.linux-i686/egg/trac/web/session.py", line 198, in __init__
    self.get_session(sid)
  File "build/bdist.linux-i686/egg/trac/web/session.py", line 219, in get_session
    super(Session, self).get_session(sid, authenticated)
  File "build/bdist.linux-i686/egg/trac/web/session.py", line 61, in get_session
    db = self.env.get_db_cnx()
  File "build/bdist.linux-i686/egg/trac/env.py", line 328, in get_db_cnx
    return get_read_db(self)
  File "build/bdist.linux-i686/egg/trac/db/api.py", line 90, in get_read_db
    return _transaction_local.db or DatabaseManager(env).get_connection()
  File "build/bdist.linux-i686/egg/trac/db/api.py", line 152, in get_connection
    return self._cnx_pool.get_cnx(self.timeout or None)
  File "build/bdist.linux-i686/egg/trac/db/pool.py", line 226, in get_cnx
    return _backend.get_cnx(self._connector, self._kwargs, timeout)
  File "build/bdist.linux-i686/egg/trac/db/pool.py", line 146, in get_cnx
    raise TimeoutError(errmsg)
TimeoutError: Unable to get database connection within 0 seconds. 
(TracError(u'The user erdem requires read _and_ write permissions to the database 
file /ABCKonutlari/db/trac.db and the directory it is located in.',))

Bir sonraki konumuz Trac için kullanıcı tanımlama olacak. Kullanıcıların nasıl tanımlandığına standalone bir server için değil, Apache Server ile yayımlanan bir Trac için bakacağız.

Apache "nasıl" dokümanlarını okumaya devam. http://httpd.apache.org/docs/2.2/en/howto/

Sağlıcakla kalın,

Thursday, August 25, 2011

Apache httpd

Konu takip sisteminin bir kaç programın entegre çalışması ile mümkün olduğunu öğrendim. (Trac, Subversion, Apache httpd, Python, SQLite, Setuptools)

Bu programlardan olmazsa olmazları trac, setuptools, genshi, phython ve sqlite (veya destekelenen başka bir veri tabanı) http://trac.edgewall.org/wiki/TracInstall#MandatoryDependencies

Farkettiğiniz gibi Trac Apache httpd ve Subversion'sız da çalıştırılabiliyor ama ben bu iki programı da kurup kullanmak istiyorum.

Şuan yaşadığım sorunlar web sunucusu Apache ve Trac ile alakalı. Bu sorunların temelinde bilgi eksikliği yatıyor. Bu nedenle önümümüzdeki günleri Apache httpd öğrenerek geçireceğim. Resmi internet sayfası oldukça güzel hazırlamış. http://httpd.apache.org/ Bir tane de kitap almayı düşünüyorum.

Wednesday, August 24, 2011

500 Internal Server Error

Dün akşam Trac'a Account Manager Plugin'ini yüklerken, biraz deneysel yaklaşıp, webadmin arayüzünden ve komut satırından bazı komutlar girdim. Sonuçta sunucu çöktü ve şuan erişilemiyor. 

Böyle bir hatanın proje sırasında gerçekleştiğini düşününce biraz korkutucu geldi. Diğer taraftan da esas uzmanlığın hata yönetimi ve çözümü olduğunu düşündüm. 

Sonuç olarak, her hataya, standart bir yaklaşım süreci ile bakılması ve hataların çözümleri ile bilgi birikimi sağlanması, Trac'in inşaat sektöründe (göreceli olarak bilgisayar dünyasına uzak) kullanılmasını sağlayacak önemli yapı taşlarındandır. Bu nedenle karşılaştığım hataları da bu blogda paylaşacağım.

Bu arada Yedek (Back-up) alarak çalışmanın önemini bir daha görmüş olduk. Özellikle sistem üzerinde işlemler yapmadan önce yedek almayı unutmayın.



Monday, August 22, 2011

Trac'e uzaktan erişim

Trac ve bileşenlerini Windows XP yüklü bilgisayarıma kurdum. BitNami, kurulumu toplu bir paket halinde yaptığı için, bileşenlerin kurulum detaylarına girmedim. (Resmin tamamına odaklanmam için iyi oldu. İlerleyen günlerde detaylara inerim.)

Apache sunucu yazılımı da kurulmuş. Trac arayüzüne bir internet gezgini (firefox, iexplorer) ile ulaşabiliyorum. ADSL modemimde yaptığım ufak bir ayar ( NAT ile port yönlendirmesi) ve IP adresim ile dışarıdan Trac'e erişim sağlayabiliyorum.

Bundan sonraki adımım bir şantiyeyi Trac de modellemek...

Thursday, August 18, 2011

Trac on Windows

Uzun ve iş bakımından yoğun bir aradan sonra Trac ile tekrar ilgilenebildim. Trac'i windows üzerine, komple bir paket halinde kuracak olan BitBami dosyasını indiriyorum. http://bitnami.org/download/files/stacks/trac/0.12.2-3/bitnami-trac-0.12.2-3-windows-installer.exe

Windows'da bazı temel kavramları çözdükten sonra, Linux üzerinde kurulumu deneyeceğim. 

Bu arada dikkatimi çeken diğer bir "project and issue tracking" yazılımı daha oldu; Jira

İlgilenenler için kısayolunu kopyalıyorum. Trac'i çözdükten sonra bakarsınız Jira ile de biraz çalışırız.

Sonuçta geleceğin "Proje ve Şantiye Yönetimi" yazılımları "issue tracking" yazılımları olacak, ilgilenmekte yarar var :)