10 Aralık 2016 Cumartesi

Python kullanarak basit bir Web Sitesi oluşturma

***FATİH TOPTAŞ***

Projede bahsedecek olursam, sanal bir bilgisayar üzerinde(Ubuntu Server) veri tabanına kaydettiğimiz verileri, bir web sitesi üzerinde göstermek olacak.
Projede kullanacağım programlar, VirtualBox,Ubuntu Server,PuTTY, Virtualenv, Python-pip,Python-pip bottle, SQLite olacak.

Virtualenv, bilgisayarınızda bir birinden etkilenmeyen, izole python ortamları oluşturmak için kullanılan bir araçtır.

SQLite, dünyada en çok dağıtılan ve tavsiye edilen kaynak kodları halka açık, tamamen C/C++ programlama dilleriyle geliştirilmiş sunucu yazılımı ve yapılandırma gereksinimi olmayan, işlemsel ve ilişkisel bir SQL veritabanı motorudur.

1.VirtualBox'ı kurduktan sonra sunucumuzu başlatıyoruz, bu gelen ekranda indirdiğimiz ISO dosyasını içerisine atıyoruz ve kurulumu başlatıyoruz.

2.Kurulum bittikten sonra bu ekran ile karşılaşıyoruz. 

3.Sıra geldi makinemizi güncelleştirilmeye, sudo apt-get update komutunu yazarak, linuxun deposunda hangi program olduğunu indiriyoruz.
     
4.Update ile verileri aldıktan sonra, bilgisayarımızda yüklü güncellemesi gelmiş, uygulamaları güncelleştirmesi onayını veriyoruz.

5.Web sunucusuna bağlanmak için Ayarlar Kısmından Ağ kısmına geliyoruz, NAT'ı seçip, bağlantı yönlendirme kısmına geliyoruz. Burada 1 tane Web Sunucusu için 1 tanede SSH için yönlendirme yapıyoruz.
Web Sunucusu için : 8080'den aldığımız portu tekrardan 8080'e aktarıyoruz.
SSH için : 22'den aldığımız portu tekrardan 22'ye aktarıyoruz. 


 6.Sonra SSH'ı kullanmak için, tekrardan Ayarlar, Ağ kısmından bu sefer bağdaştırıcı ikiye geliyoruz. Burada Sadece-Anamakine-Bağdaştırıcısını(Host-Only-Network) seçiyoruz.

SSH= Kopyala yapıştır yapmamıza yardımcı olacak, ara programdır. (SECURE SHELL)
7.Ağ ayarlarımızı yaptıktan sonra makinemizde ipconfig yazarak VB-Host-Only-Network Ethernet kısmından makinemizin ipsine bakıyoruz, veyahutt sanal makinemizde, ifconfig yazarakta ipmize erişebiliriz.

8.PuTTY'yi kullanmak için gerekli olan SSH driverını indiriyoruz. 


10.PuTTy'yi indirdikten sonra sanal makinemizin ipsini giriş yapıyoruz.

11.Kullanıcı adı ve şifremizi girdikten sonra böyle bir ekranla karşılaşıyoruz. 

 12.Artık sıra geldi uygulamamızı yapmaya, virtualenv'i kuruyoruz.

-Virtualenv anlatım yukarıdadır.

13.mkdir komutuyla projects adında bir klasör oluşturuyoruz, 
ls komutuyla oluşturulan dosyayı teyit ediyoruz.
cd projects yazarak klasörün içine giriş yapıyoruz.

14. Klasöre giriş yaptıktan sonra, etkilenmeyen sanal bir çevre oluşturma talimatı veriyoruz. 

 15.Oluşturduğumuz sanal çevreyi aktif etmek için venv>bin dosyasının içerisinde bulunan activate dosyasını çalıştırıyoruz, ve aktifliyoruz.

 16. Uygulamamızda kullanacağımız python sürümünü yüklüyoruz.
 17.Pythonun Bottle paketini yüklüyoruz.

