Raspberry Pi – Asp.Net uygulamalarını Sunulması

   Önceki makalemle giriş yaptığımız Raspberry Pi dünyasında Mono ile uygulama geliştirmeye tam gaz devam ediyoruz. Raspberry Pi ile geliştirilen projeleri inceleme fırsatınız olduysa dikkatinizi çekmiştir, pek çok örnekte uzaktan kullanım tercih edilmekte. Özellikle ev otomasyonu ile ilgili örneklerde kullanım kolaylığı oluşturması nedeniyle mobil cihazlardan erişim ön plana çıkmakta. Bu yaklaşım gerek LCD v.b. bir arayüz donanımı ihtiyacını ortadan kaldırmasıyla maliyetleri düşürme açısından, gerekse de son kullanıcıların mobil şekilde sistemlere erişebilmesi açısından önemli. Söz konusu mobil cihazlar olunca her birine ayrı ayrı arayüz geliştirmek yerine bir web uygulaması üzerinden tüm işlevlerin sunulması da oldukça mantıklı olacaktır.

   Bu makalemde sizlere Raspberry Pi üzerinden nasıl ASP.Net uygulamalarınızı sunabileceğinizi paylaşacağım. Öncelikle, Raspberry Pi’ye mono kurulumunu yaptığınızı varsayıyorum. Henüz bu adımı tamamlamadıysanız önceki makalemle başlamanızı tavsiye ederim.

   Kurulum adımlarına başlamadan önce apt paketlerini yeniden indeksleyelim;

sudo apt-get update

  Windows sistemlerde Asp.Net uygulamalarının IIS üzerinden sunulmasına paralel olarak Linux sistemlerde de bir web sunucusuna ihtiyacımız var. Bu makele için, kurulumunun kolay olması ve az sistem kaynağı tüketmesi nedeniyle lighttpd’yi kullanacağım. Özellikle düşük CPU gücü ve 512 mb ram’e sahip Raspberry Pi üzerinde az sistem kaynağı tüketen bir web sunucusu nimettir 🙂

sudo apt-get install lighttpd

sudo apt-get install lighttpd

Başarılı bir kurulum sonrasında sunucumuz /var/www/ klasöründe yer alan dosyaları 80. portta hemen sunmaya başlayacaktır;

lighttpd karşılama ekranı

   Sunucumuzun başarılı şekilde çalıştığını gördükten sonra fast_cgi kurulumunda. fast_cgi asp.net çalışma zamanı ile sunucumuz arasında bir köprü oluşturacaktır. Kurulum için lighttpd.conf dosyasını düzenlememiz gerekli;

sudo nano /etc/lighttpd/lighttpd.conf

lighttp.conf dosyası

   Burada listelenen moduller (server.modules) arasına mod_fastcgi girdisini eklemeliyiz;

lighttp.conf dosyasına mod_fastcgi girdisi eklenmiş hali

   mod_fastcgi girdisini eklerken mod_compress’ten önce eklediğimin altını çiziyorum. Dosyamızı saklayıp çıkalım (Ctrl + C, Ctrl + X).

   Şimdi sıra geldi Mono fastcgi sunucunu kurmaya;

sudo apt-get install mono-fastcgi-server4

   Bu komut ile sisteme Asp.Net v4.0 için fastcgi desteğini kurmuş oluyoruz. Bu sayede tek başına asp.net’e özel bir sunucu kurmak yerine lighttpd gibi mevcut bir web sunucusunu kullanabiliriz. Bir sonraki adım lighttpd web sunucusunun mono fastcgi sunucundan haberdar olması sağlamak. Bunun için yeniden lighttpd.conf dosyasını açarak içeriğini düzenlemeliyiz;

sudo nano /etc/lighttpd/lighttpd.conf

fastcgi.server yapılandırması

   Yapılandırma dosyasının son halini aşağıda bulabilirsiniz;

server.modules = (
        "mod_access",
        "mod_alias",
        "mod_fastcgi",
        "mod_compress",
        "mod_redirect",
#       "mod_rewrite",
)

server.document-root        = "/var/www"
server.upload-dirs          = ( "/var/cache/lighttpd/uploads" )
server.errorlog             = "/var/log/lighttpd/error.log"
server.pid-file             = "/var/run/lighttpd.pid"
server.username             = "www-data"
server.groupname            = "www-data"
server.port                 = 80


index-file.names            = ( "index.php", "index.html", "index.lighttpd.html" )
url.access-deny             = ( "~", ".inc" )
static-file.exclude-extensions = ( ".php", ".pl", ".fcgi" )

compress.cache-dir          = "/var/cache/lighttpd/compress/"
compress.filetype           = ( "application/javascript", "text/css", "text/html", "text/plain" )

# default listening port for IPv6 falls back to the IPv4 port
include_shell "/usr/share/lighttpd/use-ipv6.pl " + server.port
include_shell "/usr/share/lighttpd/create-mime.assign.pl"
include_shell "/usr/share/lighttpd/include-conf-enabled.pl"

