장고 구글 앱 엔진 서버 오류 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는 처음이라 디버깅을 어떻게 시작해야 할지 모르겠습니다.
생각할 수 있는 문제는 다음과 같습니다.
cloud.google.com에서 작성한 서버 인스턴스는 지역으로서 europe-west3를 사용합니다.그러나 도입할 때는 완전히 새로운 서버를 만들 수 있다고 생각하고, Europe-west6를 더 나은 옵션으로 선택했습니다.(근접성, 신뢰성 향상 등)
보안 강화를 위해 프로젝트 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
'programing' 카테고리의 다른 글
unix_timestamp(MySQL)의 데이터 유형은 무엇입니까? (0) | 2023.01.21 |
---|---|
javascript에서 숫자를 반올림하는 방법은 무엇입니까? (0) | 2023.01.21 |
레일 포함 mariadb: libmysqlclient-dev를 설치할 수 없습니다. (0) | 2023.01.21 |
Python에서 표현식과 문장의 차이점은 무엇입니까? (0) | 2023.01.21 |
Javascript 배열 검색 및 문자열 제거 (0) | 2023.01.21 |