6 Temmuz 2016 Çarşamba

Sorularla

Nasıl kandıralım kendimizi? Günleri bayram ilan etmek, onları bayram yapıyor mu? Kaç acı eskittik? Kaç ölüm gördük?

"Yüzlerce soru
Vardı aklımda,
Kulaklarımda
Bir garip uğultu
Ölümü kullanamazdım;
Biryerlerde
Birilerine
Mutlaka ayıp olurdu. "

demiş Metin Altıok, Sorularla şiirinde.
Derdi günü kedisiz ve sevgisiz getirmemekti ömrünün sonunu
Yakarak öldürdüler onu. Kedisiz ve sevgisiz...
O kadar acı var ki bu topraklarda nasıl ölürsen öl birilerine mutlaka ayıp edersin.

Ne zaman mutlu olmam beklense bu şiir gelir aklıma:

İşte yine kapıldım
O can sıkıntısına;
İçimde bir tozlu
Sarnıç boşluğu,
Gitmekle kalmak
Arasında kararsız
Yürüdüm kederle
Dağlara doğru.

Yüzlerce soru
Vardı aklımda,
Kulaklarımda
Bir garip uğultu
Ölümü kullanamazdım;
Bir yerlerde
Bilmediğim birilerine
Belki ayıp olurdu.

Belki de hiç
Ummadığım
Sevgisi tarazlı biri;
Koparıp bana ilişik
Umudunu
Bir kitabın arasında
Yamyassı
Kuruturdu

Bir gazetenin
Ölüm ilanlarında
Okuyup adımı,
Öfkeye dönüştürürdü
Sandık kokulu
Hüznünü
Ve ölümü inatla,
Yok yere savunurdu.

Ben bunca yıl
Bunca insan tanıdım
Yüreği zehir dolu;
Yine de insanlardan
Kesmedim umudu.
İnsan dedim
Yekindim;
Paylaştım varı yoğu.

Ben neden
Dudaklarının arasında
İğneler tutan
Bir terzi suskunluğunu
Prova ediyorum
Şimdi bu yol boyu
Kederle yürürken
Dağlara doğru?

Neden kedi seven
Bir insan
Olduğumu
Biliyorum da
Kedisiz ve sevgisiz
Getiriyorum
Yaşadığım günlerin
Yaprak döken sonunu?

Cevapsız sorunun
Boynu büküktür,
Hemen anlar
Yetim olduğunu.
Ben neden hala
Duyuyorum avucumda
Bir çocuk elinin
Sızlayan boşluğunu?

Hipodromda yatıp
Kalkan bir adamın
Ölü bulunduğunu
Yazdı gazeteler
Geçenlerde
Haber olarak.
Tokatlıymış
Ya da Çorumlu.

Bıraktığı nottan
Öğrenilmiş
Son isteğinin
Ölürse terminale
Götürülmek olduğu.
Hipodromda yatıp
Kalkan bir adam
Kimin umuru!

Acılarla sorularla
Tiftikledim
Bunca insanın
Mutsuzluğunu.
Düşündüm kendi sonumu.
Hayrettir;
İçim içime
Nasıl da sığıyordu!

Oysa ben kaç yıldır
Kaç acı eskittim
Unuttum
Kaç ölüm gördüğümü.
Bir omzumun
Alçaklığı ondandır;
Taşıdım kaç kişinin
Kanayan tabutunu.

Yıllar önce
Ölümü seçen sevgilim
Bunca sevgisizlik içinde
İyi biliyordu
Yetmeyeceğini
İki kişinin birbirine.
Bu yüzden döşeğinde
Ölümle buluştu.

Gömdük onu geçiştirip
Polis sorgusunu.
Onunla birlikte
Neleri gömdük;
Bir akşam içkisinin
Coşkusunu,
Sevincimizi gömdük
Kürek dolusu

Yüzlerce soru
Vardı aklımda,
Kulaklarımda
Bir garip uğultu
Ölümü kullanamazdım;
Biryerlerde
Birilerine
Mutlaka ayıp olurdu.

Dostlardan uzakta
Bir bozgun akşamında
Gerisingeri
Dönerken kasabaya;
Baktım gökyüzü
Birden yıldızla doldu.
Akşamın serinliği
Alnıma vuruyordu...

Metin Altıok



7 Şubat 2016 Pazar

Mutluluğun formülü: Özgür Yazılım Projeleri Yapmak/Katkı vermek

Dünyanın büyük çoğunluğu yaşam savaşı verirken benim gibi durumu iç güveysinden hallice beyaz yakalı tayfasının sınıfsal olarak arada derede kalmış, bir türlü mutlu olamayan, sürekli boşluk içinde kıvranan hayatının tek arayışı olan mutluluk...

