Table of Contents

Язык программирования Python

Виртуальная среда Python

# apt install python3-venv

$ python3 -m venv ~/venv1

$ source ~/venv1/bin/activate

(venv1) $ which python
(venv1) $ which ansible

(venv1) $ deactivate

Web приложение

(venv1) :~$ pip install Flask

(venv1) :~$ mkdir -p pywebd/; cd $_

(venv1) :~/pywebd$ cat app.py
from flask import Flask, send_from_directory
import os
import configparser

CONST_VER = "ver1.4"

app = Flask(__name__)

@app.route('/')
def index():
   return send_from_directory(pywebd_doc_root, 'index.html')

@app.route('/<path:path>')
def sendstuff(path):
        print(path)
        return send_from_directory(pywebd_doc_root, path)

if __name__ == "__main__":
    config = configparser.ConfigParser()
    config.read('/etc/pywebd/pywebd.conf')
    pywebd_port = os.environ.get('PYWEBD_PORT',config['default']['Listen'])
    pywebd_doc_root = os.environ.get('PYWEBD_DOC_ROOT',config['default']['DocumentRoot'])
    app.run(ssl_context=('/etc/pywebd/pywebd.crt', '/etc/pywebd/pywebd.key'), debug=True, host='0.0.0.0', port=pywebd_port)
# cat /etc/pywebd/pywebd.conf
[default]
DocumentRoot = /var/www/
Listen = 8443
(venv1) :~/pywebd$ #export PYWEBD_PORT=4443
(venv1) :~/pywebd$ #export PYWEBD_DOC_ROOT=/var/www/html/

(venv1) :~/pywebd$ python app.py

(venv1) :~/pywebd$ pip freeze > requirements.txt

Дополнительные материалы

Доступ к каталогу по http

dir$ python3 -m http.server 80