Linux kategorisi

Gereksiz dosyaların git deposuna eklenmesini engellemek

Bunun için proje köküne “.gitignore” adında bir dosya oluşturup örnekteki içeriği ekleyebilirsiniz. Aşağıdaki örnek içerikte bulunan uzantılar ve dosyaların haricinde depoya gitmesini istemediğiniz dosyalar ve ya dosya türleri varsa bu listeye ekleyebilirsiniz. Aynı zamanda bu dosyayı git deposuna eklemenizi proje ortaklarınız içinde faydalı olacaktır. Böylelikle bütük kullanıcılarda aynı dosyalar bir kerede engellenmiş olur.

Devamı...

Uzak sunucudaki git deposunu yerele çekmek

Uzak sunucudaki git deposunu yerele çekmek diğer anlamıyla, remote repo’yu clone’lamak için aşağıdaki adımları takip edeceğiz.
Yerel makinede projenin klonlanacağı klasöre geçiyoruz. Örnekte “~/dev/” klasörünü kullancağım

[email protected]:~/dev/git clone [email protected]:project.git

Cloning into ‘project’…
Enter passphrase for key ‘/home/veli/.ssh/id_rsa’:
warning: You appear to have cloned an empty repository.
Checking connectivity… done.

Yukarıda daha önceki yazımda “gitolite” aracılığı ile ilklendirmiş olduğumuz boş depoyu yerelimize klonlamış olduk. Bundan sonra yapılacak olan iş proje klsörü içine proje dosyalarını koymak ve bunları depoya göndermek. Dosyaları ekledikten sonra depoya göndermek için şunları yapıyoruz:

Devamı...

Gitolite ile Git’e kullanıcı eklemek

Eklenecek kullanıcının public_key’i alınır. Bunun için kullanıcın bilgisayarında, geliştirme için kullanılan kullanıcı hesabı ile login olunur ve aşağıdaki komut çalıştırılır.

[email protected]:~/ ssh-keygen -t rsa -C “[email protected]

bu komut ile kullanıcın home klasöründe bulunan .ssh klasörü altında “[email protected]” isimli bir public key oluşur. Bu public key dosyası gitolite yönetici olan kullanıcıya iletilir. gitolite yöneticisi olan kullanıcı, bu public key dosyasını “gitolite-admin/keys” klasörüne yerleştirir ve gitolite deposuna ekler

[email protected]:~/gitolite-admin/git add keydir/[email protected]

Sonrasında eklenecek kullanıcı için git kullanıcısı oluşturulur:

Devamı...

Kendi Git deponuzu kurun ve Gitolite ile yönetin

Bu doküman ile Ubuntu sistemlerde git sürüm yönetim sistemini kolaylıkla kurup rahat bir şekilde yönetebilirisiniz. Öncelikle ubuntu sistemlerinde git sürüm yönetim sistemi nasıl kurulur onu inceleyelim

  • Git sürüm yönetim sistemi kurulumu:

[email protected]:~/ sudo apt-get install git-core

Hepsi bu 🙂

  • Gitolite ile Git yönetimi:

Git sürüm yönetim sisteminin komut dilini ezberlemek ve her seferinde hatırlamaya çalışmak biraz sıkıntılı, özellikle de yeni depo kurmanız ve kullanıcı ve dahi haklarını yönetmeniz gerekiyorsa…

Gitolite bu işleri basitleştirmek amacıyla, daha önceden var olan az daha sorunlu, sıkıntılı ve artık geliştirilmesi bırakılmış olan Gitosis yerine oluşturulmuş bir projedir. Amaç depo ve kullanıcı yönetimini basitleştirmek, sistem yöneticilerinin kendilerine daha fazla zaman ayırabilmelerini sağlamaktır :p

Ubuntu sisteminde gitolite kurmak ve sürüm yönetim sistemini bunun üzerine taşımak için git sürüm yönetim sistemini kurduktan sonra aynı yöntem ile gitolite’ı sisteme kuracağız. Ancak bunu yaparken uzak sunucu kullanmak isteyeceğinizi varsayarak sistemi yapılandıracağız. Bunun için uzak sunucuya ssh ile giriş yaptıktan sonra süper kullanıcı konumuna geçmeniz gerekli.

Devamı...

RAID 1 sistemin tek diskini başka makineye bağlayıp yedek almak

Farz-ı misal yedekleme için kullandığınız veri yolları yavaş çalışan bir Software RAID 1 üzerinde koşan makinanız var. Zaman içinde bu makinanın diskinin dolması ile yedeklerin arşiv disklerine kayıt edilme zamanı geldi diyelim. Arşiv olarak kullanmak üzere aldığınız diske verileri aktarmanız gerekiyor ama başta dediğim gibi yedekleme makinasının veri yolları o kadar yavaş ki içindeki yedekleri arşiv diskine aktarması günler alacak.

Normalde yavaş veri yolu olan bir makineden veriyi içindeki diski daha hızlı bir makineye takarak almayı tercih edenlerdenim, ancak şimdiye kadar SoftRAID 1 üzerinde koşan bir makinadan bu şekilde veri çekmemiştim.

Veri yüklü diski söktüm arşiv diski ile birlikte hızlı bir makineye bağladım ve sistemi boot ettim...

