15 Nisan 2014 Salı

Apache Tomcat & Jenkins

CI server olarak kullanacağımızı belirttiğimiz Jenkins aracı java dilinde geliştirilmiş ve sitesinde hem kurulum şeklinde bir paketle hem de war (Web Archive) dosyası olarak yayınlanmaktadır. Biz sürecin tamamına hakim olmak her istediğimizi tune edebilmek istiyoruz bu sebeple war paketi ile çalışacağız. Web arşivi ile çalışacaksak bu web arşivini deploy edebileceğimiz bir sunucu yazılıma ihtiyacımız bulunmaktadır. Burada en kısa yoldan bize çözüm sunacak Apache Tomcat i tercih ediyoruz.

Ön gereksinim olarak Java run time ihtiyacımız olacak onu da bu linkten indirebilirsiniz. Linkte server jre paketleri bulunmakta. Bu paket hem jre içermekte, hem de Java uygulamalarınızı takip edebileceğiniz monitör uygulamaları gibi bazı araçları da içermektedir. En önemlisi production ortamlardaki can sıkıcı Java update özelliği gelmiyor bu pakette. 

1. Java Run Time Kurulumu:
  1. Daha önce indirme linkini verdiğimiz dosyanın uzantısı tar.gz'dir. Winrar ile açıldığında direk olarak karşınıza jdk1.8.0 dizini çıkacaktır. 7.zip ile açtığınızda içerisinde .tar uzantılı bir dosya görünecektir, onu da 7zip içerisinde iken çift tıklarsanız jdk1.8.0 dizinini göreceksiniz.
  2. Bu dizini CI_Working_Engine klasörü altına aynen koyalım.
  3. Ardından Windows'da Control Panel --> System and security --> System --> Advanced System Settings altında Environment Variables dialogunda yeni bir sistem değişkeni tanımlayalım. Girilecek değerleri aşağıdaki şekildeki gibi uygun olacak şekilde girelim.
  4. Tamam deyip çıktığımızda artık Java uygulamalarının Java kurulumu nerede diye aradığı JAVA_HOME değişkeni set edilmiş olacak.
Java uygulamalarımız için Java kurulum dizinini bir sistem değişkeniyle belirtiyoruz
Notlar:
  1. Aşağıdaki komut satırı işlemlerini admin hakları ile yapmanız gerekmektedir. Servis kurma kaldırma gibi işlemler nedeni ile bu şart. Bu sebeple komut satırını "Yönetici olarak aç (Run as admin)" seçeneği ile açmalısınız. Aksi takdirde ya işlemleriniz olmayacak ya da oldu gibi görünen işlemler hata vererek başınızı ağartacaktır.
  2. Kurulumlara başlamadan önce rahatça log ve konfigürasyon dosyalarını incelemek-karşılaştırmak için Notepad++ ve ardından compare plug-in ini kurmanız sizi rahatlatacak ve de size zaman kazandıracaktır. Zira bu tip text dosyaları ile artık çokça haşir neşir olacaksınız. Plug-in dosyasını manuel kuracaksanız sadece dll dosyasını Notepad++ kurulum dizinindeki plugins klasörüne atmanız yeterli. Build makineniz internete açıksa zaten online olarak notepad++ plugin manager menüsünden istediğiniz eklentiyi kurabilirsiniz.

2. Apache Tomcat Kurulumu:
  1. Adresinden 64 bit Windows zip olan sürümü indirelim.
  2. CI sunucusu olarak belirlediğiniz bilgisayarda bu dizini açalım. Mesela bu dizin E altında CI_Working _Engine dizini olsun. (Anlaşılabilir olsun diye kendi dizin yapımı örnek olarak alacağım)
  3. Komut satırında E:\CI_Working_Engine\apache-tomcat-8.0.5\bin\ adresinde iken startup.bat dosyasını çalıştırdığımızda JAVA_HOME veya JRE_HOME adreslerine sahip olmadığımızı belirten bir hata alabiliriz. Java run-time kurulumunu bir önceki adımda yapmıştık.
  4. Java kurulumundan sonra tekrar denediğimizde (yeni komut satırı penceresi gerekli) aşağıdaki ilk pencerenin Tomcat i çağırıp ikinci bir komut satırında çalıştırdığı görülür. (Çalıştığını görmek için, ilerleyen bölümlerde bulunan chrome ekranındaki gibi, tarayıcı ile de 8080 port kontrolü yapılabilir, tabii sağ tarafta log bilgileri ile birlikte görünen Tomcat konsol sürekli açık olmak zorunda)
