Получение сообщения об ошибке user_management.index при посещении pgadmin/browser после входа в системуLinux

Ответить
Anonymous
 Получение сообщения об ошибке user_management.index при посещении pgadmin/browser после входа в систему

Сообщение Anonymous »

Я следовал документации, чтобы установить pgAdmin4 в режиме сервера в системе Debian 12. Я использовал nginx и Gunicorn. nginx был установлен из репозитория Debian. Остальное было настроено в виртуальной среде ~/postgresql-env. Я даже создал сервис systemd:

Код: Выделить всё

[Unit]
Description=pgAdmin4 service
After=network.target

[Service]
User=root
Group=root
Environment="PATH=/home/gin/postgresql-env/bin"
ExecStart=/home/gin/postgresql-env/bin/gunicorn --bind unix:/tmp/pgadmin4.sock --workers=1 --threads=25 --chdir /home/gin/postgresql-env/lib/python3.11/site-packages/pgadmin4 pgAdmin4:app

[Install]
WantedBy=multi-user.target
Из сервиса вы также можете увидеть, как я запускаю приложение pgAdmin4 с помощью Gunicorn из виртуальной среды Python. Здесь мне интересно, следует ли мне изменить пользователя и группу, поскольку все ( каталоги, относящиеся к pgAdmin, а также фактическая виртуальная среда Python в /home/gin/postgresql-env управляются пользователем gin, который я использовал для регистрации в машину (не в базу данных PostgreSQL!).
Конфигурационный файл config_local.py (находится в разделе /home/gin/postgresql-env/lib/python3.11/site-packages/pgadmin4/config_local.py) содержит следующее:

Код: Выделить всё

LOG_FILE = '/var/log/pgadmin4/pgadmin4.log'
SQLITE_PATH = '/var/lib/pgadmin4/pgadmin4.db'
SESSION_DB_PATH = '/var/lib/pgadmin4/sessions'
STORAGE_DIR = '/var/lib/pgadmin4/storage'
SERVER_MODE = True

Я запустил setup.py setup-db и ввел несуществующий адрес электронной почты только ради того, чтобы было с чем войти. В моем случае имя пользователя — gin@example.com с очень простым паролем.
Я отредактировал конфигурацию nginx по умолчанию в /etc/nginx. /sites-available/default следующим образом:

Код: Выделить всё

server {
listen 80 default_server;
listen [::]:80 default_server;

root /var/www/html;

# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html;

server_name _;

location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}

location /pgadmin4/ {
include proxy_params;
proxy_pass http://unix:/tmp/pgadmin4.sock;
proxy_set_header X-Script-Name /pgadmin4;
}
}
работает, так как я получаю страницу Добро пожаловать! через обычный HTTP-порт.
Когда я пытаюсь посетить pgAdmin в своем браузере по адресу http :///pgadmin4 Я получаю страницу входа. Там я ввожу gin@example.com с соответствующим паролем.
[img]https://i .sstatic.net/fz1qUeI6.png[/img]

Я не получаю никаких ошибок. Меня перенаправляют на http:///pgadmin4/browser/, который Firefox отображает в виде JSON:

Код: Выделить всё

{
"success":0,
"errormsg":"'user_management.index'",
"info":"",
"result":null,
"data":null
}
Проверка файла /var/log/pgadmin4/pgadmin4.log показывает следующее:

Код: Выделить всё

