apache2 не показывает приложение фляги на локальном сервере

Я следовал этому руководству: https://pythonprogramming.net/creating-first-flask-web-app/?completed=/flask-web-development-introduction/

На моем локальном сервере (домашняя машина в локальной сети). Сам Flask запускается правильно

>>> python /var/www/FlaskApp/FlaskApp/__init__.py 
* Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
127.0.0.1 - - [31/Oct/2016 22:56:29] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [31/Oct/2016 22:56:29] "GET /favicon.ico HTTP/1.1" 404 -

фласк запускается Но Apache показывает свою веб-страницу по умолчанию, несмотря ни на что.

судо a2enmod wsgi

Module wsgi already enabled

кошка /var/www/FlaskApp/FlaskApp/init.py

from flask import Flask
app = Flask(__name__)
@app.route('/')
def homepage():
    return "Hi There, how you're doin?"
if __name__ == "__main__":
    app.run()(debug=True)

кошка /etc/apache2/сайты-доступны/FlaskApp.conf

<VirtualHost *>
                ServerName dagzserv
                ServerAdmin [email protected]
                WSGIScriptAlias / /var/www/FlaskApp/flaskapp.wsgi
                <Directory /var/www/FlaskApp/FlaskApp/>
            Require all granted
                </Directory>
                Alias /static /var/www/FlaskApp/FlaskApp/static
                <Directory /var/www/FlaskApp/FlaskApp/static/>
            Require all granted
                </Directory>
                ErrorLog ${APACHE_LOG_DIR}/error.log
                LogLevel warn
                CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

sudo a2ensite FlaskApp

Site FlaskApp already enabled

Я попытался добавить app.run(host='0.0.0.0', port=5000). У меня есть /etc/hosts dagserv в качестве моего IP-адреса в локальной сети (10.0.1.xxx). Также пробовал ServerName как localhost.

Одна вещь, которую я не понял, это то, как именно Apache находит этот «FlaskApp.conf», но я предположил, что он сканирует свой каталог конфигурации (/etc/apache2/sites-available/FlaskApp.conf)

Я не получаю ошибок в /var/logs/apache2

доступ к коту.log

10.0.1.14 - - [31/Oct/2016:22:46:52 -0700] "GET / HTTP/1.1" 200 3524 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36"
10.0.1.14 - - [31/Oct/2016:22:49:14 -0700] "GET / HTTP/1.1" 200 3524 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36"
10.0.1.14 - - [31/Oct/2016:22:49:15 -0700] "GET / HTTP/1.1" 200 3523 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36"
10.0.1.101 - - [31/Oct/2016:22:56:18 -0700] "GET /favicon.ico HTTP/1.1" 404 499 "-" "Mozilla/5.0 (X11; Ubuntu; Linux armv7l; rv:49.0) Gecko/20100101 Firefox/49.0"

кошка error.log

[Mon Oct 31 22:45:47.288264 2016] [wsgi:warn] [pid 982] mod_wsgi: Compiled for Python/2.7.11.
[Mon Oct 31 22:45:47.288623 2016] [wsgi:warn] [pid 982] mod_wsgi: Runtime using Python/2.7.12.
[Mon Oct 31 22:45:47.314433 2016] [mpm_prefork:notice] [pid 982] AH00163: Apache/2.4.18 (Ubuntu) mod_wsgi/4.3.0 Python/2.7.12 configured -- resuming normal operations
[Mon Oct 31 22:45:47.314616 2016] [core:notice] [pid 982] AH00094: Command line: '/usr/sbin/apache2'
[Mon Oct 31 22:48:52.171206 2016] [mpm_prefork:notice] [pid 982] AH00169: caught SIGTERM, shutting down
[Mon Oct 31 22:48:53.766824 2016] [wsgi:warn] [pid 2360] mod_wsgi: Compiled for Python/2.7.11.
[Mon Oct 31 22:48:53.766940 2016] [wsgi:warn] [pid 2360] mod_wsgi: Runtime using Python/2.7.12.
[Mon Oct 31 22:48:53.775947 2016] [mpm_prefork:notice] [pid 2360] AH00163: Apache/2.4.18 (Ubuntu) mod_wsgi/4.3.0 Python/2.7.12 configured -- resuming normal operations
[Mon Oct 31 22:48:53.776083 2016] [core:notice] [pid 2360] AH00094: Command line: '/usr/sbin/apache2'