Tomcat uygulama sunucumuz konsoldan da olsa çalışıyor
Pratik Notlar:
Gerçekten bir CI sistem kuruyor isek yapmışken düzgün yapmalıyız. Öyleyse Tomcat bu şekilde elle manuel değil, Windows servisi olarak otomatik ayağa kalkabilmelidir. Tomcat penceresinde iken ctrl + c yapıp sunucu uygulamamızı kapatalım ve yine komut satırında bin klasörünün altındaki "service.bat" şeklindeki bat dosyasını aşağıdaki resimdeki gibi install seçeneği ile çalıştıralım.
Tomcat uygulama sunucusunu servis olarak kurma

Anlayacağınız üzere Tomcat i servis haline getiren komutlar service.bat dosyası içerisinde saklı. Biraz vakit ayırıp kurcalarsanız servis adı, install, uninstall gibi çalıştırma şekillerini dosya içerisinde bulabilirsiniz. Yukarıdaki işlemin ardından Windows servis listesini kontrol ederseniz ("services.msc"), görünür ismi "Apache Tomcat 8 Tomcat 8", servis adı "Tomcat 8" olan servisimizi görebilirsiniz.

İp ucu 1: Windows'da bir servis silmek için komut satırında "Sc delete servis_adı" komutunu kullanabilirsiniz. Servis adını da, Windows'da ara menüsüne "services.msc" komutunu yazarak çalıştırıp, ilgili servise çift tıkladığınızda erişebilirsiniz.

İp ucu 2: Yeri burası diye söylemiş olalım. Oluşturduğunuz bu Tomcat 8 servis altında deploy edeceğimiz herhangi bir uygulama (Biz jenkins deploy edeceğiz) network üzerinde her hangi bir makineye erişmesi gerekirse, bir yere bir dosya yazması gerekirse otantikasyon olarak, servisi çalıştıran login bilgilerine göre otantikasyon yapacaktır. Yani bir domainde iseniz ve bir kullanıcının bu yazacağınız adres veya erişeceğiniz makineye erişim yetkisi varsa, erişimi sağlamak adına servisi bu kişinin login bilgileri ile başlatmanız gerekir. Aksi takdirde servis çalışır fakat Tomcat log dosyalarında "Access Denied", "No permission" vs. yetki hataları aldığınızı görürsünüz. Servisi erişime yetkili kılmak için "services.msc" açıldıktan sonra "Apache Tomcat 8 Tomcat 8" servisimize çift tıklayın ve log on sekmesindeki "This account" kısmına yetkili kişinin (domain kullanıcıları da dahil) giriş bilgilerini girin. Varsayılan olarak lokal makinenin sistem hesabı çalışıyor, fark etmişsinizdir. Bu anlattığım erişim bilgisi şu an için gereksiz gibi dursa da; ileri de CI sisteminiz ayağa kalktıkça bu gereksinim karşınıza eninde sonunda çıkacaktır. Zira tüm kaynaklarınızın build makinesinde lokal olarak bulunabileceğini sanmıyorum. Mesela kendi örneğimizde, Jenkins ağda farklı bir yerlere erişmeye kalktığında (kuracağınız farklı eklentiler bunu yapmak isteyebilir) eğer Tomcat servisimiz yetkisiz bir kişi ile başlatılmışsa hata almamız kaçınılmazdır. Erişim mevzusu ile alakalı Jenkins için yazacağınız ANT scriptleri için de "SSH" bağlantı kurma konusu var ileride yeri gelince onu da anlatacağım. Kısacası SSH size iki makine arasında güvenli ve yetkilendirilmiş bir bağlantı kurmanıza yarar, böylece SSH destekli script kodlarınız ile farklı makinelerde yetki gerektiren işlemleri yapabilirsiniz. Diğer bir husus da servisi çift tıkladığınızda "Startup-type" olarak görünen kısmı da otomatiğe çekerseniz build makineniz kapanıp açılsa dahi servis otomatik çalışacaktır ki zaten böyle olmasını istiyoruz. Bunlar pratikte gerçek bir CI sistem için ufak ama karşınıza çıkacak önemli noktalardı.

