#python #apache #flask
#python #apache #flask
Вопрос:
У меня есть несколько приложений flask var/www/html
, например var/www/html/website
, var/www/html/summary
, var/www/html/sentiment
Как только я успешно запущу все приложения.
Затем я добавил еще одно приложение, для которого я создал файл conf и перезапустил сервер.
После этого все приложения перестали работать, только var/www/html/sentiment
открываются.
Я проверил код в файле python, wsgi и conf для другого приложения так же, как и в sentiment.
Настроенный код приложения
flaskapp.py
from flask import Flask
app = Flask(__name__)
@app.route('/sentiment')
def hello_world():
return 'Hello from Sentiment!'
if __name__ == '__main__':
app.run()
flaskapp.wsgi
import sys
sys.path.insert(0, '/var/www/html/sentiment/')
from flaskapp import app as application
файл conf — /etc/apache2/sites-доступен/sentiment.conf
<VirtualHost *:80>
ServerName IP
ServerAdmin admin@mywebsite.com
WSGIScriptAlias / /var/www/html/sentiment/flaskapp.wsgi
<Directory /var/www/html/sentiment/>
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Краткий код приложения
flaskapp.y
from flask import Flask
app = Flask(__name__)
@app.route('/summary')
def hello_world():
return 'Hello from Summary!'
if __name__ == '__main__':
app.run()
flaskapp.wsgi
import sys
sys.path.insert(0, '/var/www/html/summary/')
from flaskapp import app as application
/etc/apache2/sites-доступно/summary.conf
<VirtualHost *:80>
ServerName IP
ServerAdmin admin@mywebsite.com
WSGIScriptAlias / /var/www/html/summary/flaskapp.wsgi
<Directory /var/www/html/summary/>
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Тем не менее, когда я открываю ip / sentiment, он работает, но ip / summary выдает
The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again.
Есть какие-либо предложения по этому поводу?
Комментарии:
1. ваши приложения работают на одном и том же порту, вы пробовали менять порты для каждого приложения в
app.run(port=xxxx)
?2. Да, я попытался указать другой порт в app.run(), но все та же проблема. Одновременно выполняется только одно приложение
3. Однако, когда вы используете
<VirtualHost *:80>
, кажется, что вы переопределяете порт по умолчанию для своих приложений. это означает, что все ваши приложения работают на порту 80. Вы пробовали использовать разные порты в файле конфигурации?4. да, но, пожалуйста, приведите другой пример порта
5. попробуйте порты от 5005 до 5010, чтобы избежать каких-либо конфликтов с тем, что вы, возможно, уже запустили. вы можете просто настроить каждый экземпляр следующим образом:
<VirtualHost *:5005>
и так далее..
Ответ №1:
Проблема связана с вашим именем WSGIScriptAlias.
/
указывает на все в каталоге.
Дайте уникальные псевдонимы для всех приложений.
Пример:
Изменить /
на /app1
для WSGIScriptAlias
Изменить /
на /app2
для WSGIScriptAlias
в обоих файлах.
Затем перезапустите сервер.