Apache Web Sunucusunda Python Flask Web Uygulaması Nasıl Çalıştırılır

Merhaba,
Daha önce "Derin Öğrenme Modellerini Kullanan Bir Web Uygulamasının Geliştirilmesi" yazımda Python Flask web uygulamasının oluşturulmasını anlatmıştım.

Bu yazıda, Python Flask web uygulamasını Apache Web sunucusunda nasıl çalıştıracağımızı göreceğiz.

mod_wsgi'yi Yükle ve Etkinleştir

WSGI (Web Server Gateway Interface / Web Sunucu Ağ Geçidi Arayüzü), web sunucuları ile python için web uygulamaları arasında bir arabirimdir.

mod_wsgi, Apache'nin Flask uygulamalarına hizmet etmesini sağlayan bir Apache HTTP sunucu modülüdür.

mod_wsgi'yi yüklemek için aşağıdaki komutu kullanmamız gerekiyor:

$ sudo apt-get install libapache2-mod-wsgi python-dev

mod_wsgi'yi etkinleştirmek için aşağıdaki komutu kullanabiliriz:

$ sudo a2enmod wsgi

Dosyalar

Şimdi Flask ortamımızı kurmaya hazırız.

cd /var/www/

Flask ortam dizinimizi oluşturalım.

mkdir FlaskApp

Yeni oluşturduğumuz dizine gidelim.

cd FlaskApp

Şimdi asıl uygulama dizinini oluşturalım.

mkdir helloworldapp

Şimdi yeni oluşturduğumuz uygulama dizinimizin içerisine gidelim.

cd helloworldapp/

Uygulama klasörü altına static dosyalar ve html sayfalar için iki klasör daha oluşturalım.

mkdir static

mkdir templates

Örnek bir uygulama için Flask Uygulamasının ana dosyasını oluşturalım.

nano __init__.py
__init__.py dosyasını aşağıdaki şekilde oluşturalım.
#! /bin/usr/python

from flask import Flask

app = Flask(__name__)

@app.route("/")
def hello():
    return "Flask Uygulamasina Hosgeldiniz!"

if __name__ == "__main__":
    app.run()

Virtualenv

VirtualEnv, projelerinizde gerekli olan paketleri sistemden bağımsız bir şekilde kurup, kullanmanızı sağlayacak sanal ortam sağlar.

virtualenv'i kuralım ve aktif edelim.

$ sudo virtualenv venv 
$ source venv/bin/activate 
(venv)$ 

Flask Kurulumu

Install Flask:

(venv)$ sudo pip install Flask

Sunucu Çalıştır

Uygulamamızı çalıştırıp herşeyin yolunda gittiğinden emin olalım

(venv)$ sudo python __init__.py 

Tarayıcımızdan localhost:5000/ adresine girdiğimizde "Flask Uygulamasina Hoşgeldiniz" yazısını göreceğiz.

Apache kurulumu - WSGI

Şimdi, WSGI üzerinden Apache'yi kullanarak sayfayı sunmak istiyoruz.

Apache yapılandırma dosyasını düzenleyelim.

nano /etc/apache2/sites-available/flaskhelloworldsite.com.conf
<VirtualHost *:80>
    ServerName www.flaskhelloworldsite.com
    ServerAdmin webmaster@flaskhelloworldsite.com
    ServerAlias flaskhelloworldsite.com

    WSGIDaemonProcess helloworldapp user=www-data group=www-data threads=5
    WSGIProcessGroup helloworldapp
    WSGIScriptAlias / /var/www/FlaskApp/helloworldapp/helloworldapp.wsgi
    Alias /static/ /var/www/FlaskApp/helloworldapp/static
    <Directory /var/www/FlaskApp/helloworldapp/static>
        Order allow,deny
        Allow from all
    </Directory>
    ErrorLog /var/www/flaskhelloworldsite.com/logs/error.log
    CustomLog /var/www/flaskhelloworldsite.com/logs/access.log combined
</VirtualHost>



Suncuyu etkinleştirelim.

$ sudo a2ensite flaskhelloworldsite.com.conf
$ service apache2 reload

WSGI dosyasını düzenleyelim

nano /var/www/FlaskApp/helloworldapp/helloworldapp.wsgi
#!/usr/bin/python 
import sys 
sys.path.insert(0,"/var/www/FlaskApp/")
from helloworldapp import app as application


/etc/hosts dosyasını düzenleyelim

sudo nano /etc/hosts

Aşağıdaki satırı /etc/hosts dosyasına ekleyelim:

127.0.0.1 flaskhelloworldsite.com

Ayrıca, /var/www/flaskhelloworldsite.com/logs dizinini de oluşturmamız gerekiyor:

$ sudo mkdir -p /var/www/flaskhelloworldsite.com/logs

Yetkilendirmesini yapalım

$ sudo chown -R www-data:www-data flaskhelloworldsite.com

Apache Server'ı yeniden başlatalım

$ sudo /etc/init.d/apache2 reload

Artık tarayıcımızdan alan adını flaskhelloworldsite.com adresini kontrol edebiliriz.

Not: Web uygulamanıza yaptığınız her bir .py dosyası değişikliği, service apache2 restart bu komutu çalıştırmanız gerekir.

Kaynaklar:

 

Yorum ekle

Loading