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,

No comments:

Post a Comment