REST API (RESTful) działające na systemie klasy Enterprise

REST API (RESTful) działające na systemie klasy Enterprise

W tym artykule pokażemy, jak w prosty sposób wdrożyć aplikację webową opartą o mikrostrukturę flask, przy wykorzystaniu Apache HTTP Server. Flask jest prostym webowym frameworkiem, często nazywanym micro frameworkiem przez swoją lekkość i prostotę. Apache jest prostym w obsłudze, szeroko stosowanym serwerem HTTP.

W tym artykule pokażemy, jak w prosty sposób wdrożyć aplikację webową opartą o mikrostrukturę flask, przy wykorzystaniu Apache HTTP Server. Flask jest prostym webowym frameworkiem napisanym w języku python. Jest on często nazywany micro frameworkiem przez swoją lekkość i prostotę. Można go jednak wykorzystywać również do większych projektów, a nawet do projektów komercyjnych. Apache jest prostym w obsłudze, szeroko stosowanym serwerem HTTP.

Dystrybucje serwerowe takie jak EuroLinux, CentOS czy Red Hat® Enterprise Linux® są idealnymi systemami dla tego typu aplikacji.

Wymagane komponenty:

  • Python3
  • Virtualenv
  • Apache HTTP Server / httpd
  • mod_wsgi
  • Flask.

Instalacja komponentów

Python3:

sudo yum install python3

Virtualenv:

sudo pip3 install virtualenv

Apache HTTP Server / httpd

sudo yum install httpd
sudo systemctl start httpd
sudo systemctl status httpd

mod_wsgi:

sudo yum install python3-mod_wsgi

Flask zostanie zainstalowany po stworzeniu wirtualnego środowiska przy pomocy polecenia virtualenv.

Tworzenie aplikacji

Stworzona przez nas aplikacja będzie wyposażona w najprostszy mechanizm autentykacji i będzie wypisywała status użytkownika. W przypadku gdy nie jesteśmy zalogowani, wyświetli Gość, a po zalogowaniu nazwę aktywnego użytkownika. Nie zajmiemy się tutaj jednak kwestią frontendu. Będzie to proste bezstanowe API odpowiadające Hello world!.

Tworzenie aplikacji rozpoczynamy od stworzenia katalogu w folderze /var/www/. Od razu tworzymy w nim wirtualne środowisko. Możemy to zrobić w katalogu obok lub bezpośrednio w katalogu, w którym zamierzamy umieścić aplikację.

cd /var/www/
sudo mkdir /var/www/hello_world
sudo virtualenv hello_world

Następnie aktywujemy wirtualne środowisko i przy pomocy pip instalujemy flask.

cd hello_world
. bin/activate
sudo pip3 install flask

Teraz wewnątrz katalogu tworzymy 3 pliki:

  • run.py – odpowiedzialny za uruchamianie aplikacji ręcznie w celu przetestowania jej działania. Zawiera konfigurację, którą flask wykorzysta do uruchomienia naszej aplikacji
#!/usr/bin/env python3

import os
from app import app

if __name__ == "__main__":
    port = int(os.environ.get("PORT", 5000))
    app.run(host='0.0.0.0', port=port, debug=True)
  • app/__init__.py – definiuje pakiet plików, z których składa się aplikacja
#!/usr/bin/env python
from .web import app
  • app/web.py – zawiera całą logikę naszej aplikacji. Dekorator @app.route definiuje identyfikator URI, return zwraca odpowiedź, którą zobaczy użytkownik.
#!/usr/bin/env python

from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello world!"

Teraz możemy przetestować działanie naszej aplikacji:

FLASK_APP=run.app; flask run

 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: off
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

Po wprowadzeniu w przeglądarkę otrzymanego w terminalu adresu, powinniśmy zostać przywitani napisem Hello world!.

Przygotowanie serwera apache

Ostatnim krokiem będzie przygotowanie konfiguracji wsgi oraz serwera Apache HTTP.

Plik wsgi.py wskazuje miejsce, w którym zainstalowane są moduły pythonowe w przygotowanym wcześniej wirtualnym środowisku, importuje pakiety sys and site oraz naszą aplikację.

#!/usr/bin/env python

import sys
import site

site.addsitedir('/var/www/hello_world/lib/python3.6/site-packages')

sys.path.insert(0, '/var/www/hello_world)

from app import app as application

Następnie konfigurujemy serwer Apache. Do pliku, który w przypadku systemów operacyjnych klasy Enterprise, takich jak EuroLinux czy CentOS, znajduje się w /etc/httpd/conf/httpd.conf, dopisujemy następującą konfigurację:

/etc/httpd/conf/httpd.conf

<VirtualHost *:80>

     ServerName localhost

     WSGIDaemonProcess hitme user=apache group=apache threads=2

     WSGIScriptAlias / /var/www/hello_world/wsgi.py

     <Directory /var/www/hello_world>
         Require all granted
     </Directory>

</VirtualHost>

Restartujemy serwer Apache HTTP:

sudo systemctl restart httpd

Teraz należy już tylko sprawdzić, czy po wpisaniu w przeglądarkę localhost, zostajemy przywitani przez komunikat Hello world!.

Podsumowanie

W taki oto sposób prosty serwis można wykorzystać do wyświetlania danych znajdujących się na serwerze i łatwo dodawać do niego kolejne funkcjonalności. W następnych artykułach zaprezentujemy, jak zaimplementować różne sposoby autentykacji i autoryzacji użytkownika, a także prostą bazę danych.

Autorzy

Artykuły na blogu są pisane przez osoby z zespołu EuroLinux. 80% treści zawdzięczamy naszym developerom, pozostałą część przygotowuje dział sprzedaży lub marketingu. Dokładamy starań, żeby treści były jak najlepsze merytorycznie i językowo, ale nie jesteśmy nieomylni. Jeśli zauważysz coś wartego poprawienia lub wyjaśnienia, będziemy wdzięczni za wiadomość.