Как заставить Apache2 перестать отказывать в обслуживании Flask через порт 8080 (пока он обслуживает его через порт 80?) - PullRequest
0 голосов
/ 10 июля 2019

Я пытаюсь создать приложение "Hello world" с Python и Flask.Я хочу, чтобы он был развернут с Apache2 на порту 8080.

До сих пор мой сервер Apache2 прослушивал порт 80 для http и порт 443 для https.На 80 нет ничего, поэтому я сначала попытался использовать его для своего приложения Flask.

Следуя документации Flask, я установил модуль wsgi на Apache2 и создал свою конфигурацию Flask в Apache2 с VirtualHost, подключенным к порту 80. Я перезапустил Apache2, и все было хорошо: я увидел «Hello world» в своем браузере,И я был счастлив.

Затем я решил просто перейти с порта 80 на порт 8080. Я добавил директиву Listen в ports.conf на Apache, я изменил VirtualHost *: 80 на VirtualHost *: 8080 вмоя конфигурацияИ я перезапустил Apache2.И с тех пор это не работает вообще!

У меня нет абсолютно никаких сообщений об ошибках в /var/log/apache2/error.log и в других местах.

Я дважды (или бесконечно) проверил, что в Apache2 ports.conf слушает 8080Я проверил, что в Apache2 мой VirtualHost тоже на 8080.Я проверил, что 8080 слушает, когда Apache2 перезапускается ...

Я не могу понять, что не работает.Почему это работает на порту 80, а не на порту 8080 ...?У меня также есть порт 443 SSL с VirtualHost для другого приложения на том же сервере и ServerName.Возможно, что с портом 8080 возникает конфликт (я должен сказать, что я не специалист по Apache2).

Вот информация о моей конфигурации и кодах:

Apache2 ports.conf:

# If you just change the port or add more ports here, you will likely also
# have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default.conf

Listen 80
Listen 8080

<IfModule ssl_module>
   Listen 443
</IfModule>

<IfModule mod_gnutls.c>
   Listen 443
</IfModule>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

Apache2 conf для моего виртуального хоста:

<VirtualHost *:8080>
        ServerName aaa.bbb.fr
        #DocumentRoot /var/www/flaskapps/helloworldapp/
        LogLevel trace5
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
        WSGIDaemonProcess helloworldapp user=www-data group=www-data threads=5
        WSGIScriptAlias / /var/www/flaskapps/helloworldapp/helloworldapp.wsgi
        <Directory /var/www/flaskapps/helloworldapp>
                WSGIProcessGroup helloworldapp
                WSGIApplicationGroup %{GLOBAL}
                Order allow,deny
                Allow from all
        </Directory>
</VirtualHost>

Helloworldapp.py:

from flask import Flask

app = Flask(__name__)

@app.route('/')
def helloworldapp():
    return 'Hello, World!'
if __name__ == "__main__":
    app.run(port=8080, debug=True)

(порт = 8080, похоже, не действует:это не мешает моему коду запускаться на порту 80)

Helloworldapp.wsgi:

#!/usr/bin/python
import sys
sys.path.insert(0, '/var/www/flaskapps/helloworldapp')
from helloworldapp import app as application

Результаты netstat -lntp:

tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN      -
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      -
...