fastcgi.server = (
                "" => ((
                        "socket" => "/tmp/fastcgi-mono-server4",
                        "bin-path" => "/usr/bin/fastcgi-mono-server4",
                        "bin-environment" => (
                                "PATH" => "/bin:/usr/bin",
                                "LD_LIBRARY_PATH" => "/usr/lib:",
                                "MONO_SHARED_DIR" => "/tmp/",
                                "MONO_FCGI_LOGLEVELS" => "Standard",
                                "MONO_FCGI_LOGFILE" => "/tmp/fastcgi.log",
                                "MONO_FCGI_ROOT" => server.document-root,
                                "MONO_FCGI_APPLICATIONS" => "/:."
                        ),
                        "max-procs" => 4,
                        "check-local" => "disable"
                ))
        )

index-file.names += ( "index.aspx", "default.aspx", "index.cshtml", "default.cshtml" ) 

fastcgi.map-extensions = (
        ".asmx" => ".aspx",
        ".ashx" => ".aspx",
        ".asax" => ".aspx",
        ".ascx" => ".aspx",
        ".soap" => ".aspx",
        ".rem" => ".aspx",
        ".axd" => ".aspx",
        ".cs" => ".aspx",
        ".config" => ".aspx",
        ".dll" => ".aspx" )

   Yaptığımız değişiklikleri yapılandırma dosyasına sakladıktan sonra etkili olması için sunucumuzu yeniden başlatmalıyız;

sudo service lighttpd restart

   Şimdi sıra geldi ilk asp.net sayfamızı oluşturup herşeyin doğru çalışıp çalışmadığını test etmeye. Bunun için web sunucumuzun sunduğu /var/www/ klasörüne giderek Default.aspx sayfasını oluşturmalıyız;

sudo nano /var/www/Default.aspx

Default.aspx içeriğinin oluşturulması

  Test için aşağıdaki içeriği kullanabilirsiniz;

<!doctype html>
<html>
        <head>
                <title>Enterprisecoding</title>
        </head>
        <body>
                <% Response.Write("Raspberry Pi üzerinde  ASP.NET'e merhaba"); %>
        </body>
</html>

   Dosyamızı sakladıktan sonra bilgisayarımızdan bir tarayıcı açıp sayfanın gelip gelmediğini kontrol edebiliriz;

Tarayıcı üzerinden oluşturduğumuz Default.aspx'in açıldığını görebiliriz

   Raspberry Pi cihazımız üzerinden Asp.Net uygulamalarımızı sunmamızın tek yolu tabi ki lighttpd değil. Alternatif olarak Mono XSP sunucusunu da kullanabiliriz. Bunun için öncelikle aşağdaki satırla kurulumunu yapmalıyız;

sudo apt-get install mono-xsp4

  Bu komut ile birlikte Asp.Net 4.0 uygulamalarımızı sunabilmemiz için gerekli her şey hazır olacaktır. Ardından sunmak istediğimiz uygulamamızın bulunduğu satıra giderek (önceki örnekten devam edersek : /var/www/) aşağıdaki komut ile XSP’yi başlatmalıyız;

xsp4

XSP4 sunucumuzun başlattık

  Bu komut ardından Raspverry Pi üzerinde 8080 portundan sunucumuz çalışmaya başlayacaktır;

XSP4 sunucumuz Raspberry Pi'mizde 8080 portu üzerinden hizmet vermekte

   Lighttpd web sunucuna göre daha fazla sistem kaynağı tüketmesi nedeniyle xsp4’ü Raspberry Pi üzerinden gerekmedikçe kullanmanızı tavsiye etmiyorum. Öte yandan, XSP4’te uygulamanız ile aranızda lighttpd kadar çok katman bulunmaması nedeniyle hata ayıklama konusunda size yardımcı olacağı kesindir.

Fatih Boy

Ankara'da yaşayan Fatih, bir kamu kurumunda danışman olarak çalışmaktadır. ALM süreçleri, kurumsal veri yolu sistemleri, kurumsal altyapı ve yazılım geliştirme konularında destek vermektedir. Boş zamanlarında açık kaynak kodlu projeler geliştirmeyi ve bilgisini yazdığı makalelerle paylaşmayı seven Fatih, aynı zamanda Visual C# ve Visual Studio teknolojileri konusundan Microsoft tarafından altı yıl üst üste MVP (En Değerli Profesyonel) ödülüne layık görülmüştür. İş hayatı boyunca masaüstü uygulamaları, web teknolojileri, akıllı istemciler gibi konularda Asp.Net, Php, C#, Java programlama dilleri ve MySql, MsSql ve Oracle gibi veritabanı yönetim yazılımları ile çalışmıştır. İngilizce ve Türkçe olarak yayınlanan makalelerini gerek İngilizce bloğunda, gerekse de Türkçe bloğunda bulabileceğiniz gibi web sitesinden de açık kaynak kodlu geliştirdiği yazılımlarına ulaşabilirsiniz. vCard - Twitter - Facebook - Google+

1 Yorum

  1. Ahmet Emin Koçal   •  

    Cidden bukadar basitmiymiş o_0. O kadar aradım saatlerce, hepsi işeyaramazdı. Birisinde kvm hatası diğeri dnvm hatalı bu ne arkadaş demiştim. Oh işte bu ne güzel anlatım sade ve açık. Yalnız şu mono versyonunun güncen halinin yüklenişi de eklense kusursuz olurdu 🙂

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir