如何在同一台服务器上使用 Apache 设置 Wordpress 和 Flask?

如何在同一台服务器上使用 Apache 设置 Wordpress 和 Flask?

我在服务器上安装了 WordPress,它运行良好。现在我尝试在同一台服务器上设置另一个使用 Flask 制作的应用程序。这是我的.conf文件现在的样子:

<Directory /var/www/html/mydomain.com/public_html>
    Require all granted
</Directory>

<VirtualHost 127.0.0.1:80 *:80>
    ServerName mydomain.com
    ServerAlias www.mydomain.com
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html/mydomain.com/public_html

    WSGIDaemonProcess test user=www-data group=group-wp threads=5
    WSGIScriptAlias /newsletter /var/www/newsletter.wsgi

    <Directory /var/www/html/mydomain.com/public_html/newsletter>
        WSGIProcessGroup test
        WSGIApplicationGroup %{GLOBAL}
        Require all granted
    </Directory>

    ErrorLog /var/www/html/mydomain.com/logs/error.log
    CustomLog /var/www/html/mydomain.com/logs/access.log combined

    RewriteEngine on
    RewriteCond %{SERVER_NAME} =www.mydomain.com [OR]
    RewriteCond %{SERVER_NAME} =mydomain.com
    RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>

我的 Flask 应用程序test.py如下所示

import sqlite3
from flask import Flask, g, jsonify, abort, request

app = Flask(__name__)

@app.route('/', methods=['GET'])
def index():
    return "testing"

@app.route('/api/list', methods=['GET'])
def list_all():
    return "also testing"

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

我的newsletter.wsgi文件如下所示:

import sys

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

from test import app as application

我已经安装了libapache2-mod-wsgi-py3运行 wsgi 脚本,但在mydomain.com/newslettermydomain.com/api_list以及mydomain.com/newsletter/api_list我尝试过的所有其他组合.htaccess处都出现了 404 页面。我应该更改吗?我的 Flask 应用程序应该与 WordPress 位于同一目录中吗?我已经尝试将应用程序目录移动到public_html并将规则添加RewriteCond %{REQUEST_URI} !^/newsletter.htaccess文件,但它只显示.py.wsgi文件,而不是运行脚本。

答案1

以下是我解决问题的方法:

  • 我正在更改非 SSL.conf文件。certbot(来自 Let's Encrypt)会自动.conf使用新的 SSL 设置创建一个新文件
  • mod_wsgi 使用的是 Python 2,但未安装 Flask
  • 我卸载了 mod_wsgi,用 更新了 Apache apt-get,然后用 重新安装了 mod-wsgi pip3 install mod_wsgi。更多详细信息这里
  • 我检查了 error.log 以找出剩余的错误

相关内容