Tarihin başlangıcından bu yana mutluluğun ne olduğu ve nasıl yakalanacağı konusunda bir hayli lakırdı edildi ve edilmeye devam ediyor. Tabi ki bu yazıyı bitirdiğinizde de bu sorularınıza cevap bulmuş olmayacaksınız. Ama kendi yapmaktan mutlu olduğum şeyleri, başkaları da yapınca mutlu olur belki diye paylaşmak istedim.

Mutluluğun sürekli bir fonksiyon olmadığını bir türlü kabul edemememiz sürekli mutsuz kalmamızdaki birinci neden. İkincisi ise insan bencildir öğretisi. Hayatta kalmamızı bu içgüdü sağlıyormuş. Bunu tam olarak yalanlayamayız evet ama özgeciliğin (diğerkamlık) canlı türlerinin (sadece insan topluluklarının değil diğer canlı türlerinin de) hayatta kalabilmesine sağladığı katkıya hakkı yeterince teslim edilmemektedir. Hatta biraz daha ileri giderek bu katkının bilerek, sistematik bir şekilde görmezden gelindiğini söyleyebilirim. Bize hep ne kadar bencil olursak o kadar mutlu olacağımız söyleniyor ve hatta dünyanın bu fikir tarafından yönetildiğini hepimiz biliyoruz (ayrıca bakınız: kapitalizm, bireycilik, rasyonel bencillik). Mutluluğun gerçekten de bencillikte olmadığını her gün giderek üstel olarak artan bir doğrultuda öğreniyorum.


Gelelim bu üç paragrafın özgür yazılım ile alakalı kısmına. Yaklaşık bir sene önce, Akademik Bilişim 2015 konferansı öncesi kurslarda üniversiteden arkadaşım Ahmet Can ile dört günlük “Python ve Django ile web uygulaması geliştirme” kursu vermiştik. Kursa kayıt süreçlerinin çok fazla bilek gücü gerektirmesi ve Mustafa Akgül hocanın bunlarla tek başına başa çıkmaya çalışması dolayısıyla bu süreci mümkün olduğunca otomatik hale getirmek için kolları sıvadık. Bir kayıt paneli oluşturmaya karar verdik. Lakin bir çok konuda defalarca tartışıp, kavga edip, küsüp sonra tekrar barıştıktan sonra Akademik Bilişim 2016 öncesi kurslara kayıt almaya başlama tarihi olan 2 Ocak'tan yaklaşık 1 ay öncesine kadar didişmekten pek bir şey kodlayabildiğimizi söyleyemeyeceğim:) Bir aylık sürecin sonunda kayıt almaya başlayıp ve dahi kurslar başlayana kadar bu sistemi adam etmek için uğraştık. Bizim için küçük insanlık için önemli bir adımmış. Bu işe girişmeden önce ve yaparken hep neden bu işe bu kadar takıldığımı düşünüp durdum. Çoğu zaman iş yerinde girdiğimden daha çok strese girip bu işi bitirmek için uğraştık Ahmet'le. Ne içindi? Buna şöyle cevap veriyordum: ikimizde çalışmayı çok seven insanlarız ve insan enerjisini her zaman sadece patronları bir üst model araba alabilsin diye harcamamalı. Akademik Bilişim öncesi kursların bir çok insanı bilişime kazandırdığına ve dokunduğu insanlara gerçekten değer kattığına inanıyorum. Bu kurslardan daha fazla insanın faydalanabilmesi için bilek gücü gerektiren işlerin azalması gerekiyor. Sadece bu düşünce bile insanı motive etmeye yeterli iken bir de kurslar esnasında neredeyse her gören eğitmenin dönüp teşekkür etmesi ayrı bir mutluluk kaynağı oldu bizim için. Günlük hayatta 8-17 mesai saatleri içerisinde (ne kadar özveri ile yapmış olursanız olun) yaptığınız işler için teşekkür almazken (ya da lafın gelişi teşekkür ediliyorken), topluluğa yapılan katkıların böyle içten teşekkürleri insanı gerçekten mutlu ediyor. Mutlu olmak için siz de bir özgür yazılım projesi oluşturun veya katkı verin. Emin olun yüzde yüz çalışıyor;)

25 Ağustos 2013 Pazar

Bir acayip memleket - Karadeniz



İşte başlamıştı aylarca gitmek için deli gibi heyecanlandığımız gezimiz. Hakkında çok güzel olduğu ve derelerinin katledildiği dışında hiçbir bilgimin olmadığı coğrafyaya doğru yolculuk oldukça heyecanlıydı benim için.
İlk durak Kastamonu… Bahsi güncel hayatımda hiç geçmeyen bir şehirden bu kadar güzel olmasını beklemiyordum açıkçası. Otobüs duraklarının bile tarihi yapıya uygun yapılması hayranlığımı arttıran bir unsur oldu.

Kastamonu’dan sonra birçok acı olayın yaşandığı ünlü bir cezaevini de içerisinde bulunduran Sinop’a doğru yola çıktık. Öncelikle Hamsilos koyuna ulaştık. Tüm turda geçirilen zamanı sadece Hamsilos’ta denizin tadını çıkararak da geçirebilirdim. (Benzer cümleyi gezdiğim birkaç başka yer için de kullanacağım.)


