Raspberry Pi Üzerinde .Net Core MVC Web Uygulaması Çalıştırmak

  

 

       Önceki makalelerimizde .Net Core'un ne olduğunu bahsetmiştik. Anlattığımız bu bilgilerle de, basit bir konsol uygulamasını geliştirmiştik. Bu makalemizde de basit bir MVC Web uygulaması yapıp, Raspberry Pi üzerinde nasıl çalıştıracağınızı göstereceğiz.

Makalede kullandığımız cihaz ve yazılım versiyonları;

  • Windows 10
  • Visual Studio 2017 (.net core sdk kurulu)
  • .Net Core 2.2.101
  • Raspbian Stretch(November) (.net core runtime kurulu)
  • Raspberry Pi 2 Model B

.Net Core MVC Projesinin Oluşturulması

       Visual Studio'da, yeni proje oluşturma ekranında sol tarafta ".Net Core" seçtiğimizde listede yer alan proje tiplerinden "ASP.NET Core Web Application" seçelim.

 

       İkinci ekranda, web proje şablonlarından seçimimizi yapmamız gerekiyor. 

       .Net Core Web projelerinde kullanabileceğimiz proje şablonları;

       Empty; .net core ile çalışan en temel özellikleri içeren bir proje oluşturur. 

       API; .net core ile çalışan bir RESTful standartlarında bir API projesi oluşturur.

       Web Application; .net core ile çalışan razor page içeren bir proje oluşturur.

       Web Application(Model-View-Controller); .net core ile çalışan mvc yapısına uygun proje yapısında ve örnek sayfaları içeren bir proje oluşturur.

       Razor Class Library; .net core ile çalışan kütüphane projesi oluşturur.

       Angular; Angular ile uyumlu .net core projesi oluşturur.

       React.js; React.js ile uyumlu .net core projesi oluşturur.

       React.js and Redux; React.js and Redux ile uyumlu .net core projesi oluşturur.

       Biz MVC uygulaması yapacağımız için, Web Application(Model-View-Controller) seçip devam ediyoruz.

 

       Projemiz oluştuktan sonra oluşan yeni proje yapımız aşağıdaki gibidir.

       Raspberry Pi cihazımızda erişebileceğimiz yeni bir sayfa oluşturalım. Bunun için öncelikle "HomeController.cs" içerisine kendimiz aşağıdaki gibi bir Action oluşturalım.

 

public IActionResult Raspbian()
{
            return View();
}

       Oluşturduğumuz yeni action ile göstereceğimiz View’ımızı da "Views/Home" klasörü altına “Raspbian.cshtml” olarak oluşturalım ve aşağıdaki gibi dolduralım

 

@{

    ViewData["Title"] = "Raspbian MVC Sitesi";

}

 

<div class="text-center">

    <h3>Raspberry Pi'dan herkese merhaba!</h3>

    <p>

        Okumuş olduğunuz bu satırlar, Raspberry Pi cihazı üzerinde çalışmakta olan bir siteden yayınlanmaktadır :)

    </p>

</div>


       Son olarak da eklediğimiz sayfaya anasayfadan bir link verelim. "Views/Home" altında olan “Index.cshtml” i aşağıdaki gibi değiştirelim:

 

@{

    ViewData["Title"] = "Home Page";

}

 

<div class="text-center">

    <h1 class="display-4">Merhaba Dünya!</h1>

    <p>Bizim sayfamız: <a href="@Url.Action("Raspbian")"> tıkla </a>.</p>

