Perşembe, Ağustos 06, 2015

SharePoint'e Solution Deploy Etmek

SharePoint'te Solution'lar Full Trust ve User Solution's olarak ikiye ayrılır. Bunu daha basit anlatacak olursak eğer sunucuya RDP ile bağlanıp sunucunun her şeyini kontrol edebiliyorsanız Full Trust Solution deploy edebilir ve tüm Farm'ı etkileyecek seviyede işlemler yapabilirsiniz. Office 365 üzerinde kod geliştiriyorsanız doğal olarak burada size herhangi bir sunucu erişimi verilemez ve sadece kendi SiteCollection'ınızı etkileyecek seviyede geliştirme yapabilirsiniz bunu da SandBoxed Solutions olarak adlandırırız ve arayüz üzerinden kolaylıkla siteye Deploy edebilirsiniz. Bu yazımızda Farm Solutions'ı ele alıp bunun Deployment yöntemleri hakkında konuşacağız.

Öncelikle pek çok yerde görülen bir hatayı ele almak istiyorum. Sunucuya Solution Deploy etmek için canlı sunucuya Visual Studio yükleyip ardından Solution'ı burada açıp Deploy etme yöntemi pek çok Developer tarafından maalesef tercih ediliyor. Bu yöntem oldukça yanlış ve riskli bir yöntemdir. Eğer canlı sunucuya Visual Studio kurduysanız Debug'da yapabilirsiniz ve varsayılan ayarlarda kodlar geri çekileceği için bir şeyi düzelteyim derken sistemi tamamen çalışmaz hale getirebilirsiniz. Viual Studio aracılığı ile IIS üzerinde de kolaylıkla işlem yapabiliyor olmanız sistemi patlatmak için açıkçası süper bir fırsat. Bu ve bunun gibi nedenlerden dolayı canlı ve test ortamlarına kesinlikle Visual Studio kurmayı önermiyoruz hatta yasaklıyoruz diyebiliriz. Peki WSP dosyalarını nasıl deploy edeceğiz?

Sistemde var olan Solution'ları görüntülemek için Central Administration Site ara yüzünden faydalanabiliriz. Central Administration Site üzerinde sol menüden System Settings buradan da Manage Farm Solutions linkine tıklayarak şu anda Farm'da yüklü olan Solution'ları görebilirsiniz. Buradan var olan bir Solution'ı silebilir, farklı WebApplication'lara Deploy edebilir ancak buraya yenisini ekleyemezsiniz. Buraya yeni solution eklemek için PowerShell'den faydalanmak gerekiyor. Sisteme yeni bir Solution eklemek için Add-SPSolution komutunu kullanmalıyız. Bu komut oluşturmuş olduğunuz bir WSP dosyasını Farm'a Deploy Edecektir. Aşağıda Add-SPSolution komutunun kullanımını ve bu konuda hayatımızı kullanacak bir kaç komutun açıklamaları yer almaktadır. Bu komutları çalıştırabilmeniz için mutlaka Farm Yöneticisi olmanız gerekir ve SharePoint Management Shell'i Run As Administrator komutu ile açmış olmanız gerekmektedir.

Add-SPSolution
Farm'a yeni bir Solution eklemek için kullanılır. Ara yüz üzerinden bu işlem yapılamaz ve en basit hali aşağıdaki komut kullanılmalıdır.

Add-SPSolution -LiteralPath c:\TCM\SPDeployTest.wsp
Detaylı Bilgi: https://technet.microsoft.com/en-us/library/ff607552.aspx 

Bu adımın ardından Solution Farm'a eklenmiştir anacak referansları WebApplication'lara eklenmemiştir. Solution'ı ilgili Web Application'lara Deploy etmek için aşağıdaki komut kullanılabilir.

Install-SPSolution
Farm'da var olan bir Solution'ın tüm WebApplication'lara ya da herhangi bir tanesine Deploy edilmesine olanak tanır. Bu işlemi ara yüzden de yapabilirsiniz. Solution'ın üzerinde tıklayıp Deploy demeniz yeterli.

Install-SPSolution -Identity SPDeployTest.wsp -GACDeployment -WebApplication http://burakbatur.com
Detaylı Bilgi: https://technet.microsoft.com/en-us/library/ff607534.aspx 

Uninstall-SPSolution
Bir Solution'ı Farm'dan ya da tek bir WebApplication'dan kaldırmak için bu komutu kullanabilirsiniz. Bu işlemi de ara yüzden yapma şansınız vardır. Ara yüzde bu komutun karşılığı retract'tir.

Uninstall-SPSolution -Identity SPDeployTest.wsp
Detaylı Bilgi: https://technet.microsoft.com/en-us/library/ff607873.aspx

Update-SPSolution
Var olan bir Solution'un yeni versiyonunu atmak için aşağıdaki komutu kullanabilirsiniz. Bu işlemi ara yüz üzerinden gerçekleştirme şansınız yoktur bu sebeple PowerShell ile ilerlemek durumundayız.

Update-SPSolution -Identity SPDeployTest.wsp -LiteralPath c:\TCM\SPDeployTest.wsp -GACDeployment
Detaylı Bilgi: https://technet.microsoft.com/en-us/library/ff607724.aspx

Solution Deployment Hakkında Önemli Uyarılar
Farm'a Solution Deploy ederken ve ettikten sonra aşağıdaki hayat tecrübelerinin sizle için faydalı olacağını düşünüyorum:
  • Deploy edecek olduğunuz Solution'ları bir klasör içerisinde gruplayın.
  • Deployment sürecinde kullanmış olduğunuz kodları solution bazlı olarak saklayın bu mutlaka size zaman kazandıracaktır.
  • Ard arda çok sık Deployment yapmayın, iki deployment arasında 1 dakika bekleyin.
  • Deployment sonrasında mutlaka son durumu Central Administration Site üzerinden kontrol edin eğer Deploying'de kaldıysa müdahale etmeniz gereken bir yer var demektir.
  • Install-SPSolution komutundan sonra siteye erişmeden önce en az 1 dakika bekleyin, web.config'de işlem yapıldığı için Application Pool Recycle olacak ve yeniden ayağa kalkması zaman alacaktır. Eğer bu süreçte çağrı gönderirseniz Applicaiton Pool duracak ve 500 hatası alacaksınız.
  • Deploymentlarınızı akşamları mesai saatleri dışına planlayın.
  • Update-SPSolution komutundan sonra mutlaka en az 1 dakika sisteme erişmek için bekleyin.
  • Eğer solution içerisinde yeni eklenen Feature veya var olan Feature'larda değişiklik varsa Update-SPSolution yerine önce Uninstall-SPSolution uygulamayı kaldırın sonra güncelleyip yeniden Install edin.
  • Solution'ları Update etmeden önce mutlaka bir önce sağlıklı çalışanın yedeğini alın olası bir problemde geri dönüşünüz kolay olsun.