Я запускаю сервер Red Hat Linux с помощью Amazon EC2 с PostgreSQL/Apache и столкнулся с некоторыми проблемами. Когда я пытаюсь открыть мое приложение в браузере, я получаю следующее сообщение об ошибке:Браузер говорит, что не может подключиться к базе данных PostgreSQL
Unable to connect to the database
could not connect to server: Permission denied
Is the server running on host "my-private-ip-address" and accepting
TCP/IP connections on port 5432?
Однако, я могу получить доступ к своей базе данных, используя следующую команду в PuTTY. Я также могу подключиться к моей базе данных в pgAdmin.
psql -U username -h my-private-ip -d dbname
Я редактировал мои pg_hba.conf
и postgres.conf
файлов, используя инструкцию нашла here и here, но, к сожалению, они не работали для меня. Мои входящие параметры группы безопасности следующие:
Type Protocol Port Range Source
Custom TCP Rule TCP 5432 Anywhere 0.0.0.0/0
HTTP TCP 80 Anywhere 0.0.0.0/0
HTTPS TCP 443 Anywhere 0.0.0.0/0
Что мне не хватает или что-то не так? Спасибо за помощь.
Редактировать: Я просто попытался отключить SELinux, а затем смог подключиться к базе данных без ошибок в браузере. Но я хотел бы сохранить SELinux для повышения безопасности. Я предполагаю, что эта проблема как-то связана с разрешениями на файлы или настройками брандмауэра.
Редактировать v2: Я думаю, что я решил это, но мне все же хотелось бы, если бы это было правильно. Я нашел следующую команду here, чтобы разрешить Apache и PostgresSQL соединяются друг с другом:
setsebool -P httpd\_can\_network\_connect\_db on
Сделайте свое приложение и db вживую на том же сервере –
@JoeLove Да, они делают. Я только что редактировал мой вопрос. Я использовал 'setsebool -P httpd \ _can \ _network \ _connect \ _db on', чтобы позволить Apache и PostgreSQL разговаривать друг с другом. – mapr
Вы пробовали использовать localhost для своей конфигурации приложения вместо фактического IP? В зависимости от вашего сервера вы можете использовать unix-сокет, который, скорее всего, быстрее. –