Содержание
[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