6 Aralık 2016 Salı

Ubuntu Server 16.10 Üzerinde Web Uygulaması

Merhaba arkadaşlar;
       Bu yayında işletim sistemi dersimde almış olduğum "Ubuntu Server 16.10 üzerinde web uygulaması tasarlama" konulu ödevimi nasıl yaptığımı aşamalarıyla anlatmaya çalışacağım. Veritabanı olarak MySQL'i, uygulama geliştirme dili olarak ise Python'u tercih ettim. Kullandığım bileşenler ve kısa açıklamaları ile başlayalım.


VirtualBox

       Bilgisayarımızda sanal makine oluşturup istediğimiz işletim sistemini kurabildiğimiz bir sanallaştırma programıdır. InnoTek firması tarafından geliştirilmiştir. Kurulumu kolay ve sadece bir arayüze sahip olduğundan kullanımı da basittir. 

https://www.virtualbox.org/wiki/Downloads linkinden indirebilirsiniz.


Ubuntu

   Ubuntu'nun sunucular için geliştirilmiş Linux çekirdeğini kullanan işletim sistemi dağıtımıdır. Ubuntu'nun masaüstü ve dizüstü bilgisayar platformu için sunulan sürümlerinden farklı olarak içerisinde bazı ek özellikleri ve servisleri barındırır. Yalnızca sunucu sistemleri üzerinde çalışan bir işletim sistemi dağıtımıdır. 

Ubuntu Server 16.10 sürümünü aşağıdaki siteden indirebilirsiniz.
https://wiki.ubuntu.com/YakketyYak/ReleaseNotes?_ga=1.89901532.612949330.1480098487

Kurulumunu https://youtu.be/jyZmgvse0k8 'den yardım alarak yapabilirsiniz.


MySQL

     MySQL bir ilişkisel veritabanı yönetim sistemidir. UNIX,OS/2 ve Windows platformlarında kullanılabilmektedir.Fakat Linux altında daha yüksek performans sergilemektedir. Veri tabanı gerektiren her ortamda rahatlıkla kullanılabilir fakat en çok web sunucularında tercih edilen veritabanıdır. MySQL içerisinde ODBC sürücüleri de bulunduğundan bir çok geliştirme platformunda rahatlıkla kullanılabilir.


PUTTY

     Ağ üzerindeki Linux işletim sistemli sunucunuza/makinanıza terminal üzerinden bağlantı sağlayan boyut olarak oldukça küçük ama güçlü ücretsiz ve açık kaynak kodlu bir yazılımdır. Putty ile bağlantı yaptığınız sunucunuzu terminal üzerinden çeşitli komutlar ile yönetebilirsiniz. Daha çok gelişmiş Linux kullanıcılarına hitap eder zira kullanıcı arayüzü yoktur, tüm işlemleri komutlar ile yapmamız gerekir.

http://www.putty.org/ adresinden indirebilirsiniz.


phpMyAdmin

     PHP ile yazılmış açık kaynak kodlu bir araçtır. Başlıca kullanım amacı İnternet üzerinden MySQL veritabanı yönetimidir. Veritabanı oluşturma ve silme, tablo ekleme/değiştirme/silme, alan ekleme/değiştirme/silme, SQL sorguları çalıştırma, kullanıcıları, yetkileri ve alan anahtarlarını yönetme gibi işlevleri yapabilen ücretsiz bir yazılımdır.


Kurulum Aşamaları

1) VirtualBox indirip kuralım. Yukarıda belirttiğim adresten indirebilirsiniz.

2) Ubuntu Server 16.10 yukarıda belirttiğim adresten indirip, kurulumu için belirttiğim videoyu takip ederek kurabilirsiniz. Kurulum aşamasında videodan farklı olarak sadece aşağıda paylaşacağım adımlara dikkat etmelisiniz;
 



Bu kısımda OpenSSH server ve LAMP server'ı seçip ilerlemeniz MySQL kurulumu için size yardımcı olaraktır.





İlerlediğinizde bu ekran karşınıza çıkmalı burada phpadmin'de kullanacağınız şifreyi belirliyorsunuz.

     Adımları doğru bir şekilde gerçekleştirdikten sonra Ubuntu Server kurulumunu tamamlamış olursunuz.

3) Kurduğumuz Ubuntu Server'a kullanıcı adı ve şifre ile giriş yapıyoruz. Daha sonra aşağıdaki iki adımı yazıp kurulumun ilk ayarlarını yapıyoruz.

# sudo apt-get update = Daha yeni bir sürüm var mı yok mu diye listeyi günceller.

# sudo apt-get upgrade  = Daha yeni bir sürüm varsa yeni sürümü yükler.



4) VirtualBox ağ yapılandırması. Ben NAT'ı tercih ettim, adımları aşağıda belirttiğim gibi gerçekleştiriyoruz. 






Ayarlara girdikten sonra Ağ - Gelişmiş - B Noktası Yönlendirme deyip Anamakine ve Misafir B Noktalarını resimdeki gibi doldurup adlandırıyoruz.


5) Phpmyadmin'i kurma zamanı.

# sudo apt-get install phpmyadmin = Bu komut ile indirmeye başlıyoruz. Bu komut indirme yaparken ekrana gelen seçimde sadece apache2'yi seçerek ilerliyoruz. Daha sonra tekrar bir soru gelecek ona hayır deyip işlemi tamamlıyoruz. 

# sudo /etc/init.d/apache2 start = apache2'yi yeniden başlatıyoruz.