18.Kullanacağımız veri tabanını indiriyoruz.[SQLite]

19.Bottle paketimiz ile SQLite arasında bağlantıyı kuracak bottle-sqlite paketini indiriyoruz. 

[Kontrol ekranından dolayı fotoğrafın bir kısmı çıkmamış.]
 20.nano veri_tabani.py yazarak editörümüzü açıyoruz.
Veri tabanımıza bseu ismini veriyoruz, sonra tablomuzada ogr ismini veriyoruz.
Tablomuzun içerisinde ogr_id,ogr_adi,ogr_soyadi,ogr_aldigiders,ogr_vizenot,ogr_finalnot,ogr_odevnot,ogr_ortnot bulunmakta.
***********************
import sqlite3
db = sqlite3.connect('bseu.db')
db.execute("CREATE TABLE ogr (
ogr_id INTEGER PRIMARY KEY, 
ogr_adi TEXT NOT NULL,
ogr_soyadi TEXT NOT NULL,
ogr_aldigiders TEXT NOT NULL,
ogr_vizenot INTEGER,
ogr_finalnot INTEGER,
ogr_odevnot INTEGER,
ogr_ortnot INTEGER,
)
db.execute("INSERT INTO ogr VALUES (1,'Fatih','Toptas','Isletim Sistemleri',50,60,70,80)")
db.commit()

***********************


21.Veri tabanımızı oluşturduktan sonra, python veri_tabani.py yazarak aktifleme işlemini yapıyoruz ve bize bseu.db dosyasını otomatik olarak oluşturuyor. 

22.Tekrardan editörümüz ile veriler adında python uzantılı bir dosya oluşturuyoruz. 

***************
import sqlite3

from bottle import route, run, template

@route('/giris')

def show_uygulama():

    db = sqlite3.connect('bseu.db')

    c = db.cursor()

    c.execute("SELECT *  FROM ogr")

    data = c.fetchall()

    c.close()

    output = template('ogrenciler_tablosunu_getir', rows=data)

    return output

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

**************


23.Veri tabanımızı oluşturup, gerekli bağlantı ayarlarını yaptıktan sonra tasarım kısmını(template) ogrenciler_tablosunu_getir adında tpl uzantılı dosya ile sağlıyoruz. 

24.Tasarımımız html kodlarına benzemekte.
***************

<h1>UYGULAMA</h1>
<table border="1">
<tbody>
<tr>
<th>Ogrenci ID</th>
<th>Ogrenci Adi</th>
<th>Ogrenci Soyadi</th>
<th>Ogrenci Aldigi Ders</th>
<th>Ogrenci Vize Not</th>
<th>Ogrenci Final Not</th>
<th>Ogrenci Odev Not</th>
<th>Ogrenci Ortalama</th>
</tr>
%for row in rows:
<tr>
%for col in row:
<td><b>{{col}}</b></td>
%end
</tr>
%end
<tbody>
</table>

****************


24.Her şeyi yaptıktan sonra python veriler.py yazarak uygulamamızı başlatıyoruz.

25.Uygulamamız çalışmaya başladıktan sonra, 
http:/ipmiz:PORT/giris yazarak giris yapıyoruz.
192.168.56.1:8080/giris


Karşılaştığım hatalar;
1-)virtualenv --no-site-packages venv ' yüklerken karşılaştığım pkg_resources hatasını aşağıdaki kodlar ile giderebildim.

export LC_ALL="en_US.UTF-8"

export LC_CTYPE="en_US.UTF-8"

2-)İkinci olarak, veri tabanımı oluşturduktan sonra ve bağlantı ayarlarını yaptıktan sonra no named bottle hatasıyla karşılaştım bunuda tekrardan bottle paketini yükleyerek giderdim.

pip install bottle 


KAYNAK;DigitalOcean