Hamsilos koyu - Sinop

Bana göre bir yeri gezmek orayı tanımaya yetmiyor tat duyusu ile taçlandırmak gerekli.  Hamsilos’tan sonra Sinop merkeze, çok övdükleri Sinop mantısından tatmaya gittik. Şehrin yemekleri o bölge tarihinin nişanesi gibidir. Cevizli mantı Gürcü halkının Sinop üzerindeki etkisi hakkında belge niteliğindeydi. Çok da lezzetliydi:)


                     Yoğurtlu/Cevizli Karışık Sinop Mantısı

Sinop kotralarını da unutmamak gerekli. Bölgede önemli bir geçim kaynağı olur kendisi. (bkz.: kotracılık)


                       Kotracılık

Kotra satın alıp ekonomiyi canlandırdıktan sonra sıra gezmesi oldukça hüzün veren Sabahattin Ali’nin “Aldırma Gönül” şiirini yazdığı Sinop cezaevine geldi. Benim 2-3 dakika bile duramadığım koğuşlarda, kapısından içeri bakmaya korktuğum zindanlarda insanların yıllarca yattığını düşünmek gerçekten acı vericiydi. Orada kalanlar suçlu da olsa azami olarak insani şartların sağlanmasını bekliyor insan.



"Dışarıda serbest gezene
Hapiste yatan hor gelir."
Sabahattin Ali
Sinop cezaevinin hemen yakınında Diyojen’in heykelini bulmak bana oldukça ironik geldi. Hayatın anlamını sorgulatırcasına duruyordu orada:


“Gölge etme başka ihsan istemem.”

Sinop’tan sonra Ordu’ya geçip orada konakladık. Sabah Boztepe’de Ordu manzarasıyla içilen kahvenin tadı bir başka oluyormuş. Manzara için bkz.:


           Boztepe - Ordu

Kiliseden müzeye, müzeden camiye dönüştürülen Ayasofya’ya gelmişti sıra. Oranın da bende bıraktığı hissiyat faşizm en çok da din üzerinden gösteriyor kendini olmuştu. Adım başı cami varken (bir tane daha camiye hiç ihtiyaç yokken), içinde köklü bir tarihi barındıran bir kiliseyi cami yaparak güç gösterisi yapılmaya çalışılması faşizmden başka bir şeyle açıklanamaz doğrusu.


               Ayasofya Müzesi - Trabzon

Ayasofya’dan çıkıp telkari alışverişimizi yaptıktan sonra Akçaabat’ta yemeğimizi yedik. Tıkabasa yemek yemiş olmama rağmen tatlı sevmeyen bir insan olarak “ikinci porsiyonu istesem mi” diye düşündüğüm fındıklı saray burması hala aklımdan çıkmıyor:)



Sıra Sümela Manastırı’nda idi. Yükseklik korkusu olan bir insan için 1150 rakıma çıkmak ciddi anlamda bir macera:) Karester yaylasına(2200 rakım) çıkana kadar yaşadığım en büyük macera buydu. Ama gördüğüm güzelliğe değdi doğrusu.


Sümela Manastır’ından

Burayı gördükten sonra İstanbul’a nasıl dönebildiğime hala şaşırıyorum.



O gece Maçka’da konakladıktan sonra sabahına tura dahil olmayan, Karadeniz ile Orta Anadoluyu birbirine bağlayan Zigana geçidine oradan da Hamsiköy’de sütlaç yemeye gittik. Sütlaç çok lezzetliydi.


Hamsiköy Sütlacı

Sonrasında Fırtına deresi, Fırtına vadisi, Çamlıhemşin ve Zilkale. Üzerine de Ayder’e çıkınca Karadeniz’e aşık olmamak elde değil. Cennetin tasviri buralar baz alınarak yapılmış olmalı diye düşünüyorum. Ama maalesef HES denilen baş belası buradaki dereleri de yok etmeye ant içmiş gibi.



                                             Rize

Turda beni en çok meraklandıran kısım Batum olmuştu. İlk kez Türkiye sınırları dışına çıkıcak olmamın da bunda etkisi vardı tabi. Gümrükte Gürcü memurların muameleleri hakkında hiç güzel şeyler duymamama rağmen memurun, “Ozge, hoşgeldin” diye beni karşılaması çok hoşuma gitmişti:)
Batum hakkında söylenecek çok fazla şey varken ve söylenmişken bir nokta benim oldukça dikkatimi çekti. Sovyet Rusya zamanından kalma köylerden gelen işçilerin konaklaması için yapılmış lojmanları şehrin birçok yerinde görmek mümkün. Şehrin her tarafına Avrupai mimariyi hakim kılma çabası dikkati çekerken bu lojmanların göze hoş gelmediğini itiraf etmem gerekiyor. Ama burada yalnız ve güzel ülkemdeki mevsimlik işçilerin hallerini aklıma getirmeden edemedim. Doğudaki illerden Çukurova bölgesine gelen tarım işçilerinin 21. yy Türkiye'sinde hala çadırlarda berbat şartlarda konaklıyor olduğunu görmek burun kıvırdığımız Sovyet Rusya’dan öğrenmemiz gereken çok şey olduğunu hatırlattı bana bu lojmanlar. Tabi bahsettiğim lojmanların, özellikle sahil şeridinde olanların yıkıldığını ve yerine otellerin dikildiğini gördüm. Bir çokları için yeni hali daha güzel. Ama bana sorarsanız lojmanların balkonundan denizi seyredebilme özgürlüğüne sahip halkın görüntüsünü hiçbir otelin görüntüsüne değişmem.



