Python ile Web Uygulaması




Uygulamadan bahsedecek olursam, Ubuntu Server üzerinde veri tabanınından okunan verileri, basit bir web sitesinde göstermek olacak.

Kullanacağım programlar;


  1. VirtualBox
  2. Ubuntu Server
  3. PuTTY
  4. Phyton-pip
  5. Virtualenv
  6. Bottle
  7. SQLite

*********************************************************************************************************
1.İlk olarak ağ ayarlarını yapmak ile başlayacağım.(Kurulumlar üst tarafta oradan bakabilirsiniz.)
Şimdiden bahsedecek olursam iki adet PORT yönlendirmesi yapacağım. Birisi SSH(Secure Shell) için 22 portunu yönlendirmek olacak. İkincisi ise Web sunucusu için yönlendirmek olacak.
VirtualBox>Ayarlar>Ağ>Gelişmiş>Bağdaştırıcı1>Bağlantı Novktası Yönlendirme


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

2.İkinci olarak ise SSH' kullanmamıza yardım edecek Ağ kısmından Host-Only Bağdaştırıcısını aktif ediyoruz.
VirtualBox>Ayarlar>Ağ>Gelişmiş>Bağdaştırıcı2



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


3.Ağ ayarlarımızı yaptıktan sonra Sanal Makinemizi başlatıyoruz.
İlk olarak;

sudo apt-get update

                                        

sudo apt-get upgrade


yazarak makinemizi en güncel hale getiriyoruz.Sonra SSH'ı aktif etmek için 

sudo-apt-get install ssh

yazıyoruz ve indiriyoruz.




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


4.Ağ ayarlarımızı yaptıktan sonra, artık Kopyala yapıştır yapmamıza olanak sağlayan PuTTY'yi indirebiliriz.




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


5.Normal bilgisayarımızda ipconfig yazarak VirtualBox Host-Only Network Kısmında bulunan Ipv4 adresimizi alıyoruz. [192.168.56.1]



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


6.Sonra PuTTymizi başlatabiliriz.

**Artık yapacağım işlemler PuTTY üzerinden gidecek**



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

7.Güncelleştirmelerimizi yaptıktan sonra, uygulamamızda gerekli olan virtualenv'yi 
kuruyoruz. 

sudo apt-get install python-virtualenv


Eğer ki böyle bir hata ile karşılaşırsanız;

export LC_ALL="en_US.UTF-8"export LC_CTYPE="en_US.UTF-8"

yazarak düzenleyebilirsiniz.




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


8.Virtualenv'yi kurduktan sonra sırasıyla

  • mkdir projects //Yazarak projects adında bir klasör oluşturuyoruz.
  • cd projects //Yazarak projemizin içine girebiliyoruz.
  • virtualenv --no-site-packages venv //Yazarak sanal bir çevre oluşturmasını sağlıyoruz.


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



9.Pip yazarak python-pip'i kuruyoruz

sudo apt-get install python-pip



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

10.Oluşturduğumuz sanal çevreyi  


source venv/bin/activate



yazarak aktif hale getiriyoruz.

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

11.Bottle paketini yüklüyoruz.

 pip install bottle



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

12.Sıra geldi SQLite'ı yüklemeye. 

sudo apt-get install sqlite



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

13.Bottle paketi ile SQLite arasındaki bağlantı için gerekli paketi yüklüyoruz.  

pip install bottle-sqlite



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

14.Veri_tabani adında py uzanlıtı bir dosya açıyoruz, nano editöründe.

nano veri_tabani.py


 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_aldigididers TEXT NOT NULL,ogr_vizenot INTEGER,
ogr_finalnot INTEGER,ogr_odevnot INTEGER,ogr_ortnot INTEGER)") db.execute("INSERT INTO ogr VALUES (1,'Inanc','Ozkul','Isletim Sistemleri',50,50,50,50)") db.execute("INSERT INTO ogr VALUES (2,'Inanc','Ozkul','Internet Programlama',50,50,50,50)") db.execute("INSERT INTO ogr VALUES (3,'Merve','Karabulut','Isletim Sistemleri',70,70,70,70)") db.execute("INSERT INTO ogr VALUES (4,'Murat','Ozalp','Isletim Sistemleri',100,100,100,100)") db.commit()
Burada dikkat etmeniz gereken şeyler, kopyala yapıştır yapmak yerine elinizle
yazmanızı tavsiye ederim, yoksa UTF-8 charset hatası alabilirsiniz.

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

15.Oluşturduğumuz veri tabanının db uzantısını çıkarıyoruz. 

pyhton veri_tabani.py 


yazıyoruz, ve bize bilecik isimli db uzantılı dosyasını oluşturuyor.

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

16.Bir adet Bottle Kontrolcü oluşturuyoruz.  


nano veriler.py


import sqlite3

from bottle import route, run, template

@route('/giris')

def show_uygulama():

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

c = db.cursor()

c.execute("SELECT ogr_id,ogr_adi,ogr_soyadi,ogr_aldigiders, 
ogr_vizenot,ogr_finalnot,ogr_odevnot,ogr_ortnot FROM ogr") data = c.fetchall()

c.close()

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

run(host='0.0.0.0', port=8080)
Burada dikkat etmeniz gereken konulardan birisi kopyala yapıştır olacak, elinizle yazmanızı öneririm.
Eğerki no named bottle gibi bir hata ile karşılasıranız; 


pip install bottle 


yazarak hatadan kurtulabilirsiniz..

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

17.Son olarakta ogrenciler_tablosunu_getir adında tpl(template) uzanlıtı bir dosya açıyoruz. 

nano ogrenciler_tablosunu_getir.tpl


<h1>UYGULAMA</h1>
<table>
<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>

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

18.Ve artık uygulamamızı çalıştırabiliriz.

python veriler.py


yazarak uygulamamızı çalıştırabiliriz.

192.168.56.1:8080/giris yazarak 




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


Kaynak;

https://www.digitalocean.com/


Bir iki çıkan pürüzde de genellikle çarpık İngilizcem ile stackoverflow'a başvurdum






Yorumlar

Bu blogdaki popüler yayınlar

VirtualBox'ta Ubuntu Server Kurulumu

PHP CRUD İşlemleri(Tasarım Bootstrap yardımıyla)

Jmeter ile belirtilen site üzerinde performans testi gerçekleştirilmesi