person tmdag    schedule 01.11.2016    source источник
comment
Вы пытались поместить конфигурацию своего виртуального хоста в самый верх файла 000-default.conf? Также используйте *:80 вместо * в открывающем теге VirtualHost.   -  person Apoorv Kansal    schedule 01.11.2016
comment
При использовании mod_wsgi app.run() не используется. Какой URL вы используете? Поскольку у вас есть VirtualHost и ServerName из dagzserv, URL-адрес должен быть http://dagzerv/. Если вместо этого вы используете IP-адрес, вместо него будет использоваться значение по умолчанию VirtualHost.   -  person Graham Dumpleton    schedule 01.11.2016
comment
@GrahamDumpleton, спасибо за совет app.run(), не знал об этом. Я пробовал dagzserv, а также IP-адрес 10.0.1.101. Оба просто показывают чистую сеть Apache по умолчанию (версия Ubuntu, если это что-то меняет)   -  person tmdag    schedule 01.11.2016
comment
Попробуйте использовать <VirtualHost *:80>. Обычно у вас всегда есть порт. Также добавьте синтаксическую ошибку в файл конфигурации, чтобы убедиться, что Apache действительно его читает.   -  person Graham Dumpleton    schedule 01.11.2016
comment
@ApoorvKansal Еще не пробовал (не хотел возиться с настройками apache по умолчанию. В целом мне кажется странным, что вам нужно создавать конфигурацию apache для каждого отдельного приложения, которое вы создаете :)   -  person tmdag    schedule 01.11.2016
comment
Вы делаете это не для каждого приложения, вы делаете это для каждого уникального VirtualHost. Если вы используете ServerName для того же хоста и порта в другом месте, думая, что вам нужно по одному для каждого приложения, тогда он будет использовать первый найденный.   -  person Graham Dumpleton    schedule 01.11.2016
comment
@GrahamDumpleton *:80 - это было изначально. Я просто проверял, будет ли это иметь какое-то значение для меня - это не имело значения :(   -  person tmdag    schedule 01.11.2016
comment
А как насчет добавления синтаксической ошибки? Файл точно прочитан.   -  person Graham Dumpleton    schedule 01.11.2016
comment
хорошо, так что поместив его поверх 000-default.conf, ДЕЙСТВУЕТ трюк (ура!), но я думаю, что это не чистое решение, не так ли? Является ли 000-default.conf обязательным для всех других confs? (и я тоже вернулся к *:80)   -  person tmdag    schedule 01.11.2016


Ответы (1)


1. Как Apache находит этот «FlaskApp.conf»

В /etc/apache2/apache2.conf есть одна строка для включения конфигураций виртуального хоста:

# Include the virtual host configurations:
IncludeOptional sites-enabled/*.conf

Сервер Apache2 загрузит apache2.conf, а также включит конфигурации виртуального хоста.

2. Почему Apache показывает свою веб-страницу по умолчанию, несмотря ни на что.

Если вы обращаетесь к серверу через IP-адрес, Apache вернется на основе конфигурации сайта по умолчанию в /etc/sites-available/000-default.conf. Поэтому, если вы хотите получить доступ к своему серверу WSGI через IP-адрес, вам следует сначала отключить конфигурацию сайта Apache по умолчанию:

sudo a2dissite 000-default.conf
service apache2 restart
person Yingbo Cui    schedule 30.05.2018