質問: お世話になります。 サーバー周りの事などあまり詳しくないので、知見の在る方に、 アドバイスを頂ければと思い質問させて頂きます。 わかりにい点などありましたらすみません。 開発したPHPベースのWEBシステムをGCEのサーバにて利用しています。 サーバーはCentOS6です。 先日、イメージファイルを作るために、WEBサーバを停止し、再起動しました。 ~~補足 その後、GCEのブラウザのターミナルからCentOSへアクセスができなくなるなどの現象が発生し、(SSHの内容が古いなどのメッセージ) 別途作った方認証キーが生きていたため、teratermで繋げる事ができています。 ### 本題 再起動したWEBサーバーに繋げた際に、アプリケーションからDBへの接続ができずに、エラーとなっています。 IPをローカルで指定しても、グローバルで指定してもダメです。 object(ArrayObject)#44 (1) { ["storage":"ArrayObject":private] => array(3) { ["exception"] => object(Zend_Db_Adapter_Exception)#66 (9) { ["_chainedException":protected] => NULL ["_previous":"Zend_Exception":private] => NULL ["message":protected] => string(158) "SQLSTATE[08006] [7] could not connect to server: Permission denied Is the server running on host "「IPあどれす」" and accepting TCP/IP connections on port 5432?" ["string":"Exception":private] => string(0) "" ["code":protected] => int(7) ["file":protected] => string(67) "/var/www/usr/ZendFramework/library/Zend/Db/Adapter/Pdo/Abstract.php" ["line":protected] => int(144) ["trace":"Exception":private] => array(11) { [0] => array(6) { ["file"] => string(64) "/var/www/usr/ZendFramework/library/Zend/Db/Adapter/Pdo/Pgsql.php" ["line"] => int(87) ["function"] => string(8) "_connect" ["class"] => string(28) "Zend_Db_Adapter_Pdo_Abstract" ["type"] => string(2) "->" ["args"] => array(0) { } } ### 試した事 別の環境からのDBへの接続テストは問題ありませんでした。 また、WEBサーバからのDBサーバへの ncコマンドでは、ポート[5432]指定で接続ができました。 現在DBサーバでは、ファイヤーウォールを切り、db接続も全て受け付けられるようにしています。 ### 補足情報 webサーバも、dbサーバもgoogle ComputeEngineにて、 CentOS6.9を利用 apache2.4 php5.4 postgres9.2 zendframework を利用しております。
回答: SELinuxはoffにしていたはずです。。。 setenforce 0 を実行した上でダメだったと認識しています。。。 だけど、再起動後に、 setsebool -P httpd_can_network_connect_db 1 をしたら、繋がりました。 これは、SELinuxの起動とは関わらないことがあるでしょうか? 今試すと、 ・getenforceでpermissiveの場合は画面が開かない、 ・permissive では、httpd_can_network_connect_dbの値によらない ・Enforcing では、httpd_can_network_connect_dbの値による となっています。 さっきは、ちゃんとOffにできてなかったか?**何か例外のケース**があるなど知っている方がいたら教えて下さい。 何時間も確認しているなかで、ちゃんと確認していたつもりですが、、、漏れていたのか知りたいです。