Git yazılım geliştirme alanındaki en popüler versiyon kontrol sistemidir. Açık kaynaklıdır ve 2005'ten beri aktif olarak şu kişi tarafından sürdürülmektedir: Linus Torvalds, ünlü yaratıcısı Linux. Bugün, şaşırtıcı sayıda yazılım projesi (ticari olanlar dahil) sürüm yönetimi için Git kullanıyor.
Git, dağıtık bir mimari izler ve bu da onu mükemmel bir DVCS (Dağıtık Versiyon Kontrol Sistemi) örneği haline getirir. Git kullanarak hem yerel hem de uzak bir depoyu aynı anda yönetebiliriz. Bu kılavuzda, bir VPS ile bir Git projesinin otomatik dağıtımının nasıl yapılandırılacağını göstereceğiz.
Gereksinimler
Bu kılavuzda, VPS üzerinde bir yerel depo ve bir uzak depo olacaktır. Yerel depo, değişiklikleri uzak depoya gönderecektir. Uzak depodan, değişiklikleri beta veya live dalına gönderebiliriz. Bunu başarmak için öncelikle ilgilenmeniz gereken birkaç gereksinim vardır.
- Her ikisi de işletim sistemi olarak Ubuntu kullanan bir yerel makine ve bir uzak sunucu. Bu kılavuz, Ubuntu sunucularının nasıl yapılandırılacağını ve kurulacağını göstermektedir.
- Her iki makine de Git ile yapılandırılmıştır.
VPS'ye güvenli bir bağlantı kurmak için SSH kullanacağız. Neyse ki Git, uzak depolara bağlanmak için bir protokol olarak SSH'yi de destekler. Bu kılavuz, Ubuntu'da uzak sunuculara bağlanmak için SSH'nin yapılandırılmasını incelemektedir.
VPS'yi Yapılandırma
Uzak sunucumuzda aşağıdaki yapılandırmaya sahip olacağız:
- Canlı dizin: /var/www/dummy-domain.com
- Sunucu deposu: /var/repo/site.git
Yerel makineden Git, güncellemeleri VPS deposuna gönderecektir. VPS deposundan, Git'in bunu otomatik olarak canlı dizine göndermek için kullanacağı bir betik yapılandıracağız. Ayrıca beta sürümleri için bir depo yapılandırmak da mümkündür.
-
Depoları Oluşturma
VPS'ye bağlanın ve depo konumlarını oluşturun:
|
1 2 3 |
cd /var sudo mkdir -pv repo && cd repo sudo mkdir -pv site.git && cd site.git |
Ardından, Git deposunu başlatın:
|
1 |
sudo git init --bare |
Burada, --bare bayrağı, kaynak dosyaların olmayacağını, yalnızca sürüm kontrol bileşenlerinin olacağını belirtir.
-
Kancalar (Hooks)
Ardından, depo için kancaları yapılandıracağız. Her Git deposu, hooks adında bir klasör içerir. Bu klasör, kancalar ve çeşitli özel eylemler için şablon görevi gören örnek dosyalar barındırır.
Git'in resmi belgelerine göre üç tür kanca vardır:
- pre-receive: Sunucu bir gönderme (push) isteği alır almaz çalıştırılır.
- post-receive: Bir gönderme isteği tamamlandığında çalıştırılır.
- update: pre-receive'e benzer. Ancak dal (branch) başına bir kez çalışır.
Deponun konumundan, ls komutunu çalıştırın:
|
1 |
ls -l |
Geçerli dizini hooks:
|
1 |
cd hooks/ |
Şimdi, post-receive betiğini oluşturun:
|
1 |
sudo nano post-receive |
Betiğin içine aşağıdaki kodu girin. Dizin konumlarını buna göre değiştirdiğinizden emin olun:
|
1 2 |
#!/bin/sh git --work-tree=/var/www/dummy-domain.com --git-dir=/var/repo/site.git checkout -f |
Dosyayı kaydedin ve düzenleyiciyi kapatın. Dosyayı yürütülebilir olarak ayarlayın:
|
1 |
sudo chmod +x post-receive |
Artık her gönderme işlemi tamamlandığında, Git post-receive betiğine bakacak ve dosyaları buna göre yerleştirecektir.
Yerel Makineyi Yapılandırma
Uzak makine, gelen Git projesi güncellemelerini kabul etmeye hazır. Ardından, yerel depoyu VPS'yi uzak Git sunucusu olarak kullanacak şekilde yapılandıracağız.
Örnek bir Git proje dizini oluşturalım:
Şimdi depoyu başlatın:
|
1 |
sudo git init |
Deponun uzak yolunu tanımlamamız gerekiyor. Burada, uzak konumu live dalı olarak adlandıracağız. Ardından, aşağıdaki komutu çalıştırın:
|
1 |
sudo git remote add live ssh://<remote_username>@<remote_ip_address>/var/repo/site.git |
Hadi test edelim. Proje dizinine bir kabuk betiği (shell script) ekledik:
Ardından, dosyayı projeye ekleyin ve bir commit gerçekleştirin:
|
1 2 |
sudo git add . sudo git commit -m "random commit" |
Bir sonraki komutta, projeyi canlı sunucusuna göndereceğiz (push):
|
1 |
sudo git push live master |
Git, SSH kullanarak VPS'ye bağlanacaktır. Eğer SSH bağlantısı bir şifre kullanacak şekilde yapılandırılmışsa, Git kimlik doğrulama şifresini isteyecektir.
Beta Deposu
Ya proje tek bir adımda yayına alınmayacaksa? Belki de bir beta dizini içinde daha fazla test edilmesi gerekiyordur. Şimdiye kadar açıklanan yöntemi kullanarak, VPS üzerinde beta dalı (branch) olarak adlandırılan başka bir dal oluşturabiliriz.
-
VPS üzerinde Beta Dalının Yapılandırılması
İlk olarak, VPS için dizinleri oluşturmamız gerekiyor. VPS'ye bağlanın ve /var/www altında bir dizin oluşturun::
|
1 2 |
cd /var/www sudo mkdir beta |
Şimdi, beta dalı olarak görev yapacak bir Git deposuna ihtiyacımız var:
|
1 2 |
cd /var/repo sudo mkdir -pv beta.git && cd beta.git |
Depoyu başlatın:
|
1 |
sudo git init --bare |
Tıpkı daha önce olduğu gibi, bir post-receive betiği (script) uygulayın:
|
1 2 |
cd hooks sudo nano post-receive |
Bundan sonra, aşağıdaki kodu girin:
|
1 2 |
#!/bin/sh git --work-tree=/var/www/beta --git-dir=/var/repo/beta.git checkout -f |
Dosyayı kaydedin ve editörü kapatın. post-receive dosyasını yürütülebilir (executable) bir dosya olarak işaretleyin:
|
1 |
sudo chmod +x post-receive |
-
Yerel Makineye Beta Deposunun Eklenmesi
Artık beta deposunu yerel depomuza eklemeye hazırız. Yerel proje dizininin içinden aşağıdaki Git komutunu çalıştırın:
|
1 |
sudo git remote add beta ssh://<username>@<remote_ip_address>/var/repo/beta.git |
İşte bu kadar! Yerel depo artık beta uzak deposu ile yapılandırıldı. Değişiklikleri göndermeyi (push) deneyin:
|
1 2 3 |
sudo git add . sudo git commit -m "beta version" sudo git push beta master |
-
VPS'de Beta'dan Canlıya (Live) Geçiş
Diyelim ki tüm değişiklikler beta deposunda birikti. Değişiklikleri live deposuna nasıl gönderirsiniz? Çok basit. VPS üzerindeki beta deposu içinde, yerel live deposunu ekleriz. Ardından, sadece beta sürümünü live deposuna göndeririz.
VPS'ye bağlanın ve aşağıdaki komutları çalıştırın:
|
1 2 |
cd /var/repo/beta.git sudo git remote add live ../site.git |
Ardından, beta sürümünü live deposuna gönderebilirsiniz::
|
1 |
sudo git push live master |
Son Düşünceler
Bu kılavuz, Git projeniz için bir VPS'yi uzak depo olarak nasıl yapılandıracağınızı ve kullanacağınızı başarıyla göstermektedir. VPS, herhangi bir karmaşık işlem olmaksızın en son kodları ve dosyaları otomatik olarak dağıtabilir (deploy). Ayrıca birden fazla geliştirme ekibi arasında iş birliği merkezi olarak da görev yapabilir.
Git yardımıyla, otomatik dağıtım için basit bir mekanizma kurabilirsiniz. Ancak düzgün bir proje yönetimi için GitLab gibi bir araç kullanılması önerilir. Aşağıdaki kılavuz, birden fazla projeyi yöneten bir VPS üzerinde GitLab'in nasıl kurulacağını ve dağıtılacağını göstermektedir. Ayrıca, Ubuntu 20.04 üzerinde GitLab Sürekli Entegrasyon (CI) hatlarının (pipelines) nasıl kurulacağını.
Keyifli Kodlamalar!















Yorumlar
Henüz yorum yapılmamış. İlk siz olun.