Batum’da genel olarak meydanlara ve halkın ortak kullanımına açık alanlara oldukça önem veriliyor.
Batum’daki tek misafirperver ibadethane olduğu için Ermeni kilisesinin fotoğrafını buraya koymayı bir vefa borcu bilirim. (Not: Kiliseye ayakkabıyla girdik.)



Ertesi gün sıra Uzungöl ve Karester Yaylasına gelmişti.

                                                 Uzungöl


                                        Karester Yaylası (rakım 2200)

8 günlük gezi sadece bu iki yerden ibaret olsaydı bile yeterdi:)

Buradan sonra Trabzon’daki Atatürk köşkünü ziyaret ettik. Burada bulunan bir haritada Dersim bölgesi üzerinde Atatürk’ün yapmış olduğu bazı karalamalar mevcut. Atatürk'ün Dersim katliamı sırasında burada bulunuyor olması da dikkat çekiciydi benim için.




Sonraki gün Samsun’da Bandırma vapurunu ve Amasya’yı ziyaret ettik. Amasya hakkında elmasından başka bildiğim hiç bir şeyin olmaması garipti ve bilmediğim ne kadar çok güzellik  olduğunu hatırlatır nitelikteydi burası.



Ve son güne geldiğimizde bütün günümü son gün olmasına üzülmekle geçirdim. Bir hafta boyunca, daha önce hiç mutlu olmadığım kadar mutlu olmuştum. Ben her ne kadar hüzünlü olsam da o gün de diğer günler kadar güzeldi. Son gün Safranbolu ve Amasrayı gezdik. Safranbolu, yaşayan tarih. Oradaki saat kulesinin bakımını yapan seksen beş yaşında bir amca varmış ve bu işi bilen yaşayan tek kişiymiş. O amcanın çırağı olup bütün hayatımı saat bakımı yaparak geçirmeyi ciddi ciddi düşündüysem de şuan yaptığım işi de sevdiğimden bu hayalimi ileri bir tarihe erteledim şimdilik:)



Son durağımız Amasra oldu. Fatih Sultan Mehmet’in buranın güzelliği ile ilgili söylediklerine hak vermemek mümkün değil.


    “Lala lala, çeşm-i cihan bu m’ola?” - Fatih Sultan Mehmet

Amasra’dan sonra İstanbul’a doğru yola koyulduk. Ancak burada bize rehberlik eden Okan Sarıdiken’den bahsetmeden edemeyeceğim. Karadeniz aşığı bir Karadenizli ile Karadeniz’i gezmek kendimi çok şanslı hissettirdi. Tam bir yoldaştır kendisi. Tanıştığınıza gerçekten memnun olacağınız ender insanlardan:)



Turun tek kötü tarafı oraları gördükten sonra İstanbul’daki hayat daha az katlanılabilir bir hal alıyor. Bir sonra ki çıkacağım kültür turlarını düşünerek bir nebze kendimi teselli etmeye çalışıyorum.



27 Mart 2012 Salı

Redmine & Gitosis

Redmine , Ruby on Rails çatısı(framework) kullanılarak yazılmış bir proje takip sistemidir. Redmine bir çok özelliğinin yanı sıra svn, git gibi sürüm kontrol sistemleri ile birlikte çalışabilmektedir. Burada Ubuntu 10.04 server üzerinde Redmine ile bir Github klonu oluşturmayı  anlatacağım.

Ön hazırlıklar:

** İlk olarak sunucunun hostname'ini kontrol ediyoruz.
    /etc/hosts dosyasının ilk satırlarında şunlar olmalı

127.0.0.1       localhost
127.0.1.1       projetakip  (sunucuya projetakip ismini verdim)

   ya da   /etc/hostname dosyasına

 projetakip

   yazarak sunucuya bir FQDN (Fully Qualified Domain Name) vermiş oluyoruz.

   Değişikliklerin uygulanması için:
sudo hostname -F /etc/hostname

   komutunu çalıştırıyoruz.

   Ayarları tekrar kontrol etmekte fayda var:

ping projetakip