</div>

       Böylelikle açılan anasayfaya "Merhaba Dünya!" metnini ekledik ve altına bir cümle koyup "tıkla" yazısına yeni bir link verdik,bu linkle oluşturduğumuz yeni sayfaya yönlendirme tanımladık.

       Projemizi Rasperry cihazımıza göndermeden önce kendi bilgisayarımızda (F5'e basabilirsiniz) çalıştırıp nasıl görüneceğine bakalım.

        .Net Core ile çalışan MVC uygulamamızı kendi bilgisayarımızda ayağa kaldırdık 😊 Şimdi projemizi raspberry pi cihazımızda çalışacak hale getirelim.

       Publish dosyalarımızı komut satırını kullanarak alacağız. Bunun için visual studio’da yer alan “package manager console” u veye Windows üzerinden powershell’i kullanabilirsiniz.Ben bu makalede Powershell kullanarak devam edeceğim.

       Öncelikle projenizin olduğu dizine gelin.

cd E:\Projects\Raspi\dotnetcore-raspbian-mvc-site
*bilgisayarınızdaki dosya yoluna değişiklik gösterecektir buradaki dosya yolu. Kendi projenize göre değiştirmeniz gerekmektedir.

       Sırasıyla aşağıdaki komutları çalıştırın

dotnet clean .

dotnet restore .

dotnet build .

 

       Projemizi derledikten sonra arm işlemcilerde çalışabilecek proje dosyalarını oluşturalım.

dotnet publish -c Release -r linux-arm

       Projemiz derlenirken aşağıdaki hatayı alabilirsiniz. Almadıysanız devam edebilirsiniz.

“\Microsoft.NET.Sdk.Publish.TransformFiles.targets(49,5): error MSB4018: "TransformWebConfig" görevi beklenmedik biçimde başarısız oldu.”

       Şu an güncel olan .net core 2.2.101 versiyonunda türkçe makinelerde benzer problemlerin yaşandığını ve henüz çözümü yayınlanmadığını gördüm. Bu sebeple bu hatayı çözmek için projemizin “CaylakMvc.csproj” ({proje-adınız}.csproj) dosyasındaki;

<AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>

       Satrını,

<AspNetCoreHostingModel>inprocess</AspNetCoreHostingModel>

       Olarak değiştiriyoruz ve kaydet diyoruz. Son hali resimdeki gibi olacaktır.

       Projemizi tekrardan build edip , hata aldığımız publish komutunu tekrardan çalıştırıyoruz

dotnet build .

dotnet publish -c Release -r linux-arm

       Projemizin yer aldığı dizinde dosyalarımız başarıyla oluştu 😊

 .Net Core SDK ve .Net Core Runtime Arasındaki Fark

       Kısaca SDK(Software Development Kit) bir dili kullanarak proje geliştirmemizi sağlayan geliştirme paketi, Runtime ise bir dili kullanarak geliştirilmiş projelerin çalışmasını sağlayan pakettir. 

       Geliştirme yapacağınız bilgisayarda .Net Core SDK'nın güncel versiyonu olması gerekmektedir. Aynı şekilde projeyi çalıştıracağımız raspbery pi cihazınızda da .Net Core Runtime'ın güncel versiyonu olması gerekmektedir.

       Güncel Raspberry Pi cihazları(raspberry pi 2 ve üzeri) barındırdıkları armV7 işlemciler ile beraber .Net Core Runtime çalıştırabilir hale gelmiştir. Fakat halen(bu makalenin yazıldığı tarihlerde) SDK kurulup, proje geliştirilmesi yapılamamaktadır. Bu yüzden çalıştırmak istediğimiz projemizi SDK destekleyen bir platformda oluşturup, Runtime kurulu olan cihazlarda çalıştırılabilen haline getirmemiz gerekmektedir. 

Raspbian üzerinde .Net Core Web Uygulaması için yüklenmesi gerekenler

       Eğer sıfırdan kurulum yapıyorsanız bu linkte yer alan makalede anlattığımız gibi ilk kurulumlarınızı yapabilirsiniz.

.Net Core Web Uygulamasının Raspberry Pi üzerinde çalıştırılması

       Oluşan publish dosyalarımızı (\CaylakMvc\bin\Release\netcoreapp2.2\linux-arm\publish\ altında), Raspberry Pi’da “home/pi” dizinine kopyalıyoruz.

       Proje dosyamıza gidiyoruz;

cd CaylakMvc

       Ardından erişin izni veriyoruz;

chmod 777 ./CaylakMvc

       Ve projemizi çalıştırıyoruz

./CaylakMvc

       Ve projemiz “http://localhost:5000” üzerinde ayakta 😊

       Raspberry üzerinden browser’ı açıp sitemize gidelim;

 

       Yeni oluşturduğumuz sayfaya gitmek için, "tıkla" yazan linkimize tıklıyoruz. 

       Gördüğünüz gibi kendi eklediğimiz action üzerinden, yeni eklemiş olduğumuz sayfaya gittik.

       Makalemizin bu bölümünde raspberry pi cihazımızda .net core ile geliştirdiğimiz bir mvc web projesini raspbian işletim sisteminde nasıl ayağa kaldırabileceğimizi gösterdim. Bu makalenin devamında da bir web sitesini kendi raspberry cihazımızdan nasıl internet erişimine açacağımızı göstereceğim.

       Projeye Github üzerinden erişebilirsiniz.

       Konuyla ilgili düşüncelerinizi ve sorularınızı yorum olarak belirtebilir, iletişim alanından yazabilirsiniz.

 

Comments (1) -

  • Büyük hizmet valla çok teşekkürler. Uzun zamandır aradığım olayı buldum ve eline sağlık çok güzel anlatmışsın. şu sıralar .net core 3.küsür var ama aynı işlemler aynı şekilde çalışıyor

Add comment