Debian 및 fedora 기반 서버에서 WSGI 및 Apache 또는 httpd를 사용하여 Flask 웹 앱 설정

7546 단어

[1] 종속성 설치



데비안




sudo apt-get install libapache2-mod-wsgi python-dev



pip3 install virtualenv


페도라




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 설정



페도라


/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>


데비안



apache2를 실행하는 Debian 기본 시스템의 경우 .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

좋은 웹페이지 즐겨찾기