Flask ile çok basit bir web sayfası oluşturmak
Tags: flask, python, debian, pardus
Published: 2020-03-22 19:53:58

Bu yazıda Flask'ın klasik anlatımından farklı bir giriş yapacağım. Öncelikle Flask minimal bir python web mikroframework'u olarak düşünebiliriz. Bir web sunucusu değildir. Kendi içerisinde sadece geliştirme sürecinde kullanacağınız basit bir web sunucusu bulunmaktadır fakat asıl işi bu değildir.

Aslında ihtiyacı şu şekilde belirlemek uygun olacaktır. Python ile bir servis yazdınız fakat bu servis işletim sistemi üzerinde çalışıyor. Bu servis çıktılarını HTTPS üzerinden görmek veya yönetmek için bunun gibi bir framework kullanmanız gerekmektedir. Kendi içerisinde eklenti mantığı vardır ve görsel temalarını Jinja isminde bir altyapı ile sağlamaktadır.

Yazının başında kendi içerisinde çok temel bir web sunucusu olduğunu bahsettim fakat bunu kullanmak yerine ilerleyen yazılarda anlatacağım **Gunicorn** isimli bir web sunucsunu kullanacağız. O zamana kadar basit web sunucusu ile devam edeceğiz. Aslında gunicorn da basit bir sunucu olup daha detaylı bir sunucu kullanmak isterseniz **nginx** ilişkisini de yapmak gerekecektir.

Konumuza gelirsek geliştirme ortamı için python'ın paket yöneticisi pip ve python için sanal ortam oluşturmada kullanılacak virtualenv gibi kavramlar bulunmakta. Fakat ben bu yazımda bunlara değinmeyeceğim ve Pardus ve Debian'ın paket yönetim sisteminde bulunan paketlerle ilerleyeceğim.

Bunun için aşağıdaki paketi indirmeniz yeterlidir:

```bash
sudo apt install python3-flask
```

Bu şekilde Python3 için flask kütüphanesini kurmuş oluyorsunuz.

Şimdi yeni bir klasör oluşturup uygulamanızı oluşturabiliriz. İçerisinde de aşağıdaki gibi klasörler ve dosyaları oluşturmanız belirli bir standart için uygun olacaktır.

```bash
mkdir -p ~/proje01/app
mkdir -p ~/proje01/templates
```

Ayrıca iki dosya oluşturarak temel bir sayfa oluşturmuş olacağız.

proje01/app klasörü altında "\_\_init\_\_.py" isimli dosya oluşturup içeriği aşağıdaki gibi olmalıdır.
```python
from flask import Flask
app = Flask(__name__)
```
proje01 klasörü altında "proje_.py" isimli dosya oluşturup içeriği aşağıdaki gibi olmalıdır.

```python
from flask import Flask, render_template, request
app = Flask(__name__)

@app.route('/')
def merhaba_dunya():
  return 'Merhaba Dünya!'
```

Bu işlemler sonucunda klasör yapışı aşağıdaki gibi olmalıdır.

```
proje01/
└── app/
    └── __init__.py
└── templates/
└── proje.py
```

Bu adımdan sonra basit web sunucusu dediğimiz sistemde yapıyı yayınlamamız gerekmektedir. Bunun için öncelikle uygulamamızın ana dosyasını FLASK_APP değişkenine atamamız gerekmektedir.

```bash
export FLASK_APP=proje.py
```

aynı oturumda aşağıdaki komutu çalıştırmanız gerekmektedir. Fakat bu komut sadece local makineden erişebilmenize ve SSL'siz http üzerinden haberleşmeye neden olacaktır:

```bash
flask run
```

Uzak sunucudan erişebilmek ve SSL'li bağlantı kurmak için ise aşağıdaki gibi çalıştırabilirsiniz.

```bash
flask run --host=0.0.0.0 --cert=adhoc
```

Bu adımların sonucunda uzak sunucudan https://IPADRESİ:5000/ üzerinden giriş yapılacaktır. http'den yönlendirme ise otomatik olarak açık değildir.

Tüm bu işlemlerin daha detaylandırılmış halini ise daha sonraki yazılarda yazacağım.

Ex nihilo nihil fit