
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.