UBUNTU SERVER 16.10 İŞLETİM SİSTEMİNDE BULUNAN VERİTABANINIDAKİ VERİLERİ PYTHON-BOTTLE PROGRAMLAMAYLA ÇEKEN WEB UYGULAMASI 1. UYGULAMADAKİ YAZILIMLAR SSH: SSH (Secure Shell) güvenli veri iletimi için kriptografik ağ protokolüdür. Ssh ile ağa bağlı olan iki bilgisayar arasında veri aktarımı güvenlik kanalı üzerinden güvensiz bir ağda yapılır. Bu durumda ağda Ssh ile haberleşen makinelerden biri ssh sunucusu diğeri ssh istemcisi olur. Bu uygulamada Windows işletim sisteminden Ubuntu Server‟a erişim sağlanarak ayarlamalar yapmak için yüklendi. UBUNTU SERVER: Grafik ara yüzü olmayan ve sunucu işlemleri için kullanılan Linux tabanlı açık kaynak kodlu işletim sistemidir. APACHE: açık kaynak kodlu ve özgür bir Web sunucu programıdır. Apache Yazılım Vakfı tarafından geliştirilmektedir. Unix, GNU, FreeBSD, Linux, Solaris, Novell NetWare, Mac OS X, Microsoft Windows, OS/2, TPF ve eComStation işletim sistemleri üzerinde çalışabilir. SQLLİTE: Basit veritabanları oluşturmak için kullanılan bir yazılımdır. PYTHON: Python, nesne yönelimli, yorumlamalı, birimsel (modüler) ve etkileşimli yüksek seviyeli bir programlama dilidir. Modüler yapısı, sınıf dizgesini (sistem) ve her türlü veri alanı girişini destekler. Hemen hemen her türlü platformda çalışabilir. (Unix , Linux, Mac, Windows, Amiga, Symbian). Python ile sistem programlama, kullanıcı arabirimi programlama, ağ programlama, uygulama ve veritabanı yazılımı programlama gibi birçok alanda yazılım geliştirilebilir. PYTHON-BOTTLE: Bottle Python için geliştirilen sade, hızlı ve düşük boyutlu mikro webçerçeve aracıdır. Tek dosya modülü şeklinde dağıtılır ve standart Python kütüphanesi dışında başka kütüphaneye ihtiyaç duymaz. Bu araç sayesinde web uygulamasının çalışması sırasında Apache Server‟a ihtiyaç duyulmaz, web uygulaması sorunsuz bir şekilde çalışır. PYTHON-VIRTUALENV: Virtualenv paketi oluşturulan Python projesinin sistemin Python ortamından izole edilmesini sağlar. Bu sayede işletim sisteminin tamamını etkilemeyen ayrı bir Python projesi oluşturulabilir. 2. KURULUM AŞAMALARI Ubuntu Server 16.10 işletim sistemi VirtualBox programında sanal bilgisayara kurulur. Kurulum sonunda Resim‟1 görüldüğü gibi iki paket seçilip kurulum tamamlanır. Resim-1 Kurulan bu sanal makine için VirtualBox‟taki ağ ayarları aşağıdaki şekilde yapılır: Resim-2‟de görüldüğü gibi NAT seçilir. Bunun nedeni sanal bilgisayarın gerçek bilgisayardan IP adresini alması gerektiğidir. Resim-2 Resim-3‟de görülen menüyü açmak için Advanced‟e tıklanır. Resim-3 Resim-4‟de gösterildiği gibi port ayarlamaları yapılır. SSH; gerçek makinadaki Windows işletim sisteminden sanal makinadaki işletim sisteminde oturum açıp işlem yapmak için ayarlanadı. Web; oluşturulan web uygulamasının yönlendirmesini yapmak için oluşturuldu. Burada 8080 portunun kullanılmasının nedeni sunucuda 80 portunun kullınılıyor olmasıdır. Resim-4 Kurulum tamamlandıktan sonra işletim sistemi açılır. Gerekli güncelleştirmeler Resim-5‟de görüldüğü gibi yüklenir. Resim-5 Resim-6‟da görüldüğü Virtualenv paketi kurulur. Resim-6 Resim-7‟de görüldüğü gibi Virtualenv paketinin yükleneceği konum için yeni bir dizin (odev) oluşturulur. Daha sonra paket aktifleştirilir. Resim-7 Python ile web uygulamasının çalıştırılması için Python-Bottle web aracı yüklenecektir. Yükleme Resim-8‟de görüldüğü yapılacaktır. Resim-8 Veritabanı oluşturmak için Sqllite yüklenecektir. Yükleme Resim-9‟daki olacaktır. Resim-9 Bottle aracının Sqllite veritabanına kolayca bağlanabilmesi için Bottle-Sqllite paketi yüklenmelidir. Bu paketin yüklenmesi Resim-10‟daki gibidir. Resim-10 Veritabanının oluşturulması: “nano ~/projects/ogrenci_bilgi.py” komutuyla veritabanı dosyası oluşturulur. Veritabanının içeriği Resim-11‟de gösterilmiştir. Resim-11‟de gösterildiği veriler yazıldıktan sonra Ctrl+o tuşlarına basılarak kaydedilir sonra Ctrl+x tuşlarına basılarak dosya kapatılır. “python ~/projects/ogrenci_bilgi.py” komutuyla veritabanı oluşturulur. Resim-11 Web sayfası için kodun yazılması: “python ~/projects/ogrenci.py” komutuyla web sayfasını oluşturacak komutlar Resim-12‟deki gibi yazılır. Ctrl+o ile dosya kaydedilir, Ctrl+x ile dosya kapatılır. Host‟un „0.0.0.0‟ olmasının nedeni local makine dışından da içeriğe erişimin olabilmesidir. 8080 portunun kullanılmasının nedeni diğer portların kullanılıyor olmasıdır. Resim-12 Web sayfası için template(şablon) oluşturulması: “nano /home/isletimsistemleri/ogrenci_bilgileri.tpl” komutuyla template dosyası oluşturulur. Dosyanın içeriği Resim-13‟deki gibi olacaktır. Ctrl+o ve Ctrl+x tuş kombinasyonları çalıştırılarak dosya kaydedilip kapatılır. Dikkat: Template dosyası root dizinine kaydedilirse web sayfasına erişimde hata oluşur. (Ben bu sorunu yaşadım. Dosyayı home dizinine taşıdıktan sorun çözüldü.) Resim-13 Web sunucusu “python ~/projects/ogrenci.py” komutuyla çalıştırılır ve 8080 portu dinlenmeye başlanır(Resim-14). Herhangi bir bilgisayar web sunucuna bağlandığında gerekli bilgiler ekranda görülür(Resim-14). Sunucunun portu dinlemesini sonlandırmak için Ctrl+c tuşlarına basılır. Resim-14 görülen 10.0.2.2 sunucuya bağlanan bilgisayarın IP adresidir. Resim-14 Web sunucusuna bağlanmak için adres satırına “192.168.56:8080/ogrenci” yazılmalıdır. Buradaki IP adresi sunucunun kurulu olduğu bilgisayarın IP adresidir. Bağlantı sağlandıktan sonra bilgisayarın internet tarayıcısında Resim-15‟deki gibi bir sayfa açılır. Resim-15 PROJENİN YAPIMINDA BAŞVURULAN KAYNAKLAR: https://tr.wikipedia.org/wiki/SSH https://tr.wikipedia.org/wiki/Python_(programlama_dili) http://bottlepy.org/docs/dev/ https://www.digitalocean.com/community/tutorials/how-to-deploy-python-web-applicationswith-the-bottle-micro-framework-on-ubuntu-14-04