gpt4 book ai didi

python - apache2 上的 Flask 应用程序出现 404 url​​ not found 错误

转载 作者:太空宇宙 更新时间:2023-11-03 14:21:39 31 4
gpt4 key购买 nike

我用 Flask 编写了一个端点来处理 json 格式的 http post 请求数据。当尝试在 apache2 上部署它时,post 请求收到 404 错误:“在此服务器上找不到请求的 URL/bridge”。我正在使用 python 3.5.2、apache 2.4、OpenSSL/1.0.2g、ubuntu 16.04、为 python 3.5.1+ 编译的 mod_wsgi4.3.0

有人有什么想法吗? Apache 无法看到/var/www 但为什么呢?或者SSL配置有问题? (https 适用于网站)

我有

位于/var/www/bridge/bridge.wsgi

#!/usr/bin/python3
import sys

sys.path.insert(0,'/var/www/bridge')

from bridge import app as application

conf 文件位于/etc/apache2/sites-enabled/bridge.conf

<VirtualHost *:443>
ServerName www.newocto.org

WSGIDaemonProcess bridge user=www-data group=www-data threads=5 home=/var/www/bridge/
WSGIScriptAlias /bridge /var/www/bridge/bridge.wsgi

<Directory /var/www/bridge>
WSGIProcessGroup bridge
WSGIApplicationGroup %{GLOBAL}


Require all granted
</Directory>

我的 000-default.conf 文件是这样的:

<VirtualHost *:443>
# The ServerName directive sets the request scheme, hostname and port that
# the server uses to identify itself. This is used when creating
# redirection URLs. In the context of virtual hosts, the ServerName
# specifies what hostname must appear in the request's Host: header to
# match this virtual host. For the default virtual host (this file) this
# value is not decisive as it is used as a last resort host regardless.
# However, you must set it for any further virtual host explicitly.
ServerName www.newocto.org
DocumentRoot /var/www/html

SSLEngine on
SSLCertificateFile /etc/ssl/certs/newocto_org.crt
SSLCertificateKeyFile /etc/ssl/private/newocto.key
SSLCertificateChainFile /etc/ssl/certs/COMODORSAAddTrustCA.crt
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{SERVER_NAME}/$1 [R,L]

# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with "a2disconf".
#Include conf-available/serve-cgi-bin.conf
</VirtualHost>

<VirtualHost *:80>
ServerName newocto.org/
Redirect / https://newocto.org/
</VirtualHost>

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

我的 flask 代码在/var/www/bridge/bridge.py 是

#!/usr/bin/python3

from flask import Flask


app = Flask(__name__)

@app.route('/', methods =['POST'])
def deliver():
from flask import request
raw=request.get_json(force=True)
return raw

import mysql.connector
dbconn= mysql.connector.connect(host='xxxx',port='3306',database='xx',user='root',password='xxx')
cursor=dbconn.cursor()
query="""insert into bridge_test2 (email) values ('{}')""".format(raw)
cursor.execute(query)
dbconn.commit()
dbconn.close()


if __name__ == '__main__':
app.run()



#file permissions are like this:
#4 -rwxr-xr-x 1 root www-data 537 Dec 20 13:46 bridge.py
#4 -rwxr-xr-x 1 root www-data 117 Dec 20 14:10 bridge.wsgi

最佳答案

你不能有两个 VirtualHost相同的部分 ServerName和端口,它只会使用它看到的第一个。

复制 VirtualHost 的内容在bridge.conf进入000-default.conf同样ServerName和端口。

关于python - apache2 上的 Flask 应用程序出现 404 url​​ not found 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47906730/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com