2025-01-09 13:57:09,359: ERROR  pgadmin:    'user_management.index'
Traceback (most recent call last):
File "/home/gin/postgresql-env/lib/python3.11/site-packages/flask/app.py", line 1517, in full_dispatch_request
rv = self.dispatch_request()
^^^^^^^^^^^^^^^^^^^^^^^
File "/home/gin/postgresql-env/lib/python3.11/site-packages/flask/app.py", line 1503, in dispatch_request
return self.ensure_sync(self.view_functions[rule.endpoint])(**req.view_args)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/gin/postgresql-env/lib/python3.11/site-packages/flask_login/utils.py", line 290, in decorated_view
return current_app.ensure_sync(func)(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/gin/postgresql-env/lib/python3.11/site-packages/pgadmin4/pgadmin/authenticate/mfa/utils.py", line 304, in inner
return mfa_enabled(
^^^^^^^^^^^^
File "/home/gin/postgresql-env/lib/python3.11/site-packages/pgadmin4/pgadmin/authenticate/mfa/utils.py", line 169, in mfa_enabled
return execute_if_enabled()
^^^^^^^^^^^^^^^^^^^^
File "/home/gin/postgresql-env/lib/python3.11/site-packages/pgadmin4/pgadmin/authenticate/mfa/utils.py", line 301, in if_else_func_inner
return _func(first, second)
^^^^^^^^^^^^^^^^^^^^
File "/home/gin/postgresql-env/lib/python3.11/site-packages/pgadmin4/pgadmin/authenticate/mfa/utils.py", line 242, in mfa_session_authenticated
return authenticated() if session.get('mfa_authenticated', False) is True \
^^^^^^^^^^^^^^^
File "/home/gin/postgresql-env/lib/python3.11/site-packages/pgadmin4/pgadmin/authenticate/mfa/utils.py", line 297, in execute_func
return wrapped(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/gin/postgresql-env/lib/python3.11/site-packages/pgadmin4/pgadmin/browser/__init__.py", line 712, in index
response = Response(render_template(
^^^^^^^^^^^^^^^^
File "/home/gin/postgresql-env/lib/python3.11/site-packages/flask/templating.py", line 154, in render_template
return _render(
^^^^^^^^
File "/home/gin/postgresql-env/lib/python3.11/site-packages/flask/templating.py", line 128, in _render
rv = template.render(context)
^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/gin/postgresql-env/lib/python3.11/site-packages/jinja2/environment.py", line 1295, in render
self.environment.handle_exception()
File "/home/gin/postgresql-env/lib/python3.11/site-packages/jinja2/environment.py", line 942, in handle_exception
raise rewrite_traceback_stack(source=source)
File "/home/gin/postgresql-env/lib/python3.11/site-packages/pgadmin4/pgadmin/browser/templates/browser/index.html", line 6, in top-level template code
{% import 'browser/macros/static_user_icon.macro' as IMG with context %}
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/gin/postgresql-env/lib/python3.11/site-packages/pgadmin4/pgadmin/templates/base.html", line 55, in top-level template code
'pgadmin.user_management.current_user': "{{ url_for('user_management.index') }}"  + "current_user",
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/gin/postgresql-env/lib/python3.11/site-packages/flask/helpers.py", line 309, in url_for
appctx.app.inject_url_defaults(endpoint, values)
File "/home/gin/postgresql-env/lib/python3.11/site-packages/flask/app.py", line 1812, in inject_url_defaults
func(endpoint, values)
File "/home/gin/postgresql-env/lib/python3.11/site-packages/pgadmin4/pgadmin/__init__.py", line 842, in add_internal_version
urls = [url for url in app.url_map.iter_rules(endpoint)]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/gin/postgresql-env/lib/python3.11/site-packages/werkzeug/routing.py", line 1531, in iter_rules
return iter(self._rules_by_endpoint[endpoint])
~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^
KeyError: 'user_management.index'
Я попробовал другого несуществующего пользователя, просто чтобы проверить, не является ли это более общей проблемой, но полученная ошибка является действительной, а именно

Код: Выделить всё

2025-01-09 13:56:02,819: ERROR  pgadmin:    'NoneType' object is not subscriptable
что происходит при попытке получить несуществующего пользователя и возвращенный объект имеет значение None, что приводит к исключению в коде pgAdmin после попытки доступа к чему-либо в нем.< /p>
Я очень незнаком с nginx и Gunicorn. Я также никогда не запускал pgAdmin в режиме сервера. У меня на сервере есть специальная виртуальная машина, на которой я хотел бы настроить базу данных PostgreSQL.
Если вам нужна дополнительная информация, дайте мне знать в комментариях, и я сделаю все возможное, чтобы предоставьте это.

Подробнее здесь: https://stackoverflow.com/questions/793 ... rowser-aft
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»