Devamı...

Amazon S3 buketini Linux’a mount etmek

Eğer Amazon S3 servisindeki buketinizin içindeki dosyaların bilgisayarınızdaki kopyalarında değişiklik yaptıktan sonra illaki Firefox s3 organizer gibi bir eklenti ya da s3cmd gibi bir linux konsol komutu üzerinden buketteki dosyayı güncellemekten sıkıldıysanız, fuse tabanlı s3fs ile buketlerinizi yerel makinenize mount ederek dosya sisteminin bir parçası gibi kullanabilirsiniz.

Malesef şimdilik Ubunut paket deposunda bulunmamakta ancak kaynaktan kurulum düşündüğünüz kadar zor değil. Sadece kaynağı derlerken gerekli olan bağımlılıkların sisteminizde kurulu olması gerekmekte. Kuruluma hazırlık için öncelikle bu bağımlılıkları kurmanız gerekmekte:

# sudo apt-get update

# sudo apt-get install build-essential gcc libfuse-dev fuse-utils libcur...

Devamı...

Yarım kalan recovery ve kullanıma girmeyen RAID array bölümü.

Başıma gelen bir diğer sorun ise recovery’nin bir şekilde yarım kalması ve bu yüzden RAID arraye ait bölümün birisinin kullanıma girmemesiydi ([_U] durumu).

Tekrar recvery denediğimde bana “Device or Resource Busy” hatası döndürdü durdu.

# mdadm –manage /dev/md0 –add /dev/sda1
mdadm: cannot open device /dev/sda1: Device or resource busy

MD array’indeki bölümü durdurmama bile müsaade etmedi.

# mdadm –stop /dev/md2 /dev/sda3
mdadm: fail to stop device /dev/sda1: Device or resource busy

İnanılmaz birşey ancak bir türlü durmuyordu. Onu durdurabilmek için baya bir uğraştıktan ve araştırdıktan sonra öncelikle failed olarak işaretlemem ve ardından remove etmem gerektiğini öğrendim.

# mdadm –fail /dev/md2 /dev/sda3
mdadm: set /dev/sda3 faulty in /dev/md2

# mda...

Devamı...

inactive RAID array sorunu.

RAID recovery sırasında ilk karşılaştığım sorun inactive raid array oldu. Bir arrayin inactive olup olmadığını anlamak için “# cat /proc/mdstat” komutu çıktısına bakmanız yeterli. Eğer çıktıda listelenen md’lerin karşılığında hepsinde “active” yazıyorsa sıkıntı yok demektir.  Aşağıda örnek bir çıktı görebilirsiniz.

Personalities : [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] [linear] [multipath]
md0 : inactive sdb1[1](S)
2102464 blocks

md1 : active raid1 sda2[0] sdb2[1]

Bu durumda md0 için restorasyon işlemini muhtemelen başlatamayacaksınız. Sorunu çözmek için arrayleri tekrar taramasını sağlamak gerk bunun için aşağıdaki komutu veriniz:

# mdadm –examine –scan
ARRAY /dev/md0 level=raid1 num-devices=2 UUID=158bb15a:5c2c4636:776c2c...

Devamı...

RAID1 array’i yeniden yapılandırma.

Önceki yazımızda RAID arrayde bulunan bozuk diskin nasıl tespit edileceğini görmüştük. Bu yazımızda bozuk diskin yerine takılan yeni diskin array’e nasıl ekleneceğini göreceğiz. Normalde ubuntu sunucular bu işi yeni disk takılıp sistem açıldıktan sonra otomatik olarak yapmaya başlayabiliyor, ancak zaman zaman sorunlar ile karşılaşmak mümkün oluyor. Örneğin benim vereceğim örnekte md1 array’i nedense inactive durumda. Bu sorunla yüzleştiğimizde neler yapılabilir beraber bakalım:

(Not: bu işlemleri yaparken, herhangi bir veri kaybı yaşamanızdan sorumlu olmadığımı tekrar belirtmek isterim. Önceki yazıda bulunan kurallar aynen bu yazı için de geçerli.)

Öncelikle yeni diskte eş bölümleri oluşturmamız gerekmekte...

Devamı...

Ubuntu sunucuda RAID1 array içindeki bozuk diski bulmak.

RAID1 sistemdeki diskin bir tanesi bozulduğu zaman izlenecek yöntemler:

Öncelikli işlem sistem henüz açık iken yedek almaktır. Her zaman yedeğinizi alın! Bu işlem sonucunda sisteminizde oluşabilecek sorunlardan tamamen siz sorumlusunuz. Ben yaptım oldu ancak sizin sistemde de aynı sonucu vermeme olasılığı her zaman vardır ve veri kaybı yaşamanız bu olasılık dahilindedir. Bu yüzden bu adımları uygularken yaşayacağını hiçbir kayıptan ben sorumlu değilim. 🙂

Canlı sistemin yedeğini aldıktan sonra bozuk diskin hangisi olduğunu bilmiyorsanız öncelikle bunu tespit etmemiz gerekir.

Sistemde root kullanıcı haklarına nail olup (# sudo -s) /var/log/ altındaki messages log dosyasının içine bakarak bozuk diskin hangisi olduğunu anlayabiliriz...

Devamı...