2011-11-08 13 views
2

私は奇妙な問題があります。コマンドラインからpsqlを使ってリモートホストに接続することはできますが、django設定ファイルと全く同じ資格情報を使用することはできません。djangoがサーバーに接続できませんでした:アクセスが拒否されましたサーバーがホスト上で実行されていて、ポートリモートホスト上のTCP/IP接続を受け入れていますか?

Could not connect to server: Permission denied Is the server running on host "remote ip" and accepting TCP/IP connections on port port_number?

psqlを使用して接続でき、djangoを使用しない場合、私はここで何が欠けていますか?また、私はpsycopg2をロードできることをPythonインタプリタを通して調べました。

私がオンラインで見つけたもの以外のものは大いに助けられました。

乾杯、

D

ここにあなたの説明に基づいてsettings.py

'default': { 
     'ENGINE': 'django.db.backends.postgresql_psycopg2', 
     'NAME': '<db name goes here>', # Or path to database file if using sqlite3. 
     'USER': '<db user>', # Not used with sqlite3. 
     'PASSWORD': '<pswd goes here>', # Not used with sqlite3. 
     'HOST': '<remote ip goes here>', 
     'PORT': '5432', 
} 
+1

サンプルコード/設定を投稿する必要があります。 –

+1

私はそれを行うことができました...しかし、もっと面白いことです...私はpython manage.py runserverコマンドを実行することができ、私はサイトを使用することができます...それはApacheと何かでなければならないが、 DB接続? – deecodameeko

+1

もちろんです。 Apacheはアプリケーションサーバー(mod_wsgi)をモジュールとして実行しています。 postgresが特定のユーザからの接続のみを許可している場合は、wsgi/apacheを実行しているユーザとしてデータベースに接続する権限がない可能性があります。 –

答えて

7

でデシベルconfには、これはApacheで何かを持っており、それがデータベースにアクセスするための権限だのです。あなたはどのOSを使用しているかは言及していませんが、SELinuxを実行している場合、デフォルトのルールはApacheがdbに接続するのを防ぎます。この場合、あなたは一時的に実行することによって、それを有効にすることができます。

setsebool httpd_can_network_connect_db 

Hereは、より詳細な手順です。

+0

ああ、ごめんなさい...これはRed Hatにある。 – deecodameeko

+0

それはトリックをした...後で再起動し、すべてがうまくいた。乾杯。 – deecodameeko

5

のリブート(CentOSに上でテスト)間で変更を永続化するには:

setsebool -P httpd_can_network_connect_db on 

は、より多くのCentOSの上でテストされたhere

0

をお読みください。

service httpd stop 

service postgresql stop 

setsebool -P httpd_can_network_connect 1 

service httpd start 

service postgresql start 
関連する問題