** Sunucuya yerel ağdan erişmek için öncelikle yerelde static ip tanımlayıp daha  sonra, /etc/hosts sonuna
192.168.1.241      projetakip
yazıyoruz. Bunu yapmamızın sebebi, Redmine gitosis eklentisinde kodun içinde direk sunucunun ip'sini yazmak yerine projetakip yazmaktır.

Bunu şu şekilde gerçekleştirmenizi öneririm:

echo 192.168.1.241 projetakip | sudo tee -a /etc/hosts > /dev/null

** sudo yapılandırması
sudo visudo
Komutunu kullanarak sudoers dosyasını açıp en sonuna şu satırı ekliyoruz:

%admin ALL=(ALL) ALL
Root olmayan bir sistem kullanıcısına sudo hakkı vermek için bu kullanıcıyı admin grubuna ekliyoruz.

** Gerekli paketler
sudo apt-get update
sudo apt-get install apache2 mysql-server git-core python-setuptools git-core build-essential acl

** ACL mount seçenekleri
Acl yapılandırmasını yapmamızın sabebi, Redmine ve Git aralarında haberleşirken erişim izinlerinden kaynaklanan sorunlar ile karşılaşmamaktır.

Eğer Redmine'ın kurulacağı /opt dizini root klasörüyle aynı diskte ise  /etc/fstab dosyasının içeriğini aşağıdaki gibi düzenliyoruz.

# /etc/fstab: static file system information.
#
# Use 'blkid -o value -s UUID' to print the universally unique identifier
# for a device; this may be used with UUID= as a more robust way to name
# devices that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    nodev,noexec,nosuid 0       0
/dev/mapper/projetakip-root /               ext4    acl,errors=remount-ro 0       1
# /boot was on /dev/sda1 during installation
UUID=24f32992-b428-42a1-b632-fd68c77f5470 /boot           ext2    acl,errors=remount-ro        0       2
#/dev/mapper/projetakip-swap_1 none            swap    sw              0       0
/dev/mapper/cryptswap1 none swap sw 0 0

Bunu yaptıktan sonra sunucuyu yeniden başlatmak gerekiyor.
Eğer /opt klasörü başka bir diskte ise:

mount -o remount,acl /opt

komutuna benzer bir komut kullanmamız gerekir.


Eğer,
mount | grep acl
komutunun çıktısı   
/dev/sda1 on / type ext4 (rw,acl,errors=remount-ro)
ise yapılandırmayı doğru yaptığımızı anlıyoruz.

** Python Paketleri
  Python paketlerini indirmenin en kolay yolu bence pip aracıdır.
  sudo apt-get install pip
  ile kuruyoruz.

  Daha sonra pip ile virtualenv paketini kuruyoruz.
  sudo pip install virtualenv
  Virtualenv farklı python sürümlerini kullanabilmemize olanak verir.

Redmine Kurulumu:

** Redmine kullanıcısını oluşturuyoruz,
sudo adduser --system --shell /bin/bash --gecos 'Redmine Administrator' --group --disabled-password --home /opt/redmine redmine

** Bitnami Redmine Stack kurulumu
Önce mysql ve apache'nin kapalı olduğundan emin olmamız gerekiyor:

sudo /etc/init.d/apache2 stop && sudo /etc/init.d/mysql stop

Bitname Redmine Stack installer'ı indiriyoruz.

wget http://bitnami.org/files/stacks/redmine/0.9.3-0/bitnami-redmine-0.9.3-0-linux-installer.bin
 
chmod 755 bitnami-redmine-0.9.3-0-linux-installer.bin
 
sudo -u redmine ./bitnami-redmine-0.9.3-0-linux-installer.bin 

komutuyla kurulumu gerçekleştiriyoruz.

Redmine kurulumu tamamlandı, http://server-address:8080/redmine/
şeklinde Redmine'a erişebiliriz.

Bitnami use_redmine adında bir script sunar. Bu script  ile Redmine yönetimi sağlanır

cd ~redmine
sudo -H -u redmine ./use_redmine

bu komut ile bir shell açılır. Herhangi bir Redmine yönetimi işleminden önce bu komut çalıştırılmalıdır.

Ayrıca Redmine stack servislerini yönetmek için ~redmine/ctlscript.sh  scripti kullanılır. Tabi ki bu da
sudo -H -u redmine ./use_redmine
komutuyla shell e düştükten sonra çalıştırılır.

** Redmine'ı sistem servislerini kullanacak şekilde yapılandırmak

Öncelikle şuan çalışmakta olan tüm Bitnami stack servislerini kapatın. 

sudo -H -u redmine /opt/redmine/use_redmine
./ctlscript.sh stop
exit 

Redmine veri tabanını Mysql kullanarak oluşturuyoruz:

sudo /etc/init.d/mysql start
mysqladmin --user=root --host=localhost create redmine

Redmine veritabanı yapılandırmalarını tekrar düzenlemek gerekiyor.
 ~redmine/apps/redmine/config/database.yml dosyasının "production" bölümünü şu şekilde düzenliyoruz:

