Bloğa geri dön

Git ve VPS ile Otomatik Dağıtım Nasıl Yapılandırılır

Git ve VPS ile Otomatik Dağıtım Nasıl Yapılandırılır

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.

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:

Deployment with Git screenshot 1

Ardından, Git deposunu başlatın:

Deployment with Git screenshot 2

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:

Deployment with Git code screenshot 3

Geçerli dizini hooks:

Deployment with Git code screenshot 4

Şimdi, post-receive betiğini oluşturun:

Betiğin içine aşağıdaki kodu girin. Dizin konumlarını buna göre değiştirdiğinizden emin olun:

Deployment with Git code screenshot 6

Dosyayı kaydedin ve düzenleyiciyi kapatın. Dosyayı yürütülebilir olarak ayarlayın:

Deployment with Git code screenshot 7

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:

Configuring the Local Machine

Deployment with Git code screenshot 8

sample Git project directory:

Şimdi depoyu başlatın:

Deployment with Git code screenshot 9

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:

sudo git remote

Hadi test edelim. Proje dizinine bir kabuk betiği (shell script) ekledik:

project directory

Ardından, dosyayı projeye ekleyin ve bir commit gerçekleştirin:

Deployment with Git code screenshot 10

Bir sonraki komutta, projeyi canlı sunucusuna göndereceğiz (push):

Deployment with Git code screenshot 11

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::

Şimdi, beta dalı olarak görev yapacak bir Git deposuna ihtiyacımız var:

Depoyu başlatın:

sudo git init

Tıpkı daha önce olduğu gibi, bir post-receive betiği (script) uygulayın:

sudo nano

Bundan sonra, aşağıdaki kodu girin:

GNU nano

Dosyayı kaydedin ve editörü kapatın. post-receive dosyasını yürütülebilir (executable) bir dosya olarak işaretleyin:

sudo chmod
  • 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:

İşte bu kadar! Yerel depo artık beta uzak deposu ile yapılandırıldı. Değişiklikleri göndermeyi (push) deneyin:

sudo git add
  • 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:

Ardından, beta sürümünü live deposuna gönderebilirsiniz::

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!

author

Hark Labs

Yazar · CloudSigma

Preslav Dobrev, CloudSigma'da Kreatif Tasarımcı olarak görev yapmakta olup geleneksel ve yenilikçi pazarlama kanallarını kullanarak tutarlı bir kurumsal kimlik oluşturmaya odaklanmaktadır. Sanatsal vizyonu stratejik pazarlamayla harmanlayarak etkili marka anlatıları oluşturma konusunda oldukça yeteneklidir.

Yorumlar

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