Python Dersleri – Flask Uygulaması Nasıl Yayınlanır? Flask Yayınlama.12 dakikada okunabilir

programlama-dilleri-dersleri-python-5

Herkese merhabaa. Kanalım… pardon bloguma hoş geldiniz.

Bugün sizlere bir Python Framework’u olan Flask ile çok basit bir uygulama yapmayı ve bunu İnternet’e, yani kanlı canlı bir sunucuya en kolay şekilde atıp orada çalıştırmayı/yayınlamayı göstereceğim.

Yani kısacası, bu yazımızda Flask Uygulaması Nasıl Yayınlanır onu anlattık.

Flask Yayınlama için size gerekenler;

Öncelikle size bir bilgisayar, buna kurulu python (linux veya mac’se zaten kurulu.), sitenizi yayınlamanız için bir sunucu (mükemmel olmak zorunda değil), sunucu kontrolü için biraz teknik bilgi ve PuTTy ve WinSCP adlı uygulamalar lazım.

Bilgisayarınız windows ise ve python yoksa şuradan python’u kurup geri bu yazıya dönünüz.

Şimdi ilk olarak bir Python projesi oluşturalım. Diğer Python dersi yazılarından aşina olduğunuz PyCharm ile oluşturun hemencecik. PyCharm nedir yazıma şuradan, yeni bir proje nasıl oluşturulur yazıma da şuradan ulaşabilirsiniz..

Projenizi oluşturduğunuzu düşünerek Flask hakkında biraz bilgi vermek istiyorum.

Flask, Python’da yazılmış bir web framework’udur. Django adlı diğer Python framework’üne göre daha hafif ve yapılabilecek işlemler daha sınırılıdır. Sınırlı dediysem korkmayın, flask ile bir blog bile geliştirebilirsiniz.

Sadece sizin hayal gücünüz ile sınırlı.

  • Esnek,
  • Kullanımı,
  • Öğrenimi
  • URL yönlendirmeleri django’ya göre daha kolay bir framework’dür.

Hadi başlayalım.

pip install Flask komutu ile konsol ekranımızdan kütüphanemizi indirelim.

flask-proje-olusturma-1
flask-proje-olusturma-1

from flask import Flask

flask-proje-olusturma-2
flask-proje-olusturma-2

app = Flask(__name__)

flask-proje-olusturma-3
flask-proje-olusturma-3

@app.route(‘/’)

flask-proje-olusturma-4
flask-proje-olusturma-4

if __name__ == ‘__main__’:

flask-proje-olusturma-5
flask-proje-olusturma-5

run

flask-proje-olusturma-6
flask-proje-olusturma-6

localhost:5000

flask-proje-olusturma-7
flask-proje-olusturma-7

Flask uygulamamız localhost üzerinde çalıştı 🙂


Buraya kadar olan kodlar:

from flask import Flask
"""Flask indirmemiz bitti projemize import ettik. Yani artık bu projede Flask'ı kullanabileceğiz."""
"""Bazı durumlarda 'pip install --user Flask' ile de kurmanız gerekebilir. Permission denied hatası verdiği görülmüştür."""

"""Flask kütüphanemizin flask sınıfını kullanarak bir nesne oluşturalım. Mantığını öğretmekle zamanınızı çalmayacağım. 
Zaten biliyorsunuzdur yayına alma safhasıan geldiyseniz."""
app = Flask(__name__)

#Şimdi de kök dizinimizi, yani ana URL'mizi tanımlayalım. localhost'da aktif olacaktır.
@app.route('/') #URL tanımlama kısmımız
def mesaj(): #mesaj adlı bir fonksiyon tanımlıyoruz.
    return 'Selamin Aleykum' #Ve ekrana dönecek olan değeri yazıyoruz. Biz ekrana selam döndürelim.

#Bu kodlar ise bizim dosyamızı çalıştırmamızı, yani ayıklayıp yayınlamamızı sağlıyor.
"""
if __name__ == '__main__':
    app.debug = True
    app.run(host= 'localhost', port= 5000)
""" 
#Localde çalıştıracağımız için host'u localhost seçiyoruz ve portu 5000 yapıyoruz.
#Web'de bu 80'dir ve bu kodlara gerek yoktur.

Hadi şimdi de sunucu işlemlerimizi yapalım.

Sunucunuzun olduğunu varsayarak devam ediyorum. Mutlaka bir sunucunuz olması şart, çünkü root izinleri gerekecek. Bir hosting’de bunu yapmanız mümkün değil.

PuTTy programını şuradan indirelim ve sunucu kullanıcı adımız ile şifremizi yazarak giriş yapalım. (Root kullanıcısı ile girmeye dikkat ediniz.)

sudo apt update;sudo apt install apache2;apache2 -version

Komut satırını sunucumuza yapıştırarak Apache’yi indirelim ve sunucumuza kurmuş olalım.

flask-proje-olusturma-8
flask-proje-olusturma-8

Kuruluyor:

flask-proje-olusturma-9
flask-proje-olusturma-9

Ve kuruldu:

flask-proje-olusturma-10
flask-proje-olusturma-10

Şimdi ise güvenlik duvarımızı konfigüre edelim:

sudo ufw app list;sudo ufw allow 'Apache'

Komut satırı bu işi yapacaktır:

flask-proje-olusturma-11
flask-proje-olusturma-11

Apache konfigürasyonumuzu yapalım:

sudo systemctl status apache2
flask-proje-olusturma-12
flask-proje-olusturma-12

mod_wsgi indirelim ve aktif edelim:

sudo apt-get install libapache2-mod-wsgi python-dev
flask-proje-olusturma-13
flask-proje-olusturma-13

Ve kuruldu:

flask-proje-olusturma-14
flask-proje-olusturma-14

Flask uygulamamızı oluşturalım:

cd /var/www;sudo mkdir site;cd site

Burada dikkat etmeniz gereken bir nokta var; “site”. Klasör olarak istediğiniz adı vermelisiniz, bir daha değiştiremeyeceğinizi bilerek bu işlemi yapın. Size önerim, bu noktadan itibaren kalan adımlarda bol bol deneme yaparak mantığını iyice anlamanız.

flask-proje-olusturma-15
flask-proje-olusturma-15

Flask’ı sunucumuza kuralım:

sudo apt-get install python-pip;sudo pip install Flask
flask-proje-olusturma-16
flask-proje-olusturma-16

Ve kuruldu:

flask-proje-olusturma-17
flask-proje-olusturma-17

Şimdi sıra WinSCP uygulamamızı kullanmaya geldi. Normalde sunucu ile ilgili teknik bilgisi az olanlar FTP üzerinden PuTTy kullanarak çok kolaylıkla sıradaki işlemi yapabilir ama ben SSH kullananlar için ayrıca bir yöntem kullanarak devam ediyorum. Herkes bir FTP hesabı olan sunucu alamayabiliyor.

Şuradan uygulamamızı indirelim ve kurup açalım (PuTTy’de kaydettiğiniz bilgiler varsa buraya aktıracaktır.):

flask-proje-olusturma-18
flask-proje-olusturma-18

SSH olduğu için SFTP’i seçip, sunucu ip, kapı numarası(22), kullanıcı adı ve şifreyi girerek yönetim paneli olmayan sunucumuzun bütün dosyalarını bir GUİ (grafik ara birimi) üzerinde görebilir ve düzenleyebiliriz. Hadi yine iyisiniz, FTP hesabına para vermekten kurtardım sizi 🙂

flask-proje-olusturma-19
flask-proje-olusturma-19

/var/www/site klasörümüzü oluşturmuştuk hatırlarsanız. Projemizi bilgisayarımızdan oraya atalım:

flask-proje-olusturma-20
flask-proje-olusturma-20
flask-proje-olusturma-21
flask-proje-olusturma-21
flask-proje-olusturma-22
flask-proje-olusturma-22

Ve bir iç klasör oluşturarak dosyaları da oranın içine atalım:

flask-proje-olusturma-23
flask-proje-olusturma-23

Artık burası ile işimiz bitti.


Tekrardan PuTTY’mize gelelim. Sanal hostumuzu konfigüre edelim ve aktifleştirelim:

sudo nano /etc/apache2/sites-available/site.conf
flask-proje-olusturma-24
flask-proje-olusturma-24

Buraya yapıştıracağınız kodlar (Site klasörünüze göre düzenleyiniz.):

<VirtualHost *:80>
		ServerName ip adresiniz
		ServerAdmin email@adresiniz.com
		WSGIScriptAlias / /var/www/site/site.wsgi
		<Directory /var/www/site/site/>
			Order allow,deny
			Allow from all
		</Directory>
		Alias /static /var/www/site/site/static
		<Directory /var/www/site/site/static/>
			Order allow,deny
			Allow from all
		</Directory>
		ErrorLog ${APACHE_LOG_DIR}/error.log
		LogLevel warn
		CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
flask-proje-olusturma-25
CTRL+X kombinasyonuyla dosyamızdan çıkalım (“Y” diyin.)

sudo a2ensite site;systemctl reload apache2

Kod satırı ile sitemizi Apache’ye tanıtalım ve Apache’yi yenileyelim:

flask-proje-olusturma-26
flask-proje-olusturma-26

Şimdi ise .wsgi dosyamızı oluşturalım.

sudo nano site.wsgi

Not: konumunuza dikkat edin. /var/www/site/ içerisinde olmanız gerekmekte.

flask-proje-olusturma-27
flask-proje-olusturma-27

Dosya içine yazacağınız kodlar:

import sys
import logging
logging.basicConfig(stream=sys.stderr)
sys.path.insert(0,"/var/www/site/")

from site import app as application
application.secret_key = 'Gizli bir anahtar bırakabilirsiniz.'
flask-proje-olusturma-28
flask-proje-olusturma-28

Son kontrollerimizi yapalım ve Apache’mizi yeniden başlatalım:

sudo service apache2 restart
flask-proje-olusturma-29
flask-proje-olusturma-29

Veeeee:

flask-proje-olusturma-30
flask-proje-olusturma-30

Yorumlarınız benim için çok değerli, yazmaktan çekinmeyin..

Tüm Kodlar: GitHub


Tüm Python Dersleri

1Python Dersleri – Nedir, Neler Yapılır
2Python Dersleri – Python Kurulumu
3Python Dersleri – PyCharm Kurulumu
4Python Dersleri – PyCharm İle İlk Proje
5*Özel ders: Python Dersleri – Flask Uygulaması Nasıl Yayınlanır?
6Python Dersleri – Python İle Aritmetik İşlemler

anahtar kelime havuzu: flask yayınlama, flask nedir, flask web site yayınlama, flask uygulama yayınlama, flask yayınlama, flask deploy

Furkan Ege

Furkan Ege

Ben Furkan Ege.

4 comments

  1. Emeğine sağlık çok güzel özenle hazırlanmış bir yazı.

    Tebrik ederim.

  2. Çok eğitici ve öğretici bir yazı olmuş hocam. Elinize sağlık.

  3. Başarılı ve açıklayıcı olmuş hocam, devamını bekliyoruz.

  4. Sayenizde kod yazabiliyorum teşekkür ederim aşırı zevkli ve kalıcı adamsın !

Bir cevap yazın

DMCA.com Protection Status