production:
  adapter: mysql
  database: redmine
  host: localhost
  username: root     //mysql kullanıcı adı
  password:          // mysql kullanıcı parolası
  socket: /var/run/mysqld/mysqld.sock
Daha sonra rake aracıyla veritabanını göç ettiriyoruz. Bunu yapmadan önce  ~redmine/apps/redmine/ dizinine gitmek gerekiyor. Şu komutları çalıştırıyoruz:
 
sudo -H -u redmine ./use_redmine
cd apps/redmine
rake db:migrate RAILS_ENV=production
exit 

Apache2 nin Mongrel Cluster'a erişebilmesi için  ~redmine/apps/redmine/conf/redmine.conf dosyasında
 
ProxyPass /redmine balancer://redminecluster
ProxyPassReverse /redmine balancer://redminecluster

<Proxy balancer://redminecluster>
  BalancerMember http://127.0.0.1:3001/redmine
  BalancerMember http://127.0.0.1:3002/redmine
  Order deny,allow
  Allow from all
</Proxy>
şeklinde değişiklik yapmak gerekmektedir.

Apache2 sunucusunun yapılandırılması:
 
sudo a2enmod proxy*
echo Include /opt/redmine/apps/redmine/conf/redmine.conf | sudo tee /etc/apache2/conf.d/redmine > /dev/null

sudo /etc/init.d/apache2 start
sudo -H -u redmine ./use_redmine
./ctlscript.sh start redmine


Böylece Redmine, Apache2 ve Mysql ile çalışabilecek şekilde kurulmuş olur.


** Öntanımlı Redmine yapılandırmalarının yüklenmesi:
http://<server-fqdn>/redmine/ adresinden Redmine'nın web arayüzüne erişerek admin kullanıcı bilgileriye giriş yapıp öntanımlı yapılandırmalar yüklenmelidir.


** Redmine ve Gmail ayarlanması
 Redmine'nın, projelerdeki her değişikliği mail ile gönderebilmesi için email ayarlarının yapılması gerekmektedir. Bunu sunucuda ek bir servis çalıştırmak yerine Gmail kullanarak yapacağız. Sunucumuzun domain name'i bir mail hesabı olduğunu düşünelim. Google'ın Smtp sunucuları authentication için TLS tipini kullanmaktadır. Redmine'da bunun için bir eklenti mevcut. Öncelikle bu eklentiyi kuruyoruz:

sudo -H -u redmine ./use_redmine
cd ~/apps/redmine
script/plugin install git://github.com/collectiveidea/action_mailer_optional_tls.git


Sonra ~redmine/apps/redmine/config/email.yml dosyasını oluşturuyoruz.

Bu dosyanın içeriğini:

production:
  delivery_method: :smtp
  smtp_settings:
    tls: true
    address: "smtp.gmail.com"
    port: 587
    domain: "gmail.com"
    authentication: :plain
    user_name: "projetakip@gmail.com"
    password: "XXXXXXXX" 
 şeklinde düzenliyoruz.

Redmine'ı yeniden başlatıyoruz:

cd ~ 
./ctlscript.sh restart redmine 

Gitosis Kurulumu:
 Gitosis, Git depolarına erişimi yöneten küçük bir yazılımdır.
** Git kullanıcısının oluşturulması:
 
sudo adduser --system --shell /bin/bash --gecos 'Git Administrator' --group  --disabled-password --home /opt/gitosis git

** Ssh key pair:
    Gitosis erişimi public/private anahtar ikilisi ile yönetilmektedir. Her kullanıcı kendi ssh public/private anahtarını oluşturur. Bir git işlemi yapılacağı zaman bu anahtar çiftleri ile yetkilendirme yapılır. Gitosis authorized_keys'e bakarak public anahtara izin verir ya da engeller.
   Öncelikle gitosis için ana anahtar ikilisini oluşturmamız gerekmektedir:
sudo -H -u git ssh-keygen -t dsa
   
** Virtualenv oluşturma:
    Bunu yapmamızın sebebi sistemdeki mevcut python yapısını bozmadan gitosis için uygun python ortamının oluşturulması.
sudo -u git virtualenv ~git/virtualenv
** Gitosis kurulumu:
        sudo -u git ~git/virtualenv/bin/pip install git+git://eagain.net/gitosis.git 
        echo "source \$HOME/virtualenv/bin/activate" | sudo -u git tee -a ~git/.bashrc > /dev/null
** Gitosis deposunu oluşturmak:
sudo -u git cat ~git/.ssh/id_dsa.pub | sudo -H -u git ~git/virtualenv/bin/gitosis-init


