[英]504 Gateway Time-out The server didn't respond in time
I use a virtual machine to run my flask app 'sqtf'. 我使用虚拟机运行烧瓶应用程序“ sqtf”。 She works on local using 127.0.0.1:5000, but not with my apache server. 她使用127.0.0.1:5000在本地工作,但不适用于我的apache服务器。 I use python3.6, apache2.4 and mod_wsgi. 我使用python3.6,apache2.4和mod_wsgi。 this is a simplified structure of my project: 这是我的项目的简化结构:
/var/www/squashPy/src/squash_test_filter/
/sqtf
sqtf.wsgi
__init__.py
/static
/templates
/venv
After configuring my VirtualHost 'sqtf.com.conf' on apache and then my sqtf.wsgi (configuring also my virtualenv and /etc/hosts), the server respond at www.sqtf.com but in my login page or any other, 'www.sqtf.com/auth/login' 504 Gateway Timeout Server port 80. 在apache上配置我的VirtualHost'sqtf.com.conf',然后在我的sqtf.wsgi(还配置我的virtualenv和/ etc / hosts)上配置服务器之后,该服务器会在www.sqtf.com上做出响应,但会在我的登录页面或其他任何位置进行响应, www.sqtf.com/auth/login'504网关超时服务器端口80。
In my error.log : 在我的error.log中:
Timeout when reading response from deamon process 'sqtf': /var/www/squashPy/src/squash_test_filter/sqtf/sqtf.wsgi 从守护进程'sqtf'读取响应时超时:/var/www/squashPy/src/squash_test_filter/sqtf/sqtf.wsgi
I added a python-home in my DeamonProcess. 我在DeamonProcess中添加了一个python-home。 Increase Timeout doesn't change anything. 增加超时不会更改任何内容。
my sqtf.com.conf 我的sqtf.com.conf
<VirtualHost *:80>
ServerName www.sqtf.com
ServerAlias sqtf.com
ErrorLog /var/www/squashPy/sqtf.com/logs/error.log
CustomLog /var/www/squashPy/sqtf.com/logs/custom.log combined
WSGIDaemonProcess sqtf python-home='var/www/squashPy/src/squash_test_filter/venv'
WSGIProcessGroup sqtf
WSGIApplicationGroup %{GLOBAL}
WSGIScriptAlias / /var/www/..../sqtf/sqtf.wsgi
Alias /static/ /var/wwww/..../sqtf/static
<Directory /var/www/..../static>
Require all granted
</Directory>
<VirtualHost>
my sqtf.wsgi 我的sqtf.wsgi
activate_this='/var/www/..../venv/bin/activate_this.py'
with open(activate_this) as file_:
exec(file_.read(), dict(__file__=activate_this))
import sys
import logging
sys.path.insert(0, "/var/www/squashPy/src/squash_test_filter/")
from sqtf import app as application
a part of my /etc/hosts : 我的/ etc / hosts的一部分:
127.0.0.1 localhost
127.0.1.1 ubuntu
127.0.0.1 www.sqtf.com sqtf.com sqtf
# etc ...
a part of my /sqtf/ init .py 我的/ sqtf / init .py的一部分
import ...
def create_app(test_config=None):
# create and configure the app
app = Flask(__name__, instance_relative_config=True)
api = Api(app)
app.config.from_mapping(
SECRET_KEY='dev',
DATABASE=os.path.join(app.instance_path, 'sqtf.sqlite'),
)
if test_config is None:
# load the instance config, if it exists, when not testing
app.config.from_pyfile('config.py', silent=True)
else:
# load the test config if passed in
app.config.from_mapping(test_config)
# ensure the instance folder exists
try:
os.makedirs(app.instance_path)
except OSError:
pass
db.init_app(app)
return app
I solve the problem, if you use a flask factory, with create_app for example, you need to change this line from sqtf import app as application
in your .wsgi by this : 我解决了这个问题,例如,如果您使用烧瓶工厂,例如create_app,则需要通过以下方式将from sqtf import app as application
更改from sqtf import app as application
.wsgi中的这一行:
from sqtf import create_app
application=create_app()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.