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:
1 | $ sudo apt-get install libapache2-mod-wsgi python-dev |
mod_wsgi’yi etkinleştirmek için aşağıdaki komutu kullanabiliriz:
1 | $ sudo a2enmod wsgi |
Dosyalar
Şimdi Flask ortamımızı kurmaya hazırız.
1 | cd /var/www/ |
Flask ortam dizinimizi oluşturalım.
1 | mkdir FlaskApp |
Yeni oluşturduğumuz dizine gidelim.
1 | cd FlaskApp |
Şimdi asıl uygulama dizinini oluşturalım.
1 | mkdir helloworldapp |
Şimdi yeni oluşturduğumuz uygulama dizinimizin içerisine gidelim.
1 | cd helloworldapp/ |
Uygulama klasörü altına static dosyalar ve html sayfalar için iki klasör daha oluşturalım.
123 | mkdir static mkdir templates |
Örnek bir uygulama için Flask Uygulamasının ana dosyasını oluşturalım.
1 | nano __init__.py |
__init__.py dosyasını aşağıdaki şekilde oluşturalım.
123456789101112 | #! /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.
123 | $ sudo virtualenv venv $ source venv /bin/activate (venv)$ |
Flask Kurulumu
Install Flask:
1 | (venv)$ sudo pip install Flask |
Sunucu Çalıştır
Uygulamamızı çalıştırıp herşeyin yolunda gittiğinden emin olalım
1 | (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.
1 | nano /etc/apache2/sites-available/flaskhelloworldsite .com.conf |
12345678910111213141516 | <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.
12 | $ sudo a2ensite flaskhelloworldsite.com.conf $ service apache2 reload |
WSGI dosyasını düzenleyelim
1 | nano /var/www/FlaskApp/helloworldapp/helloworldapp .wsgi |
1234 | #!/usr/bin/python import sys sys.path.insert( 0 , "/var/www/FlaskApp/" ) from helloworldapp import app as application |
/etc/hosts dosyasını düzenleyelim
1 | sudo nano /etc/hosts |
Aşağıdaki satırı /etc/hosts dosyasına ekleyelim:
1 | 127.0.0.1 flaskhelloworldsite.com |
Ayrıca, /var/www/flaskhelloworldsite.com/logs dizinini de oluşturmamız gerekiyor:
1 | $ sudo mkdir -p /var/www/flaskhelloworldsite .com /logs |
Yetkilendirmesini yapalım
1 | $ sudo chown -R www-data:www-data flaskhelloworldsite.com |
Apache Server’ı yeniden başlatalım
1 | $ 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.