2016-08-04 6 views
2

현재 응용 프로그램을 개발 중입니다. 이 웹 앱의 도메인은 이며입니다. 처음에 내가 도메인을 만들었고 cname을 사용하여 등록 기관을 설정했는데 두 시간이 지나면 성공적으로 표시되었습니다. "이것은 플라스크 응용 프로그램입니다 ..." 그런 식으로.flask megatutorial을 기반으로 pythonanyhwere에 Flask를 설정하는 방법

나는 자신의 저서 「Mr. Grinberg」의 예를 따르기로 결정했다. 그래서 개인 저장소를 pythonanywhere에 복제하고 다음 명령을 실행했습니다.

python manage.py db init 
python manage.py db upgrade 
python manage.py migrate 

지금까지 모든 것이 괜찮습니다. 그리고 나는 mysql 워크 벤치을 사용하여 mysql 데이터베이스를 체크 아웃했다.

이제 문제가됩니다. 내가 python manage.py runserver

을 실행할 때

그것은 나에게 다음과 같은 오류가 발생합니다.

/home/username/.virtualenvs/webapp/local/lib/python2.7/site-packages 

/flask_sqlalchemy/__init__.py:800: UserWarning: SQLALCHEMY_TRACK_MODIFICA 
TIONS adds significant overhead and will be disabled by default in the future. Set it to True to suppress this warning. 
    warnings.warn('SQLALCHEMY_TRACK_MODIFICATIONS adds significant overhead and will be disabled by default in the future. Set it to True to su 
ppress this warning.') 
Traceback (most recent call last): 
    File "manage.py", line 20, in <module> 
    manager.run() 
    File "/home/username/.virtualenvs/webapp/local/lib/python2.7/site-packages/flask_script/__init__.py", line 412, in run 
    result = self.handle(sys.argv[0], sys.argv[1:]) 
    File "/home/username/.virtualenvs/webapp/local/lib/python2.7/site-packages/flask_script/__init__.py", line 383, in handle 
    res = handle(*args, **config) 
    File "/home/username/.virtualenvs/webapp/local/lib/python2.7/site-packages/flask_script/commands.py", line 425, in __call__ 
    **self.server_options) 
    File "/home/username/.virtualenvs/webapp/local/lib/python2.7/site-packages/flask/app.py", line 843, in run 
    run_simple(host, port, self, **options) 
    File "/home/username/.virtualenvs/webapp/local/lib/python2.7/site-packages/werkzeug/serving.py", line 677, in run_simple 
    s.bind((hostname, port)) 
    File "/usr/lib/python2.7/socket.py", line 224, in meth 
    return getattr(self._sock,name)(*args) 
socket.error: [Errno 98] Address already in use 

wsgi.py 파일을 사용하지 않으려 고 시도했습니다 (모든 것을 주석 처리합니다).

상황이 알아야 할 사항

  1. 내가 유료 ACOUNT 있습니다.
  2. 이것은 pythonanywhere의 두 번째 웹 응용 프로그램입니다. (첫 번째는 튜토리얼을 기반으로 모델링하고 잘 작동되지 않음)

편집

내가 9000에 5000에서 포트를 변경하고 콘솔에서 실행됩니다. 하지만 내 사이트를 방문 할 수 없습니다. wsgi 파일을 주석 처리해야합니까?

현재는 좋아하는이 같습니다

import sys 

# # add your project directory to the sys.path 
project_home = u'/home/username/e_orders/e_orders' 
if project_home not in sys.path: 
    sys.path = [project_home] + sys.path 

# # import flask app but need to call it "application" for WSGI to work 
from manager import app as application 

manage.py

import os 
from app import create_app, db 
from app.models import User 
from flask_script import Manager, Shell, Server 
from flask_migrate import Migrate, MigrateCommand 


app = create_app(os.getenv('FLASK_CONFIG') or 'default') 
manager = Manager(app) 
migrate = Migrate(app, db) 


def make_shell_context(): 
    return dict(app=app, db=db, User=User) 

manager.add_command('shell', Shell(make_context=make_shell_context)) 
manager.add_command('db', MigrateCommand) 
manager.add_command('runserver', Server(port=9000)) 
if __name__ == '__main__': 
    manager.run() 

편집 2

을 나는 위의 WSGI 구성에 다음과 같은 오류가 있습니다. 여기

오류 로그

ImportError: No module named manager 
2016-08-04 17:42:39,589 :Error running WSGI application 
Traceback (most recent call last): 
    File "/bin/user_wsgi_wrapper.py", line 154, in __call__ 
    app_iterator = self.app(environ, start_response) 
    File "/bin/user_wsgi_wrapper.py", line 170, in import_error_application 
    raise e 
ImportError: No module named manager 
+0

. 그것은이 포트가 이미 사용되었다고 말합니다. –

+0

기본값은 port = 5000입니다. 나는 그것을 바꿀 것이고 당신에게 돌아갈 것이다. –

+0

괜찮 으면 좋겠어. Ctrl + C를 사용하면 다른 오류가 발생한다. –

답변

2

PythonAnywhere dev에.

PythonAnywhere의 콘솔에서 Flask 앱을 ​​실행하면 실제로 다른 곳에서 액세스 할 수 없습니다. 잘 돌아갈 지 몰라도 아무 것도 요청을 라우팅하지 않습니다. 따라서 콘솔에서 아무 것도 실행할 필요가 없습니다 (구문 오류 만 테스트하지 않는 한).

대신 "웹"탭에서 웹 응용 프로그램을 만들어야합니다. 이미 완료 한 것처럼 보입니다. 그런 다음 발견 한 것으로 보이는 WSGI 파일을 사용하여 라우팅합니다.

"웹"탭 (일반적으로 사용자 이름.pythonanywhere.com)에 나타나는 도메인을 방문하면 사이트가 표시됩니다. 오류가 발생하면 디버그하는 데 도움이되는 오류 로그 ("웹"탭에서도 링크 됨)를 체크 아웃하십시오.

[편집 : 추가 제휴]

+0

그래서 다시로드했습니다. bash runserver 연결을 닫았습니다. 레지스트라에서 cname을 변경했습니다. 하지만 여전히 작동하지 않습니다. wsgi 파일이 올바르게 구성되어있는 것 같습니다. manager.py에서 올바른 앱을 호출하고 있습니까? –

+0

내 계정을 살펴볼 수 있다면 디버깅하는 것이 더 쉽습니다. [email protected]에서 우리에게 한 줄을 남겨주세요. 우리는 그곳에서 가져갈 수 있습니다. 아마도 여기에 일반적으로 유용한 결과를 게시 할 수 있습니다. –

+1

나는 그것을 고치고 나는 나의 대답을 곧 게시 할 것이다. 당신의 통찰력을 위해 모두 고맙다! –

0

큰 지연 죄송합니다. 해결책은 서버를 실행 다음 중 하나입니다.

# This file contains the WSGI configuration required to serve up your 
# web application at http://<your-username>.pythonanywhere.com/ 
# It works by setting the variable 'application' to a WSGI handler of some 
# description. 
# 
# The below has been auto-generated for your Flask project 

import sys 

# # add your project directory to the sys.path 
project_home = u'/home/username/mysite/' 
if project_home not in sys.path: 
    sys.path = [project_home] + sys.path 

# # import flask app but need to call it "application" for WSGI to work 
from manage import app as application 

나는 또한 데이터베이스 설정을 게시 할 것입니다 ... 당신이 실행하는 데 사용하는 포트