
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

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

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

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

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

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

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;

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

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

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.