Язык программирования 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
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'])
if 'PYWEBD_PORT' in os.environ:
pywebd_port = os.environ.get('PYWEBD_PORT')
else:
pywebd_port = config['default']['Listen']
if 'PYWEBD_DOC_ROOT' in os.environ:
pywebd_doc_root = os.environ.get('PYWEBD_DOC_ROOT')
else:
pywebd_doc_root = config['default']['DocumentRoot']
app.run(host="0.0.0.0", port=pywebd_port, debug=True)
# app.run(ssl_context=('/etc/pywebd/pywebd.crt', '/etc/pywebd/pywebd.key'), debug=True, host='0.0.0.0', port=pywebd_port)
# mkdir -p /etc/pywebd/
# cat /etc/pywebd/pywebd.conf
[default]
DocumentRoot = /var/www/
Listen = 4080
# #cp /root/wild.crt /etc/pywebd/pywebd.crt
# #cp /root/wild.key /etc/pywebd/pywebd.key
(venv1) :~/pywebd$ #export PYWEBD_PORT=4443
(venv1) :~/pywebd$ #export PYWEBD_DOC_ROOT=/var/www/html/
(venv1) :~/pywebd$ #PYWEBD_PORT=4443 PYWEBD_DOC_ROOT=/var/www/html/ python app.py
(venv1) :~/pywebd$ python app.py
(venv1) :~/pywebd$ pip freeze | tee requirements.txt
Дополнительные материалы
Доступ к каталогу по http
dir$ python3 -m http.server 80