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.comServerAdmin webmaster@flaskhelloworldsite.comServerAlias flaskhelloworldsite.com WSGIDaemonProcess helloworldapp user=www-data group=www-data threads=5WSGIProcessGroup helloworldappWSGIScriptAlias / /var/www/FlaskApp/helloworldapp/helloworldapp.wsgiAlias /static /var/www/FlaskApp/helloworldapp/static<Directory /var/www/FlaskApp/helloworldapp/static>Order allow,denyAllow from all</Directory>ErrorLog /var/www/flaskhelloworldsite.com/logs/error.logCustomLog /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.