2014-12-15 5 views
0

Я запускаю сервер 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 
+0

Сделайте свое приложение и db вживую на том же сервере –

+0

@JoeLove Да, они делают. Я только что редактировал мой вопрос. Я использовал 'setsebool -P httpd \ _can \ _network \ _connect \ _db on', чтобы позволить Apache и PostgreSQL разговаривать друг с другом. – mapr

+0

Вы пробовали использовать localhost для своей конфигурации приложения вместо фактического IP? В зависимости от вашего сервера вы можете использовать unix-сокет, который, скорее всего, быстрее. –

ответ

0

Apache и PostgreSQL не разговаривали друг с другом. Чтобы включить связь между ними, используйте следующую команду:

setsebool -P httpd\_can\_network\_connect\_db on

Надеюсь, это поможет кому-то в будущем.

Смежные вопросы