Назад | Перейти на главную страницу

Как настроить Wordpress и Flask на одном сервере с Apache?

Я установил 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>

Приложение My 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, но я получаю страницу 404 на mydomain.com/newsletter, mydomain.com/api_list, mydomain.com/newsletter/api_list и все другие комбинации, которые я пробовал. Должен ли я меняться .htaccess? Должно ли мое приложение Flask находиться в том же каталоге, что и WordPress? Я уже пробовал переместить каталог приложения в public_html и добавив правило RewriteCond %{REQUEST_URI} !^/newsletter к .htaccess файл, но он просто показывает .py и .wsgi файлы, не запускающие скрипт.

Вот как я это решил:

  • Я менял не-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, чтобы отсортировать оставшиеся ошибки