6) Putty ile Ubuntu server'a bağlanıyor mu diye kontrol ediyoruz. Bağlandığını aşağıdaki resimden görebilirsiniz. Putty açıyoruz (Host Name = localhost) Port kısmına ise ssh için NAT' ayarında girdiğimiz Anamakine B Noktasını giriyoruz (benim 2200).



7) phpadmin'e bağlanmak için ise adres çubuğuna;

localhost:8000/phpmyadmin/ yazarak giriş sayfasına gidiyoruz. Kullanıcı adı = root, şifre ise 2. adımda MySQL root kullanıcısı için belirlediğimiz şifre ile giriş yapıyoruz.




8) MySQL Kurulumu. Aşağıdaki iki komutu sırası ile giriyoruz.

# sudo apt-get install mysql-server

# sudo apt-get install python-mysqldb



Hata verdiği için çarpı işareti bıraktım. Bende MySQL 'li büyük harfle yazınca hata veriyor.

9) Oluşturacağımız veritabanını python üzerinde görebilmek için İDLE indirmemiz lazım.

# sudo apt-get install idle 

10) Veri tabanı oluşturma kısmı.

# mysql -u root -p komutu ile mysql' e giriyoruz. Daha sonra aşağıdaki resimde işaretlediğim komutları girip öğrenci bilgi sistemini oluşturdum.




     Veritabanın da oluşturduğum tablonun çıktısını ise ;

# select *from  komutu ile açıyorum.





11) Oluşturduğumuz veritabanını python üzerinde görmeye geldi sıra ben bunu putty üzerinden yapmak istiyorum.



# sudo apt-get install phyton-pip = pip paket yöneticisidir işlemlerimizi daha hızlı yapmamızı sağlar. 

sudo apt-get install phyton-django = Django framework' ünü indiriyorum bu komutla.

# django-admin startproject mysite = mysite adında bir proje oluşturdum bu komutla.

sudo nano ~/mysite/mysite/settings.py = açtığım dosyanın içine giriyorum.


Açılan ekranda aşağı doğru inip bu kısımda daha önceden oluşturduğum veritabanı bilgilerimi girdim.(Ctrl + X) ve E deyip kaydettim.

# cd mysite = cd komutu ile mysite' ye girdim.

# python manage.py syncdb = komutunu girdikten sonra sorulan soruya “yes” cevabını veriyoruz. Bizden kullanıcı adı, e-mail adresi ve şifre girmemizi istiyor. Bu bilgileri doldurduktan sonra kulanıcın başarıyla oluşturuldu bilgisini aldım.






sudo nano ~/mysite/mysite/views.py = mysite isimli projemizde yeni bir .py uzantılı dosya oluşturdum. Daha sonra dosya içerisine aşağıdaki kodu yazdım.

# -*- coding: utf-8 -*-
from django.http import *
from django.http import HttpResponse
import MySQLdb
def DjangoDeneme(request):
        conn = MySQLdb.connect (host = "localhost",
        user = "root",
        passwd = "dilan",
        db = "bilgisistemi"
        cursor = conn.cursor ()
        cursor.execute ("select onrncisayisi, adsoyad, okulno, sehir from bilgi")
        rows = cursor.fetchall()
        html="<html><body>"
        for row in rows:
                html1 = "Kişi Numarası :  %s"% row[0]
                html2 = "&nbsp&nbsp  Adı Soyadı : %s"% row[1]
                html3 = "&nbsp&nbsp  Okul Numarası : %s"% row[2]
                html4 = "&nbsp&nbsp  Şehir : %s<br>"% row[3]
                html=html+html1+html2+html3+html4
        kapanis="</body></html>"
        html=html+kapanis
        return HttpResponse(html)  (Ctrl + X) tuşlarına basıp E ve enter diyerek kaydedip çıktım.


     Şimdi, az önce oluşturduğumuz views.py dosyasını, Django projesinde hazır olarak bulunan urls.py dosyasına eklemeliyiz. Bunun için ;

# sudo nano ~/mysite/mysite/urls.py  yazıp açılan dosyanın içeriğini aşağıdaki resimde gösterildiği gibi yaptım

Daha sonra  (Ctrl + X) tuşlarına basıp E ve enter diyerek kaydedip çıktım.

Şimdi;

cd mysite  

python manage.py runserver 0.0.0.0:8081 yazıp anamakinamın veritabanına ulaşım yolunu açıyorum. Daha sonra internet sayfasının adres çubuğuna http://localhost:8000/deneme/ yazarak veritabanından çektiğim verileri görebilirim.


Aşağıdaki ekranda görüldüğü gibi veritabanı verilerimi görebiliyorum.






Karşılaştığım Sorunlar

     İlk uygulamam olduğu için baya uğraştırdı beni LAMP kısmını seçmediğim için mysql kurulumunda bir kaç hatayla karşılaştım. sudo apt-get dist-upgrade komutu beni bir üst sürüme götürdüğü için ekran siyah kalıyordu daha sonra eski sürümü kullan diye bir seçeneğim olduğunu gördüm bunu fark edene kadar 4 defa baştan kurmak zorunda kaldım. 11. adımda baya hatayla karşılaştım eksik olan bir çok kaynağım olduğunu fark ettim ekleyince sorunlar çözüldü. Hataları yorumlamayı bilmediğimi fark ettim ve bu bakış açımı baya değiştirdi benim için verimli bir ödev olduğunu düşünüyorum.


KAYNAKÇA