Redmine Gitosis Eklentisi Kurulumu:
 **
 sudo -H -u redmine ~redmine/use_redmine
 gem install lockfile inifile
 cd ~/apps/redmine
 script/plugin install git://github.com/rocket-rentals/redmine-gitosis.git
 ** Gitosis yapılandırması:
    *  ~redmine/apps/redmine/vendor/plugins/redmine-gitosis/lib/gitosis.rb dosyasını şu şekilde düzenliyoruz:
      require 'lockfile'
      require 'inifile'
      require 'net/ssh'
      
      module Gitosis
     
     # server config  
   
      GITOSIS_URI = 'git@projetakip:gitosis-admin.git'
      GITOSIS_BASE_PATH = '/opt/gitosis/repositories/'
     
      # commands
      
      ENV['GIT_SSH'] = SSH_WITH_IDENTITY_FILE = File.join(RAILS_ROOT, 'vendor/plugins/redmine-gitosis/extra/ssh_with_identity_file.sh')

 GITISIS_URI , GITOSIS_BASE_PATH ve ENV['GIT_SSH'] değişiklik istemektedir.
*     ~redmine/apps/redmine/vendor/plugins/redmine-gitosis/extra/ssh_with_identity_file.sh dosyasının içeriği ide şu şekilde olmalı:
#!/bin/bash
LD_LIBRARY_PATH=""
exec ssh -i `dirname $0`/ssh/private_key "$@"
*
sudo -H -u redmine ~redmine/use_redmine
ssh projetakip 
Dedikten sonra projetakip'i knowhosts'ta eklemek gerekiyor. Parola sorma kısmına geldiğinde ctrl+c deyip çıkıyoruz.

* Migrate Plugin
sudo -H -u redmine ~redmine/use_redmine
rake db:migrate_plugins RAILS_ENV=production
cd
./ctlscript.sh restart redmine
exit 
* 
sudo -u redmine rm ~redmine/apps/redmine/vendor/plugins/redmine-gitosis/extra/ssh/private_key
sudo -u redmine ln -s ~git/.ssh/id_dsa ~redmine/apps/redmine/vendor/plugins/redmine-gitosis/extra/ssh/private_key
sudo setfacl -m user:redmine:r-x,mask:r-x ~git/.ssh
sudo setfacl -m user:redmine:r--,mask:r-- ~git/.ssh/id_dsa
  
 Daha sonra,
sudo -u redmine cat ~redmine/apps/redmine/vendor/plugins/redmine-gitosis/extra/ssh/private_key
 komutunun çıktısı:
  
-----BEGIN DSA PRIVATE KEY-----
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXX
-----END DSA PRIVATE KEY-----
gibi olmalıdır.

Son olarak,

        sudo setfacl -m default:user::rwx,default:group::r-x,default:other:---,default:user:redmine:rwx,default:mask:rwx ~git/repositories

komutunu çalıştırıyoruz.

Redmine'a admin kullanıcısıyla giriş yapıldıktan sonra redmine_gitosis eklentisinin aktif olduğundan emin olun.

Redmine & Gitosis kurulumu bu şekilde tamamlanmış oluyor.

Ancak Redmine Mongrel Cluster kullanıldığı zaman daha hızlı çalışmakta. Bunun için yukarıda anlatılanlara ek olarak [1] adresinden faydalanılabilir.

Kaynak: 
http://xdissent.com/2010/05/04/github-clone-with-redmine/

8 Aralık 2011 Perşembe

Ubuntu 10.04 Phpvirtualbox kurulumu

PhpVirtualBox, Virtualbox ürününün web arayüzüdür. Bu yazılımı ben, yerel ağdaki bir sunucunun Virtualbox arayüzüne kendi bilgisayarımın browserından erişmek için kullandım. PhpVirtualBox kurulumundan önce sunucuya erişebilmek için sabit IP belirliyoruz.

** Sabit IP ayarı şu şekilde yapılır:
  vim  /etc/network/interfaces
/etc/network/interfaces  dosyasına aşağıdaki satırlar eklenir.
auto eth0
iface eth0 inet static                   // eth0 ethernet  arayüzü IP adresini statik olarak alacağını belirtiyoruz.
address X.X.X.X                 // belirlenen statik IP adresi
netmask X.X.X.X    // ağ maskesi
gateway X.X.X.X        // ağa çıkış noktası (router, modem)
Network servisi yeniden başlatıldığında ayarlar da uygulanmış olacaktır.
  /etc/init.d/networking restart
Tabi bu ayar PhpVirtualbox'a özel bir ayar değil.
** [1] http://code.google.com/p/phpvirtualbox/downloads/list
[1] adresinden phpvirtualbox'ın son sürümünü indirip /var/www/ dizini altına açıyoruz.
        wget http://phpvirtualbox.googlecode.com/files/phpvirtualbox-4.1-5.zip
unzip phpvirtualbox-4.1-5.zip
mv phpvirtualbox-4.1-5 /var/www/
**  Elimizde /var/www/phpvirtualbox diye bir dizin olmuş oluyor. Bu dizinin içerisinde config.php-exaple dosyasının ismini config.php yapıyoruz. config.php içerisinde phpvirtualbox kurulan makinanın ayarlarına göre değişiklik yapıyoruz.
config.php içerisindeki
   var $username = 'user';
