提问人:André Mouro 提问时间:11/16/2023 更新时间:11/17/2023 访问量:23
在 Apache 服务器中运行的 Google Sheet 和 Django 身份验证失败
Failed authentication for Google Sheet and Django running in Apache server
问:
我正在实现一个 Django 应用程序,它使用 Google Sheet 作为数据库,并使用 Apache 托管在 Rocky Linux 服务器中。
为了测试 Django 和 Google Sheet 之间的集成,我遵循了 Tom Dekan 教程。为了将 Django 应用程序配置为与 Apache 一起运行,我遵循了官方的 Django 教程。
但是,当我尝试访问该页面时,我收到内部服务器错误。检查错误日志时,我收到以下消息:
[星期四 11 月 16 日 11:44:34.203173 2023][wsgi:错误][PID 150297:TID 150433][远程 143.106.120.120:51686] mod_wsgi (pid=150297): 无法执行 Python 脚本文件“/opt/dashbea/TesteGSheet/core/core/wsgi.py”。
[星期四 11 月 16 日 11:44:34.203297 2023][wsgi:错误][PID 150297:TID 150433][远程 143.106.120.120:51686] mod_wsgi (pid=150297):处理 WSGI 脚本“/opt/dashbea/TesteGSheet/core/core/wsgi.py”时发生异常。
[星期四 11 月 16 日 11:44:34.203791 2023][wsgi:错误][PID 150297:TID 150433][远程 143.106.120.120:51686]回溯(最近一次调用最后一次):
[星期四 11 月 16 日 11:44:34.203866 2023][wsgi:错误][PID 150297:TID 150433][远程 143.106.120.120:51686]文件 “/opt/dashbea/TesteGSheet/core/core/wsgi.py”,第 22 行,在 <module 中>
[星期四 11 月 16 日 11:44:34.203876 2023][wsgi:错误][PID 150297:TID 150433][远程 143.106.120.120:51686] 应用程序 = get_wsgi_application()
[星期四 11月 16 11:44:34.203885 2023][wsgi:错误][PID 150297:TID 150433][远程 143.106.120.120:51686]文件“/opt/dashbea/TesteGSheet/my_env/lib64/python3.9/site-packages/django/core/wsgi.py”,第 12 行,get_wsgi_application
[星期四 11 月 16 日 11:44:34.203893 2023][wsgi:错误][PID 150297:TID 150433][远程 143.106.120.120:51686] django.setup(set_prefix=False)
[星期四 11 月 16 日 11:44:34.203902 2023][wsgi:错误][PID 150297:TID 150433][远程 143.106.120.120:51686]文件“/opt/dashbea/TesteGSheet/my_env/lib64/python3.9/site-packages/django/_init_.py”,第 19 行,在安装程序中
[星期四 11月 16 11:44:34.203910 2023][wsgi:错误][PID 150297:TID 150433][远程 143.106.120.120:51686] configure_logging(设置。LOGGING_CONFIG,设置。日志记录)
[星期四 11 月 16 日 11:44:34.203919 2023][wsgi:错误][PID 150297:TID 150433][远程 143.106.120.120:51686]文件 “/opt/dashbea/TesteGSheet/my_env/lib64/python3.9/site-packages/django/conf/_init_.py”,第 102 行,在 _getattr 中_
[星期四 11 月 16 日 11:44:34.203927 2023][wsgi:错误][PID 150297:TID 150433][远程 143.106.120.120:51686] self._setup(名称)
[星期四 11 月 16 日 11:44:34.203935 2023][wsgi:错误][PID 150297:TID 150433][远程 143.106.120.120:51686]文件“/opt/dashbea/TesteGSheet/my_env/lib64/python3.9/site-packages/django/conf/_init_.py”,第 89 行,_setup
[星期四 11月 16 11:44:34.203943 2023][wsgi:错误][PID 150297:TID 150433][远程 143.106.120.120:51686] self._wrapped = 设置 (settings_module)
[星期四 11 月 16 日 11:44:34.203979 2023][wsgi:错误][PID 150297:TID 150433][远程 143.106.120.120:51686]文件 “/opt/dashbea/TesteGSheet/my_env/lib64/python3.9/site-packages/django/conf/_init_.py”,第 217 行,在 _init 中_
[星期四 11 月 16 日 11:44:34.203987 2023][wsgi:错误][PID 150297:TID 150433][远程 143.106.120.120:51686] mod = importlib.import_module(self.SETTINGS_MODULE)
[星期四 11 月 16 日 11:44:34.203996 2023][wsgi:错误][PID 150297:TID 150433][远程 143.106.120.120:51686]文件“/usr/lib64/python3.9/importlib/_init_.py”,第 127 行,import_module
[星期四 11 月 16 日 11:44:34.204003 2023][wsgi:错误][PID 150297:TID 150433][远程 143.106.120.120:51686] 返回 _bootstrap._gcd_import(name[level:], package, level)
[星期四 11 月 16 日 11:44:34.204012 2023][wsgi:错误][PID 150297:TID 150433][远程 143.106.120.120:51686]文件“<frozen importlib._bootstrap>”,第 1030 行,在 _gcd_import 中
[星期四 11 月 16 日 11:44:34.204021 2023][wsgi:错误][PID 150297:TID 150433][远程 143.106.120.120:51686]文件“<frozen importlib._bootstrap>”,第 1007 行,_find_and_load
[星期四 11 月 16 日 11:44:34.204030 2023][wsgi:错误][PID 150297:TID 150433][远程 143.106.120.120:51686]文件“<frozen importlib._bootstrap>”,第 986 行,_find_and_load_unlocked
[星期四 11 月 16 日 11:44:34.204039 2023][wsgi:错误][PID 150297:TID 150433][远程 143.106.120.120:51686]文件“<frozen importlib._bootstrap>”,第 680 行,在 _load_unlocked 中
[星期四 11 月 16 日 11:44:34.204047 2023][wsgi:错误][PID 150297:TID 150433][远程 143.106.120.120:51686]文件“<frozen importlib._bootstrap_external>”,第 850 行,exec_module
[星期四 11 月 16 日 11:44:34.204060 2023][wsgi:错误][PID 150297:TID 150433][远程 143.106.120.120:51686]文件“<frozen importlib._bootstrap>”,第 228 行,_call_with_frames_removed
[星期四 11 月 16 日 11:44:34.204075 2023][wsgi:错误][PID 150297:TID 150433][远程 143.106.120.120:51686]文件“/opt/dashbea/TesteGSheet/core/core/settings.py”,第 133 行,在 <module>
[星期四 11 月 16 日 11:44:34.204085 2023][wsgi:错误][PID 150297:TID 150433][远程 143.106.120.120:51686]GSPREAD_CLIENT = initialize_gspread() # 当我们的服务器启动时启动 gspread 客户端可以加快速度;它避免了对每个请求的重新身份验证
[星期四 11 月 16 日 11:44:34.204099 2023][wsgi:错误][PID 150297:TID 150433][远程 143.106.120.120:51686]文件“/opt/dashbea/TesteGSheet/core/sim/services.py”,第 10 行,initialize_gspread
[星期四 11 月 16 日 11:44:34.204107 2023][wsgi:错误][PID 150297:TID 150433][remote 143.106.120.120:51686] return gspread.service_account_from_dict(get_credentials()) # 注意:我们可以将其移动到设置中来执行此操作一次。
[星期四 11 月 16 日 11:44:34.204116 2023][wsgi:错误][PID 150297:TID 150433][远程 143.106.120.120:51686]文件“/opt/dashbea/TesteGSheet/my_env/lib64/python3.9/site-packages/gspread/auth.py”,第 364 行,service_account_from_dict
[星期四 11 月 16 日 11:44:34.204124 2023][wsgi:错误][PID 150297:TID 150433][远程 143.106.120.120:51686] CREDS = ServiceAccountCredentials.from_service_account_info(
[星期四 11 月 16 日 11:44:34.204133 2023][wsgi:错误][PID 150297:TID 150433][远程 143.106.120.120:51686]文件“/opt/dashbea/TesteGSheet/my_env/lib64/python3.9/site-packages/google/oauth2/service_account.py”,第 243 行,from_service_account_info
[星期四 11 月 16 日 11:44:34.204141 2023][wsgi:错误][PID 150297:TID 150433][远程 143.106.120.120:51686] 签名者 = _service_account_info.from_dict(
[星期四 11 月 16 日 11:44:34.204149 2023][wsgi:错误][PID 150297:TID 150433][远程 143.106.120.120:51686]文件“/opt/dashbea/TesteGSheet/my_env/lib64/python3.9/site-packages/google/auth/_service_account_info.py”,第 57 行,from_dict
[星期四 11 月 16 日 11:44:34.204157 2023][wsgi:错误][PID 150297:TID 150433][远程 143.106.120.120:51686] 签名者 = crypt。RSASigner.from_service_account_info(数据)
[星期四 11 月 16 日 11:44:34.204166 2023][wsgi:错误][PID 150297:TID 150433][远程 143.106.120.120:51686]文件“/opt/dashbea/TesteGSheet/my_env/lib64/python3.9/site-packages/google/auth/crypt/base.py”,第 109 行,from_service_account_info
[星期四 11 月 16 日 11:44:34.204173 2023][wsgi:错误][PID 150297:TID 150433][远程 143.106.120.120:51686] 返回cls.from_string(
[星期四 11 月 16 日 11:44:34.204187 2023][wsgi:错误][PID 150297:TID 150433][远程 143.106.120.120:51686]文件“/opt/dashbea/TesteGSheet/my_env/lib64/python3.9/site-packages/google/auth/crypt/_python_rsa.py”,第 155 行,from_string
[星期四 11 月 16 日 11:44:34.204195 2023][wsgi:错误][PID 150297:TID 150433][remote 143.106.120.120:51686] key = _helpers.from_bytes(key) # PEM 在 Python 3 中需要 str
[星期四 11 月 16 日 11:44:34.204204 2023][wsgi:错误][PID 150297:TID 150433][远程 143.106.120.120:51686]文件“/opt/dashbea/TesteGSheet/my_env/lib64/python3.9/site-packages/google/auth/_helpers.py”,第 151 行,from_bytes
[星期四 11 月 16 日 11:44:34.204211 2023][wsgi:错误][PID 150297:TID 150433][远程 143.106.120.120:51686] 引发异常。无效值 (
[星期四 11 月 16 日 11:44:34.204230 2023][wsgi:错误][PID 150297:TID 150433][远程 143.106.120.120:51686] google.auth.exceptions.InvalidValue:无法将 None 转换为 unicode
分析错误消息,似乎我遇到了身份验证错误。最后一条消息似乎表明我没有发送任何身份验证值,或者我没有收到响应。这是正确的吗?[Thu Nov 16 11:44:34.204230 2023] [wsgi:error] [pid 150297:tid 150433] [remote 143.106.120.120:51686] google.auth.exceptions.InvalidValue: None could not be converted to unicode
使用 wsgi 运行 GSheets 和 Django 之间的集成是否有任何已知问题?
===========================================================================
这是我项目的树状结构
.
├── core
│ ├── asgi.py
│ ├── .env
│ ├── __init__.py
│ ├── __pycache__
│ │ ├── __init__.cpython-39.pyc
│ │ ├── settings.cpython-39.pyc
│ │ ├── urls.cpython-39.pyc
│ │ └── wsgi.cpython-39.pyc
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
├── db.sqlite3
├── manage.py
└── sim
├── admin.py
├── apps.py
├── __init__.py
├── migrations
│ ├── __init__.py
│ └── __pycache__
│ └── __init__.cpython-39.pyc
├── models.py
├── __pycache__
│ ├── admin.cpython-39.pyc
│ ├── apps.cpython-39.pyc
│ ├── __init__.cpython-39.pyc
│ ├── models.cpython-39.pyc
│ ├── services.cpython-39.pyc
│ ├── urls.cpython-39.pyc
│ └── views.cpython-39.pyc
├── services.py
├── templates
│ └── photo_wall.html
├── tests.py
├── urls.py
└── views.py
wsgi.py
import os
import sys
from django.core.wsgi import get_wsgi_application
path = "/opt/dashbea/TesteGSheet/core"
if path not in sys.path:
sys.path.append(path)
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'core.settings')
application = get_wsgi_application()
.conf 文件
<VirtualHost *:80>
ServerAdmin [CENSORED]
DocumentRoot /var/www/html
ServerName [CENSORED]
ServerAlias [CENSORED]
RewriteEngine On
RewriteCond %{HTTP_HOST} [CENSORED] [NC]
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ [CENSORED] [R,L]
<Directory /var/www/html/>
Options FollowSymLinks
AllowOverride All
Order allow,deny
allow from all
</Directory>
</VirtualHost>
<VirtualHost *:443>
ServerAdmin [CENSORED]
DocumentRoot /var/www/html
#ServerName [CENSORED]
ServerName [CENSORED]
#ServerAlias [CENSORED]
#ServerAlias [CENSORED]
RewriteEngine On
RewriteCond %{HTTP_HOST} [CENSORED] [NC]
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ [CENSORED] [R,L]
#Alias /dashboardteste/ /[CENSORED]
#Alias /static/ [CENSORED]
#Alias /images "/var/www/html/static/"
#<Directory [CENSORED]
# Require all granted
#</Directory>
# Executar o Django como usuario apache
SuexecUserGroup [CENSORED] [CENSORED]
#Header set X-Frame-Options SAMEORIGIN
<Directory [CENSORED]>
<Files wsgi.py>
Order deny,allow
Allow from all
Require all granted
</Files>
</Directory>
# Certificados TLS/SSL
SSLEngine on
SSLCertificateFile [CENSORED]
SSLCertificateKeyFile [CENSORED]
#SSLCertificateChainFile [CENSORED]
WSGIScriptAlias /dashbea [CENSORED]/core/wsgi.py
WSGIDaemonProcess core python-home=[CENSORED]/my_env python-path=[CENSORED]/TesteGSheet
WSGIProcessGroup core
WSGIApplicationGroup %{GLOBAL}
</VirtualHost>
我已经在本地机器上成功实现了 Tom Dekan 教程,但未能在服务器中实现它。
答: 暂无答案
评论