Проект Flask работает на локальном компьютере, но возвращает ошибку 500 на удаленном сервере - PullRequest
0 голосов
/ 09 октября 2018

Я новичок в области кодирования.Я использовал инструкции по следующей ссылке для создания своего веб-приложения, и оно работает на моем локальном компьютере без проблем.

https://www.digitalocean.com/community/tutorials/how-to-deploy-a-flask-application-on-an-ubuntu-vps

После того, как я развернул его на своем удаленном сервере, яполучил ошибку 500.Журнал ошибок показывает:

[Tue Oct 09 02:42:27.517360 2018] [wsgi:error] [pid 6257:tid 140375628965632] [client 99.111.155.184:22844] mod_wsgi (pid=6257): Target WSGI script '/var/www/PersonalApp/personalapp.wsgi' cannot be loaded as Python module.
[Tue Oct 09 02:42:27.517374 2018] [wsgi:error] [pid 6257:tid 140375628965632] [client 99.111.155.184:22844] mod_wsgi (pid=6257): Exception occurred processing WSGI script '/var/www/PersonalApp/personalapp.wsgi'.
[Tue Oct 09 02:42:27.517397 2018] [wsgi:error] [pid 6257:tid 140375628965632] [client 99.111.155.184:22844] Traceback (most recent call last):
[Tue Oct 09 02:42:27.517423 2018] [wsgi:error] [pid 6257:tid 140375628965632] [client 99.111.155.184:22844]   File "/var/www/PersonalApp/personalapp.wsgi", line 8, in <module>
[Tue Oct 09 02:42:27.517460 2018] [wsgi:error] [pid 6257:tid 140375628965632] [client 99.111.155.184:22844]     from PersonalApp import app
[Tue Oct 09 02:42:27.517469 2018] [wsgi:error] [pid 6257:tid 140375628965632] [client 99.111.155.184:22844]   File "/var/www/PersonalApp/PersonalApp/__init__.py", line 6, in <module>
[Tue Oct 09 02:42:27.517482 2018] [wsgi:error] [pid 6257:tid 140375628965632] [client 99.111.155.184:22844]     from wtforms import Form, StringField, PasswordField, TextAreaField, validators
[Tue Oct 09 02:42:27.517518 2018] [wsgi:error] [pid 6257:tid 140375628965632] [client 99.111.155.184:22844] ImportError: No module named wtforms

Project Struture:

|--------PersonalApp
|----------------PersonalApp
|-----------------------static
|-----------------------templates
|-----------------------venv
|-----------------------__init__.py
|----------------personalapp.wsgi

personalapp.wsgi

#! /usr/bin/python

import sys
import logging
logging.basicConfig(stream=sys.stderr)
sys.path.insert(0,"/var/www/PersonalApp/")

from PersonalApp import app as application

__ init__.py (частичный код)

from datetime import datetime
from sqlalchemy.sql.functions import now
from flask import Flask, render_template, flash, redirect, url_for, request
from flask_sqlalchemy.model import Model
from flask_sqlalchemy import SQLAlchemy
from wtforms import Form, StringField, TextAreaField, validators


app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret_key'


if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)

Следующие параметры одинаковы как для локального, так и для удаленного:

Server version: Apache/2.4.18 (Ubuntu)
Python 2.7.12

server
Package          Version
---------------- -------
Click            7.0
Flask            1.0.2
Flask-SQLAlchemy 2.3.2
Flask-WTF        0.14.2
itsdangerous     0.24
Jinja2           2.10
MarkupSafe       1.0
pip              18.1
psycopg2         2.7.5
setuptools       40.4.3
SQLAlchemy       1.2.12
Werkzeug         0.14.1
wheel            0.32.1
WTForms          2.2.1

VERSION="16.04.5 LTS (Xenial Xerus)"

Единственное различие между этими двумя:

сервер

Ubuntu 16.04.5 LTS (GNU/Linux 4.4.0-1069-aws x86_64)

локальный компьютер

Linux Lite 3.8 (GNU/Linux 4.4.0-138-generic i686)Linux Lite 3.8 (GNU/Linux 4.4.0-138-generic i686)

Я не уверен, что мне не хватает, так как он работает на моей локальной машине.Любое руководство будет с благодарностью.Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 16 октября 2018

Я обновил структуру своего проекта, и теперь он работает на пульте.Я НЕ изменил первоначальную структуру на локальной машине, которая все еще работает.Интересно.Может быть, я упустил некоторые мелкие детали.Еще раз спасибо за попытку помочь мне решить мою проблему.

   yourapp/
    config.py
    __init__.py
    views.py
    models.py
    forms.py
    static/
0 голосов
/ 10 октября 2018

Я бы рекомендовал добавить import sys, os; print(sys.version); print(sys.executable); в качестве первой строки в init.py, чтобы проверить, какой интерпретатор python использует ваш mod_wsgi.Если он отличается, то вам следует установить пакеты для интерпретатора python mod_wsgi или указать путь к нужному интерпретатору со всеми установленными пакетами (не уверен, что это возможно в DO).

...