サーバー1は私のCentOS7本番サーバーです。これには、Apache、ssh、およびPostgresqlデータベースが含まれています。
サーバー2は私のCentOS7テストサーバーです。これには、Apache、ssh、およびテストデータベースが含まれています。
両方のサーバーは、22、80、および443を受け入れるようにfirewalldで設定されています。両方のサーバーには次の設定があります。
Sudo setsebool httpd_can_network_connect_db 1
.。
Sshで接続できます(ポート22)。 httpおよびhttps(ポート80および443)を介して「Testing1、2、3 ...」テストページを見ることができます。 SQL Maestro、DBeaver、DBSchemaなど(ポート5432)を使用してPostgresqlにアクセスできます。
.。
サーバー1でPostgresqlにアクセスするには、DbSchema、HeidiSQL、Postgresql SQLMaestroなどをリモートからどこからでも使用できます。ただし、サーバー2からPHPおよびPDOを使用して接続できません。常に[08006]タイムアウトになります。
私は以下を試しましたが、役に立ちませんでした。須藤setseboolhttpd_can_network_connect 1
.。
PHPを使用してサーバー2からサーバー1のPostgresqlデータベースにアクセスするにはどうすればよいですか? CentOS7は初めてです。私は他のLinuxディストリビューションを問題なく使用する前にこれを行いました。私が見逃しているSELinux /その他の設定は何ですか? .。
以下のアレクサンダーの答えを参照してください。 5432がfirewall-cmdで有効になっていると思いました。次のコマンドを発行したとき
Sudo firewall-cmd --zone=public --list-services
dhcpv6-client http ssh https
のみがリストされました! postgresqlはどうなりましたか?サービスを永続的にするために、私は単に以下を発行しました。
Sudo firewall-cmd --add-service=postgresql --permanent
質問でおっしゃったように、firewalldで開いたポートは3つだけです。ファイアウォールでポート5432を開く必要があります。
また、どのIPリスニングpostgresを確認する必要があります。127.0.0.1:5432でのみリスニングできます。