Задать вопрос
mksmvnv
@mksmvnv

Как при деплое тг бота на сервер решить вопрос с подключением к БД PostgreSQL?

Друзья, первый раз занимаюсь развертыванием проекта. Бот уже на сервере, без БД все работает. А так суть в чем: у меня бот подключен к локальному хосту на моем ПК и пока я его писал, при запуске, все отрабатывает корректно, данные в БД подгружаются.

Но, как только я задеплоил бота на сервер, подключение к моей локальной БД логично, что не срабатывает, так как я запускаю бота уже не со своего ПК. Не могу никак найти годный ресурс, в котором можно почитать и понять, что мне требуется. Настроить SSH туннель к моей локальной БД, или создать новую БД на сервере и как то потом удаленно подкючатся к ней с pgadmin для просмотра данных (прошу простить, могу говорить вообще не те вещи, так как не разбираюсь в этом пока никак от слова совсем).

PostgreSQL на сервере уже установил, даже создал БД, но подключить не получилось к боту. В общем я надеюсь на помощь, направьте на верный путь (как корректно в данной ситуации нужно поступать).

Код коннекта к БД я не менял, разве что в env файлике, я так понял надо будет данные заменить для подключения, пока стоят стандартные:

USER = 'postgres'
PASSWORD = 1
DATABASE = 'user_data'
HOST = '127.0.0.1'
PORT = 5432
  • Вопрос задан
  • 212 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
fzfx
@fzfx
18,5 дм
Не могу никак найти годный ресурс, в котором можно почитать и понять, что мне требуется.


Один из самых годных ресурсов - документация. В частности, разделы про подключение и аутентификацию:
https://postgrespro.ru/docs/postgresql/16/runtime-...
https://postgrespro.ru/docs/postgresql/16/client-a...

PostgreSQL на сервере уже установил, даже создал БД, но подключить не получилось к боту.


Вам следует привести получаемое сообщение об ошибке в таком случае.
И я бы ещё рекомендовал попробовать попробовать подключиться с помощью клиента psql (он у вас уже установлен, коль вы поставили сервер postgresql) и добавить сюда и его сообщение об ошибке, поскольку с трейсами питона обычно разбираться мало кому охота (не говоря уже о том, что в них не всегда есть что-то внятное по проблеме подключения).

Вы пишите, что настройки в .env-файле у вас стандартные. Вместе с тем у вас в .env задан пароль пользователя postgres, а в стандартной поставке postgresql в Linux у пользователя postgres пароля нет (и подключения под этим пользователем принимаются только с local-авторизацией на unix-сокет, по TCP/IP вы не подключитесь).
Так что в вашем случае я бы сначала через sudo залогинился под root, через su переключился на пользователя ОС postgres, подключился к СУБД из терминала с помощью psql, создал нового пользователя СУБД, затем назначил бы ему пароль, а уже эти логин и пароль нового пользователя использовал бы в .env.
https://postgrespro.ru/docs/postgresql/16/sql-crea...
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@KeXaiL
Добрый день! Чтобы ваш бот мог подключиться к базе данных на удаленном сервере, вам необходимо изменить параметры подключения в коде вашего бота. Вместо использования локального хоста (127.0.0.1), вы должны указать IP-адрес или доменное имя вашего удаленного сервера, где развернута база данных PostgreSQL.

Вот как может выглядеть обновленный код подключения к базе данных:

Copy code
import psycopg2

USER = 'your_username'
PASSWORD = 'your_password'
DATABASE = 'your_database_name'
HOST = 'your_remote_server_ip'  # Или доменное имя вашего сервера
PORT = 5432  # Порт, на котором запущен PostgreSQL

try:
    connection = psycopg2.connect(
        user=USER,
        password=PASSWORD,
        database=DATABASE,
        host=HOST,
        port=PORT
    )
    cursor = connection.cursor()
    print("Успешное подключение к PostgreSQL")
except (Exception, psycopg2.Error) as error:
    print("Ошибка при подключении к PostgreSQL:", error)

Замените 'your_username', 'your_password', 'your_database_name' и 'your_remote_server_ip' соответственно вашими учетными данными и данными вашего удаленного сервера.

Помните, что для этого ваш сервер должен быть настроен для удаленного подключения к базе данных. Обычно это делается путем настройки правил брандмауэра, настройки файлов конфигурации PostgreSQL (postgresql.conf и pg_hba.conf) и, возможно, настройки сети вашего сервера.

После того как вы обновите код подключения, ваш бот должен успешно подключиться к базе данных на удаленном сервере.
Ответ написан
@Drno
Вариантов 2.
1. Покупайте себе внешний IP, настраивайте доступ до БД через него. Либо организуйте какую то связь(VPN к примеру) между VPS и Вашим ПК
2. Устанавливайте софт для БД непосредственно на сервер и настраивайте..
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы