webdevqa.jp.net

外からローカルDjangoウェブサーバーにアクセスする方法

here の指示に従って、組み込みWebサーバーを使用してDjangoを実行し、python manage.py runserverを使用して正常に実行できました。 Webサーバーから127.0.0.1:portにローカルにアクセスすると、Djangoページが表示され、機能していることが示されます。

Djangoウェブサーバーは実稼働サーバーではありませんが、テストの目的で、外部のサーバーからアクセスできることが重要です。つまり、サーバー上のWebブラウザーからではなく、別のコンピューター。

私は試した:

http://mywebserver:port_Django_runs_on

しかし、うまくいきませんでした。また、代わりにIPを使用して(ifconfigに基づいて)アクセスしようとしました:

http://myipaddress:port_Django_runs_on 

どちらも機能しませんでした。

Webサーバーが実行されているため、外部からアクセスできる必要があります。どうすればよいかわかりません。 ApacheでDjangoを設定していませんが、ApacheでLinuxを実行しています。

これを行う方法に関するアイデアはありますか?

158
user248237

開発サーバーを実行して、ネットワークに インターフェイスをリッスン する必要があります。

例えば。

python manage.py runserver 0.0.0.0:8000

ポート8000​​のeveryインターフェイスでリッスンします。

IPまたはホスト名を使用してWebサーバーにアクセスするかどうかは関係ありません。まだ自分のLANにいると思います。
外部からサーバーに本当にアクセスしたい場合は、ポートを転送するようにルーターを設定する必要があります。 8000をサーバーに。


使用中のポートへの着信接続が許可されているかどうか、サーバーのファイアウォールを確認してください!

外部からApacheサーバーに正常にアクセスできると仮定すると、これも試すことができます:

  • ポート80が空くように、Apacheサーバーを停止します。
  • Sudo python manage.py runserver 0.0.0.0:80を使用して開発サーバーを起動します
275
Felix Kling

この行をsettings.pyに追加して動作させる必要がありました(そうしないと、別のコンピューターからアクセスしたときにエラーが表示されました)

ALLOWED_HOSTS = ['*']

その後、サーバーを実行しました:

python manage.py runserver 0.0.0.0:9595

また、ファイアウォールがそのポートへの接続を許可していることを確認してください

18

以下から1つ以上を選択します。

  • アプリケーションは、意図したIP:PORT で正常にリッスンしていません
    • 正常に構成されていないため
    • ユーザーには権限がないため
  • アプリケーションは意図したIP:PORTで正常にリッスンしていますが、クライアントは
    • サーバーのローカルiptablesはそれを防ぎます。
    • ファイアウォールはそれを防ぎます。

そのため、マシンでlsof -iをrootとして実行し、指定した対応するポートでpythonエントリを探すことで、アプリケーションが正常にリッスンしていることを確認できます。

通常、非rootユーザーは1024未満のポートにバインドできません。

iptables -nvLを見て、アプリケーションをバインドしようとしているip:portへのアクセスを妨げるルールがあるかどうかを確認する必要があります。

アップストリームファイアウォールがあり、それについてあまり知らない場合は、ネットワーク管理者に相談する必要があります。

13
MattH

これを行うだけです:

python manage.py runserver 0:8000

上記のコマンドにより、実際に外部IPアドレスにバインドします。そのため、ポート番号を使用してIPアドレスにアクセスすると、ブラウザで問題なくアクセスできるようになります。

ブラウザのアドレスバーに次のように入力するだけです。

<your ip address>:8000

例えば:

192.168.1.130:8000

settings.pyを編集して、最後の行のsettings.pyに以下を追加する必要がある場合があります。

ALLOWED_HOSTS = ['*']

これが役立つことを願っています...

4
Joish

AWSユーザー向け。

私はそこに着くために次のステップを使わなければなりませんでした。

1) pipおよびDjangoがSudoレベルでインストールされていることを確認します

  • Sudo apt-get install python-pip
  • Sudo pip install Django

2) 0.0.0.0/0のポート80でhttpを含むセキュリティグループインバウンドルールを確認します

  • aWSコンソールから設定

ALLOWED_HOSTSにパブリックIPとDNSを追加

  • ALLOWED_HOSTSは、settings.pyにあるリストオブジェクトです。
  • ALLOWED_HOSTS = ["75.254.65.19"、 "ec2-54-528-27-21.compute-1.amazonaws.com"]

4)ポート80でSudoを使用して開発サーバーを起動

  • Sudo python manage.py runserver 0:80

次のいずれかでサイトが利用可能になりました(httpのデフォルトである:80は不要です)。

  • [パブリックDNS]すなわちec2-54-528-27-21.compute-1.amazonaws.com
  • [パブリックIP]すなわち75.254.65.19
3
datavoredan

これをここに追加します。

  1. Sudo python manage.py runserver 80

  2. 携帯電話またはコンピューターに移動し、コンピューターの内部IP(例:192.168.0.12)をブラウザーに入力します。

この時点で、Djangoサーバーに接続する必要があります。

これは、Sudoなしでも機能するはずです。

python manage.py runserver 0.0.0.0:8000
2
James111