Установка веб-приложения Flask с использованием WSGI и Apache или httpd на серверах на базе Debian и fedora


[1] Установка Dependence

Debian

sudo apt-get install libapache2-mod-wsgi python-dev
Вход в полноэкранный режим Выход из полноэкранного режима
pip3 install virtualenv
Войти в полноэкранный режим Выйти из полноэкранного режима

Fedora

sudo dnf install python-dev python3-pip mod_wsgi
Войти в полноэкранный режим Выход из полноэкранного режима
pip3 install virtualenv
Войти в полноэкранный режим Выход из полноэкранного режима

[2] Настройка файловой системы

mkdir /var/www/webapp
mkdir /var/www/webapp/logs
mkdir /var/www/webapp/static
touch app.py && touch webapp.wsgi
cd /var/www/webapp
Войти в полноэкранный режим Выход из полноэкранного режима
virtualenv venv
source venv/bin/activate
Войти в полноэкранный режим Выход из полноэкранного режима
pip install flask
Войти в полноэкранный режим Выход из полноэкранного режима

app.py содержимое

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello():
    return 'Hello, World!'

if __name__ == "__main__":
    app.run()
Войти в полноэкранный режим Выход из полноэкранного режима

webapp.wsgi содержимое

#!/usr/bin/python
import sys
import logging

activate_this = "/var/www/webapp/venv/bin/activate_this.py"
logging.basicConfig(stream=sys.stderr)
sys.path.insert(0, '/var/www/web-app/webapp')

with open(activate_this) as file_:
    exec(file_.read(), dict(__file__=activate_this))

from app import app as application
Войти в полноэкранный режим Выход из полноэкранного режима

[3] Настройка httpd

Fedora

В /etc/httpd/conf.d/ создайте новый файл конфигурации с любым именем flaskwebapp.conf.

<VirtualHost *:80>

    ServerName <you_server_ip>

    ServerAdmin <email>

    WSGIDaemonProcess <webapp> user=apache group=apache threads=5
    WSGIScriptAlias / /var/www/webapp/webapp.wsgi

    <Directory /var/www/webapp/>
        Order allow,deny
        Allow from all
    </Directory>

    #FOR FLASK STATIC FOLDER

    Alias /static /var/www/web-app/webapp/static

    <Directory /var/www/webapp/static/>
        Order allow,deny
        Allow from all
    </Directory>

</VirtualHost>
Вход в полноэкранный режим Выход из полноэкранного режима

Debian

для базовой системы Debian под управлением apache2, создайте .conf в /etc/apache2/sites-available/FlaskApp

Содержание .conf

<VirtualHost *:80>

    ServerName <you_server_ip>

    ServerAdmin <email>

    WSGIDaemonProcess <webapp> user=apache group=apache threads=5
    WSGIScriptAlias / /var/www/webapp/webapp.wsgi

    <Directory /var/www/webapp/>
        Order allow,deny
        Allow from all
    </Directory>

    #FOR FLASK STATIC FOLDER

    Alias /static /var/www/web-app/webapp/static

    <Directory /var/www/webapp/static/>
        Order allow,deny
        Allow from all
    </Directory>

</VirtualHost>
Войдите в полноэкранный режим Выйти из полноэкранного режима

после создания .conf выполните следующее sudo a2ensite <naem_of_the_conf_without_.conf>

[4] изменение контекста для Fedora

Для папки проекта

cd /var/www
semanage fcontext -a -t httpd_sys_content_t './webapp(/.*)?'
restorecon -vvRF ./webapp
Войдите в полноэкранный режим Выйти из полноэкранного режима

Для скрипта WSGI

cd /var/www
semanage fcontext -a -t httpd_sys_script_exec_t './webapp/webapp.wsgi'
restorecon -vvRF ./webapp/webapp.wsgi
Войти в полноэкранный режим Выйти из полноэкранного режима

Для проверки контекста

ls -ldZ <file_or_dir>
Войти в полноэкранный режим Выйти из полноэкранного режима

[5] Обновить сервер

sudo systemctl stop httpd
sudo systemctl start httpd
sudo systemctl enable httpd
Войти в полноэкранный режим Выйти из полноэкранного режима

Чтобы проверить статус

sudo systemctl status httpd
Войти в полноэкранный режим Выйти из полноэкранного режима

Оцените статью
Procodings.ru
Добавить комментарий