[英]Python Flask app to output remote server text file to webserver using ajax and display on webpage getting 404 not found
我有一個運行我的網站的Web服務器(帶有Apache的Fedora),當前正在嘗試創建Flask應用,以接收來自我的app.js
文件的AJAX調用,然后最終使用FTP
獲取遠程文本文件的內容以進行輸出回到網站。
當我撥打AJAX電話時,遇到路線打我的Flask應用程序時遇到問題。 我相信我知道問題出在哪里,我的AJAX調用沒有撥打端口5000,這就是為什么我在控制台中看到404錯誤的原因。 但是,當我手動執行curl -X GET http://127.0.0.1:5000/index -d'test'
我確實看到按預期返回了正確的index.html
頁面。
因此,我的問題是,通常如何在Apache Web服務器上設置Flask?
這是我對Flask(app.py)的AJAX調用。
app.js:
$(function(){ // this call is returning 404 not found.
$('button').click(function(){
$.ajax({
url: '/index',
data: user,
type: 'POST',
success: function(response){
console.log("Here is the success res: " + response + user);
},
error: function(error){
console.log("Here is the error res: " + error + user);
}
});
});
});
這是我的Flask函數路由我的調用的地方。
app.py:
from flask import Flask, request, send_file, render_template, json
from ftplib import FTP
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'hello world!'
@app.route('/index', methods=['GET', 'POST'])
def index():
return render_template('index.html')
if __name__ == "__main__":
app.run()
所有偵聽端口80的進程:
# lsof -i:80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
/opt/lamp 3179 daemon 4u IPv6 2190211 0t0 TCP *:http (LISTEN)
/opt/lamp 6833 daemon 4u IPv6 2190211 0t0 TCP *:http (LISTEN)
/opt/lamp 7665 root 4u IPv6 2190211 0t0 TCP *:http (LISTEN)
/opt/lamp 7909 daemon 4u IPv6 2190211 0t0 TCP *:http (LISTEN)
/opt/lamp 7919 daemon 4u IPv6 2190211 0t0 TCP *:http (LISTEN)
/opt/lamp 10892 daemon 4u IPv6 2190211 0t0 TCP *:http (LISTEN)
/opt/lamp 11676 daemon 4u IPv6 2190211 0t0 TCP *:http (LISTEN)
/opt/lamp 11843 daemon 4u IPv6 2190211 0t0 TCP *:http (LISTEN)
/opt/lamp 12345 daemon 4u IPv6 2190211 0t0 TCP *:http (LISTEN)
/opt/lamp 12755 daemon 4u IPv6 2190211 0t0 TCP *:http (LISTEN)
/opt/lamp 20204 daemon 4u IPv6 2190211 0t0 TCP *:http (LISTEN)
此頁面詳細介紹了您的部署選項。
Flask(和一般的python應用程序)之間的最大區別在於,PHP本身就是一個模板系統。 對於您的Web服務器,每個PHP文件只是一個HTML文件。 請記住,按照其自身的定義,PHP是超文本處理器。
另一方面,Python Web應用程序是在服務器上運行的應用程序,可隨時處理請求並返回html。 基本上,您需要一方面能夠運行python應用程序,另一方面能夠處理來自外界的請求並返回網頁。
在您已經安裝了Apache且可以正常工作的安裝程序上,我將使用mod_wsgi / Apache方法 。 這使用Python Web服務器網關接口在運行的應用程序和Apache之間提供了紐帶。
您也可以使用Gunicorn ,但是如果您已經熟悉Apache,那么mod_wsgi可能是最好的。
值得注意的是,您僅應在完成測試后才部署應用程序,因為調試無法在任何分支環境中進行(如果可能,則存在巨大的安全風險)。 如果您的問題是本地測試的端口,請更改:
app.run()
至:
app.run('localhost', port='80', debug=True)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.