Как развернуть веб-приложение Flask / Vue.js - PullRequest
0 голосов
/ 08 февраля 2019

Мне нужна помощь в развертывании моего веб-приложения Flask / Vue.js.

Текущая настройка: Интерфейс Vue.js с vue-router со статическими страницами + внутренний интерфейс Flask (общение черезAjax, необходим только для облегчения отправки электронного письма через форму).

Проблема:

Я озадачен тем, как развернуть его на VPS:

  • Два процесса на двух разных портах, один для uWsgi + Flask и один для Vue, при этом Nginx обслуживает их
  • Один единственный процесс - Uswgi + Flask для обслуживания статических (встроенных) страниц Vue,Nginx перед ними.Каким-то образом Flask нужно перенаправить запрос в соответствующий статический вид.
  • Что-то еще

My Backsnd / Flask Backend / API:

from flask_cors import CORS
from flask_mail import Message
from datetime import datetime
import pytz
from flask_mail_sendgrid import MailSendGrid
from config import confreader

app = Flask(__name__)

app.config.from_object(confreader)

curdate = str(datetime.now(pytz.timezone("Europe/Bucharest")))

cors = CORS(app, resources={r"/api/*": {"origins": "*"}})

mail = MailSendGrid(app)

@app.route('/api/sendemail', methods=['POST'])
def send_email():

    subject = '[Contact Form Message] ' + request.json['name'] + ' on ' + curdate
    template = f"""
    <h1>{request.json['name']} ({request.json['email']}) on {curdate}</h1>
    <p>{request.json['text']}</p>"""

    msg = Message(
        subject,
        recipients=[app.config['MAIL_DEFAULT_SENDER']],
        html=template,
        sender=request.json['email']
    )

    try:
      mail.send(msg)
      return jsonify(True)
    except:
      return jsonify(False)

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

Спасибо!

1 Ответ

0 голосов
/ 08 февраля 2019

Nginx может обслуживать статические файлы, поэтому вы можете указать Nginx каталог, в котором находится ваше скомпилированное приложение Vue.js.В то же время он также должен служить приложению Flask.Таким образом, должно быть определено два местоположения.

Вероятно, есть несколько способов сделать это, вот случайный пример, который я нашел в Интернете:

server {  
    listen 80;
    server_name 123.45.67.89;

    location /api {
        include uwsgi_params;
        uwsgi_pass unix:/home/survey/flask-vuejs-survey/backend/surveyapi.sock;
    }

    location / {
        root /home/survey/flask-vuejs-survey/frontend/survey-spa/dist;
        try_files $uri $uri/ /index.html;
    }
}

https://stackabuse.com/single-page-apps-with-vue-js-and-flask-deployment/#settingupnginx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...