Servisler penceresinde iken sağ tuş start dediğinizde Tomcat servisimiz başlayacaktır. Kontrol için bir web tarayıcı ile 8080 (Tomcat default port) portunu kontrol edebilirsiniz.

Tomcat uygulama sunucumuz çalışıyor hem de Windows servisi olarak !


Tomcat çalışırken oluşan log dosyalarını Tomcat çalışma dizinindeki logs klasöründe bulabilirsiniz. Buradaki "Catalina_tarih.log" dosyasını inceleyebilirsiniz, genelde incelenen temel log dosyası kendileri oluyor.

Tomcat Yetkilendirme Mekanizmasını Kurma
Gerçekten bir CI sistemi ayağa kaldırmayı hedeflediğimize göre uygulama sunucumuzun yetkilendirme mekanizmasını kurmamız gerekli. Tomcat varsayılan olarak yönetim ekranlarına erişimi kapalı olarak gelmektedir. Örnek vermek gerekirse yukarıda chrome ile görüntülenen Tomcat ana ekranında sağ tarafta bulunan Manager App butonunu tıkladığınızda sizden login bilgisi isteyecektir. Fakat ne yaparsanız yapın ne girerseniz girin kaçınılmaz olarak aşağıdaki ekran ile karşılaşacaksınız.

Tomcat yetkilendirme mekanizması henüz kurulmamış
Bu ekran bize aslında ilk defa kurulum yapanların Tomcat'de credential bilgilerini nasıl konfigüre edeceğimizi yazılı olarak belirtiyor. Biz de aynen yazılanlar gibi Tomcat çalıştırma dizininde conf klasörü altında bulunan "tomcat-users.xml" dosyasını Notepad++ ile açalım ve eklemelere başlayalım. Tüm yorum satırları aynen kalsın, tomcat-users etiketleri arasına aşağıdaki aşağıdaki eklemeleri yapalım:

<role rolename="manager-gui"/>
<user username="admin" password="admin" roles="manager-gui"/>

Bu şekilde bir kullanıcı adı ve şifre belirlemiş olduk ve bu kullanıcıya Tomcat için tanımlı rollerden birini atamış olduk. İstediğiniz kullanıcı adı ve şifreyi belirlemek size kalmış.

Artık Manager App butonuna tıkladığımızda karşımıza çıkan login ekranında admin / admin bilgilerini girdiğimizde karşımıza aşağıdaki ekran çıkacaktır. Bu da Tomcat'de yetkilendirme kısmını temel de olsa çözdük demektir.

Tomcat Manager App ekranı







3. Jenkins Kurulumu:
  1. Adresinden Latest and greatest yazan war paketi versiyonu indirelim. (Şu anki güncel versiyon 1558)
  2. Tomcat servsimizi durdurup, bu war dosyasını Tomcat klasöründe bulunan webapps klasörüne koyalım, Tomcat servisimizi başlatalım hepsi bu :)
  3. Web tarayıcımızda localhost:8080/jenkins adresine bakarak Jenkins aracımızın çalıştığını görelim.
Jenkins ana ekranı

Bir sonraki yazımızda Jenkins sürekli entegrasyon sunucumuzu inceleyip konfigüre edeceğiz.





Hiç yorum yok :

Yorum Gönder

Bu sayfalarda iseniz sizden de tecrübelerinizi paylaşmanızı bekliyorum... Görüş, öneri veya istek fark etmez.