Код: Выделить всё
[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
Код: Выделить всё
varКонфигурационный файл 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
Я отредактировал конфигурацию 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;
}
}
Код: Выделить всё
nginxКогда я пытаюсь посетить 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
}
Код: Выделить всё
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
Я очень незнаком с nginx и Gunicorn. Я также никогда не запускал pgAdmin в режиме сервера. У меня на сервере есть специальная виртуальная машина, на которой я хотел бы настроить базу данных PostgreSQL.
Если вам нужна дополнительная информация, дайте мне знать в комментариях, и я сделаю все возможное, чтобы предоставьте это.
Подробнее здесь: https://stackoverflow.com/questions/793 ... rowser-aft
Мобильная версия