5 Aralık 2016 Pazartesi

UBUNTU Server'da Basit Bir Web Sitesi Uygulaması

      Bu uygulamayı yapmamdaki amaç; Ubuntu Server'da basit bir web sitesi yapmaktı. Burada kullanacağım araçlar aşağıda belirtilmiştir. Uygulamada PYTHON-SQLITE-VIRTUALBOX-UBUNTU kullandım.Umarım sizler için yardımcı olabilmişimdir.
[Aşağıdaki kodlarda elinizle yazmaya özen gösteriniz. Yoksa karakter uyuşmazlığı gibi hatalar ile karşılaşabilirsiniz.]


Sanal makinemizi kurduktan sonra bağlanabilmek için (gerçek makine-sanal makine) ağ ayarlarını yaptım.


Sanal makinemize giriş yapalım.
Sanal makinemize ilk girişimizde
sudo apt-get update
sudo apt-get upgrade
komutlarını yazarak işletim sistemimizi en güncel hale getirelim.
*****
PuTTY indir = PuTTY
Normal bilgisayarımdan sanal makineye kopyala yapıştır yapmak için ara program
PuTTY'yi indirelim. PuTTY'nin çalışması için sanal makine ile gerçek bilgisayarımız arasında SSH ile haberleşme yapmamız gerekmektedir.
*****



Buradan host-only ayarlarını seçiyoruz.


PuTTY'yi kullanmak için makinemize SSH iletişimini tanıtmamız için gerekli yüklemeleri yaptık.


Sanal bilgisayarımız Host-Only Ağ ayarlarının ip'sine normal bilgisayarımızda ipconfig yazarak bakıyoruz.


Artık Server'ımız açıkken PuTTY'mizide açabiliriz.


Artık uygulamamızı yapmaya geçebiliriz. 


Bizim için gerekli olan python'ın virtualenv uzantısını kurabiliriz.
OSError: Command /home/kullaniciadi/dosyauzantisi/venv/bin/python2 - setuptools pkg_resources pip wheel faield with error code gibi bir hata ile karşılaşırsanız eğer,
export LC_ALL="en_US.UTF-8"
export LC_CTYPE="en_US.UTF-8"
yazarak halledebilirsiniz.


Projemizde kullanacağımız virtualenv'i buradan çalıştırıyoruz.


source venv/bin/activate yaptıktan sonra venv sanal çevreye giriş yaptık.


Gerekli olan bottle sürümünü arattık.


Bottle paketini  kurduk.


Veri tabanı bağlantıları için SQLite'ı yükledik.


Nano derleyicisi ile veri tabanımızı oluşturduk.

***
VERİ TABANIM İÇİN KODLAR

import sqlite3
db = sqlite3.connect('universite.db')
db.execute("CREATE TABLE ogr (ogr_id INTEGER PRIMARY KEY, ogr_adi TEXT NOT NULL, ogr_soyadi TEXT NOT NULL)")
db.execute("INSERT INTO ogr (ogr_adi,ogr_soyadi) VALUES ('Merve','Karabulut')")
db.execute("INSERT INTO ogr (ogr_adi,ogr_soyadi) VALUES ('Ayse','Kus')")
db.execute("INSERT INTO ogr (ogr_adi,ogr_soyadi) VALUES ('Elif','Koca')")
db.execute("INSERT INTO ogr (ogr_adi,ogr_soyadi) VALUES ('Melek','Deniz')")
db.execute("INSERT INTO ogr (ogr_adi,ogr_soyadi) VALUES ('Rabia','Oncu')")
db.commit()
***

Python veri_tabani.py yazdıktan sonra veri tabanımızın db dosyasını otomatik olarak oluşturuyoruz.
ls yazdıktan sonra projects klasörümüzün içerisinde görebiliriz.


Veri tabanımızı oluşturduktan sonra veriler adında başka Python uygulaması daha açıyoruz. İçine veri tabanının Bottle uygulamasından çekilmesini sağlıyoruz. Burada Run dediği programımızın çalışması, Route demesi yönlendirmesi, Template ise ekranda yazdıracağımız yazıların bir nevi tasarımı diyebiliriz. Eğerki Kod parçasını yazdıktan sonra no named bottle gibi bir hata ile karşılaşırsanız, tekrardan bottle paketini kontrol ediniz,
pip install bottle
***
BAĞLANTI KURMA ve SORGU ÇAĞIRMA

import sqlite3
from bottle import route, run, template

@route('/')
def show_uygulama():
    db = sqlite3.connect('universite.db')
    c = db.cursor()
    c.execute("SELECT ogr_id,ogr_adi,ogr_soyadi FROM ogr")
    data = c.fetchall()
    c.close()
    output = template('bring_to_ogrs', rows=data)
    return output

run(host='0.0.0.0', port=8080)
***


Templatemizi sağlamak için bir tane bring_to_ogrs adında bir tpl uzantısı dosyaya giriş yapıyoruz.


***
TEMPLATE KODLARI


<h1>UYGULAMA</h1> <table> <tbody> <tr><th>Ogrenci ID</th><th>Ogrenci Adi </th><th> Ogrenci Soyadi</tr> %for row in rows: <tr> %for col in row: <td><b>{{col}}</b></td> %end </tr> %end <tbody> </table>

***
En son olarak ;
python veriler.py diyoruz ve
Başta Sanal makinemizin ip'sini giriş yapıyoruz:
192.168.56.1/ diyoruz;



Yararlandığım Kaynak: https://www.digitalocean.com 'dur.