var $password = 'password';
alanlarına virtualbox kurulu bilgisayarın kulanıcı adı ve parolası yazılır.
**  Tarayıcıdan  http://ipadress/phpvirtualbox  şeklinde erişiyoruz.
**  Burada, öntanımlı gelen kullanıcı adı/ parola ,   admin/admin yazdığımızda bilgisayarımızda kurulu olan virtualbox arayüzüne erişmiş oluyoruz.
Phpvirtualbox arayüzüne eriştikten sonra karşılaşılacak hataların giderilmesi için şu ayarları kontrol edin:
** vboxwebsrv servisi çalışıyor mu (ps aux | grep vboxwebsrv)?
** config.php 'de yazdığınız username ve password kısımları virtualbox kurulu bilgisayarın kullanıcı adı ve parolası mı?

Ayrıca yeni bir sanal makine oluşturmak istediğinizde aşağıdaki ayarları yaparak birçok hatanın önüne geçebilirsiniz.
Ayarlar sekmesi:












 Kuruluma başlamadan önce sistem ayarlarını aşağıda görüldüğü şekilde değiştirmediğimiz zaman kuruluma başlayamıyoruz.

















Network ayarını resimde gösterildiği gibi yapmadığımız zaman ise sanal makine internete çıkamıyor.




PhpVirtualbox'ta bir sanal makinanın ekranını görüntülemek için ben rdesktop kullandım. Rdesktop kullanımı şu şekilde:

rdesktop IPADDRESS:PORT

Tabi bunu yapabilmek için virtualboxta  aşağıdaki ayarı yapmak gerekiyor:



24 Aralık 2010 Cuma

User-Manager Class Diagram


Toplantıda proje grubu ikiye ayrıldı ilk grup managerlar ile ilgilenecek, ikinci grup paketleme yapacak. Ben hiç bilmediğim bi konu olan paketlemeyi seçtim. Amacım paketlemeyi her yönüyle öğrenmek. User manager için yapacağım şimdilik son şey bir uml class diagramı oluşturmak oldu. Diagramın son hali bu eksik ve hatalar olabilir.

13 Aralık 2010 Pazartesi

TÜBİTAK'a ÇoMaK Soktuk:)

Tarih 10 Aralık 2010 saat 01:00... Çomak ekibi toplantı için yola çıkar. Esenler otogarına varana kadar herşey iyi gidiyordu. Ancak Metro turizmin azizliğine uğradıktan sonra baya bir gecikmeyle Gebze'ye vardık.
Ve TÜBİTAK... Herşey çok güzeldi. Oraya gitmeden de zaten orada çalışmak gibi bir hayalim bir isteğim vardı. Kapsüllü kapıları görünce biraz ürktüm gerçi ama çabuk geçti:) Kapsüllerin estirdiği soğuk hava Gökmen Göksel, Onur Küçük ve Erkan Tekman ile tanıştıktan sonra sıcacık oldu. Toplantıda önce özgür yazılım felsefesinden konuştuk (konuştuk desem de tam öyle değil aslında:)). Bu konuşma gerçekten çok faydalı oldu. Çok fazla şey öğrendim. Daha sonra ise projenin aşamalarından daha doğrusu "nasıl"ından bahsedildi. Ben nasıl kısmından çok TÜBİTAK ta gördüğüm ortamdan bahsetmek istiyorum. Ofis ortamında çalışmak zorunda kalan herkesin zevkle çalışacağı bir yer. Bu sanırım özgür yazılım felsefesinden gelen bir rahatlık (bir refah ortamı:)).
İkinci gün Özgürlük İçin'e röportaj vermek için gittik. Şimdi burada yazması kolay oluyor ancak gitmeden önce ve röportaj sırasında da oldukça heycanlıydım. O kadar ki ÇoMaK projesinin amacını söylerken bile tıkanıp kaldım, tamamen neredeyim, ben kimim sendromu oldu. Haftaya ajans pardus'u dinleyip görücez:) Ayrıca şundan da bahsetmeliyim ki "özgürlük için"deki ortamın da TÜBİTAK'taki ortamdan eksik kalır yanı yoktu (kapsüllü kapıları düşünmezsek tabi:)). Orada da çok şey öğrendim.Özgürlük İçin topluluk yöneticisi Ali Işıngör, ilerde özgür yazılım camiasında neler yapabileceğimiz konusunda bize çok değerli tavsiyelerde bulundu.

Kısacası bu İstanbul gezisinde ÇoMaK projesinin gidişatı haricinde özgür yazılımcıların aç kalmadığını öğrendim:) Ve elle tutulur gözle görülür bir projenin içinde bulunmaktan müthiş heyecan duydum. Bu heyecanı yaşamamızı sağlayan Necdet Hocamıza, yardımlarından dolayı Gökmen Göksel, Onur Küçük ve Erkan Tekman'a ,tavsiyelerinden dolayı Ali Işıngör'e çok teşekkür ediyorum.