#django #postgresql #celery
Вопрос:
У меня есть два сервера Ubuntu A и B.
- Изначально у меня были Django, postgres, сельдерей на одном сервере A. Все работало нормально.
- Теперь у A есть Django, postgres, а у B установлены celery и проект Django.
- Миграции БД выполняются на A, а подключение к базе данных является правильным на A. Это я могу сказать, потому что, когда я пытаюсь запустить сервер сельдерея на сервере А, я могу успешно запустить сельдерей через командную строку. Без проблем.
- В соответствии с требованиями я должен запускать Django и postgres только на сервере A, а Сельдерей-на сервере B.
- Поскольку я использую те же настройки сервера Django на сервере B, что и на сервере A, поэтому настройки Django.py имеет те же настройки подключения к БД, что и показано ниже. т. Е. настройки БД одинаковы для A и B
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql_psycopg2', 'NAME': 'xyz', 'USER': 'smthing', 'PASSWORD': 'smthing', 'HOST': 'some_IP', 'PORT': '5432', } }
- Чтобы узнать, работает ли postgres или нет на сервере A. Я выполнил команду service
$ статус службы postgresql
● postgresql.service - PostgreSQL RDBMS
Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)
Active: active (exited) since Thu 2021-06-10 10:57:11 IST; 1 weeks 4 days ago
Main PID: 1276 (code=exited, status=0/SUCCESS)
Tasks: 0 (limit: 4915)
CGroup: /system.slice/postgresql.service
- Чтобы узнать, есть ли список postgres на 5432, я выполнил команду netstat:
$ netstat -nl | grep postgres unix 2 [ ACC ] STREAM LISTENING 17357 /var/run/postgresql/.s.PGSQL.5432
Если все это происходит, то почему сервер B выдает ошибку, как показано ниже, когда я пытаюсь запустить сельдерей?
django.db.utils.OperationalError: could not connect to server: Connection refused
Is the server running on host "server A" and accepting
TCP/IP connections on port 5432?
- Одна вещь, которую я заметил, когда я попытался связаться с сервером A по telnet с сервера B, я получил неудачный вывод.
telnet server A 5432 [sudo] password for username: Trying server A... telnet: Unable to connect to remote host: Connection refused
_ Кроме того, пожалуйста, дайте мне знать, нужно ли мне также создать имя пользователя и пароль на сервере B? т. е. имя пользователя и пароль, которые присутствуют в качестве пользователя postgres на сервере A.
Комментарии:
1. По умолчанию установка Postgres доступна только через локальный хост. Вам нужно будет как-то настроить его (google), чтобы он был доступен извне. В качестве альтернативы вы можете использовать размещенное решение, такое как AWS RDS.
2. @AlexandrTatarinov, у меня нет облачной зависти. Они находятся на двух разных рабочих столах.