programing

장고 구글 앱 엔진 서버 오류 500

bestcode 2023. 1. 21. 09:49
반응형

장고 구글 앱 엔진 서버 오류 500

구글 클라우드에 Django 앱을 배포했습니다.로컬로 호스트 했을 때, 그리고 투고에 기재되어 있는 스텝 전체에 걸쳐, 정상적으로 동작했습니다.

라이브 링크를 표시하려고 하면 서버 에러(500)가 발생합니다.

settings.py에서 디버깅을 활성화하면 완전한 트레이스백이 됩니다.(Torque는 제 프로젝트 이름), showloom은 제 앱입니다.

트레이스백은 뷰 속성(num_manufactures)을 참조하고 있습니다.이 속성은 로컬로 호스트 할 때 문제가 없었습니다.

OperationalError at /showroom/
(2002, "Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)")
Request Method: GET
Request URL:    https://torque-256805.appspot.com/showroom/
Django Version: 2.2.5
Exception Type: OperationalError
Exception Value:    
(2002, "Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)")
Exception Location: /env/lib/python3.7/site-packages/MySQLdb/connections.py in __init__, line 166
Python Executable:  /env/bin/python3.7
Python Version: 3.7.4
Python Path:    
['/srv',
 '/env/bin',
 '/opt/python3.7/lib/python37.zip',
 '/opt/python3.7/lib/python3.7',
 '/opt/python3.7/lib/python3.7/lib-dynload',
 '/env/lib/python3.7/site-packages']
Server time:    Thu, 24 Oct 2019 09:45:29 +0300
...

/env/lib/python3.7/site-packages/MySQLdb/__init__.py in Connect
    return Connection(*args, **kwargs) …
▶ Local vars
/env/lib/python3.7/site-packages/MySQLdb/connections.py in __init__
        super(Connection, self).__init__(*args, **kwargs2) …
▶ Local vars
...

    num_manufacturers = Manufacturer.objects.all().count() …
▶ Local vars

Google Cloud는 처음이라 디버깅을 어떻게 시작해야 할지 모르겠습니다.

생각할 수 있는 문제는 다음과 같습니다.

  1. cloud.google.com에서 작성한 서버 인스턴스는 지역으로서 europe-west3를 사용합니다.그러나 도입할 때는 완전히 새로운 서버를 만들 수 있다고 생각하고, Europe-west6를 더 나은 옵션으로 선택했습니다.(근접성, 신뢰성 향상 등)

  2. 보안 강화를 위해 프로젝트 settings.py을 변경했습니다.check --deploy장고 명령어

그렇지 않으면 다른 건 생각할 수가 없어요.누구 도와줄 사람?

App Engine에서 이 Django 를 확인하십시오. settings.py파일:

if os.getenv('GAE_APPLICATION', None):
    # Running on production App Engine, so connect to Google Cloud SQL using
    # the unix socket at /cloudsql/<your-cloudsql-connection string>
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'HOST': '/cloudsql/[YOUR-CONNECTION-NAME]',
            'USER': '[YOUR-USERNAME]',
            'PASSWORD': '[YOUR-PASSWORD]',
            'NAME': '[YOUR-DATABASE]',
        }
    }
else:
    # Running locally so connect to either a local MySQL instance or connect to
    # Cloud SQL via the proxy. To start the proxy via command line:
    #
    #     $ cloud_sql_proxy -instances=[INSTANCE_CONNECTION_NAME]=tcp:3306
    #
    # See https://cloud.google.com/sql/docs/mysql-connect-proxy
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'HOST': '127.0.0.1',
            'PORT': '3306',
            'NAME': '[YOUR-DATABASE]',
            'USER': '[YOUR-USERNAME]',
            'PASSWORD': '[YOUR-PASSWORD]',
        }
    }

마지막으로, 앱을 로컬로 실행하고 있는 경우는, 다음의 기능을 사용해 주세요.ALLOWED_HOSTS= ['localhost']데이터베이스 호스트가HOST='localhost'또는 를 사용할 수도 있습니다.'HOST': '127.0.0.1'(위의 코드 샘플에 나타나듯이).

언급URL : https://stackoverflow.com/questions/58536106/django-google-app-engine-server-error-500

반응형