16

Django のビルトイン サーバーを使用してサイトを開発していますが、同じネットワーク内の他のコンピューターがローカル IP アドレスを使用してサーバーにアクセスできるようにしたいと考えています。これに関する多くの投稿を見てきましたが、すべての提案を試した後でも、ネットワーク内の他のコンピューターがサイトにアクセスすることを許可していません.

を使用してサーバーを実行します

python manage.py runserver 0.0.0.0:8000

8000次の画像でわかるように、すでにポートを開いています。

ここに画像の説明を入力

カーネル 3.8.11-200 で Django 1.4.2、Python 2.7.3、Fedora 18 を実行しています

どんな助けでも大歓迎です。ありがとう。

4

4 に答える 4

21

使用するpython manage.py runserver <ip>:<port>

たとえば、私の IP は 192.168.0.100 で、ポート 80 で django アプリを実行したいのですが、やらなければなりません。

[sudo] python manage.py runserver 192.168.0.100:80

ポート 80 には root 権限が必要でした。おそらく、他のアプリケーションがアクセスしているためです。

ALLOWED_HOSTSまた、settings.py にリストする IP アドレスを追加する必要があります。

これにより、192.168.0 ネットワーク内のすべてのクライアントが 192.168.0.100 のサイトにアクセスできるようになります。

于 2013-05-12T05:01:55.640 に答える
4

スカラプは正しいです。ネットワークが正しく構成されていて、django アプリケーションが pytho9n manage.py runserver 0.0.0.0:8000 を使用していても、VM ホストから django アプリにアクセスできない場合は、ほぼ確実にファイアウォールの問題があります。上の図は、iptables を実行している場合に適しています。

Windows 7 ホストから virtualbox VM に CentOS 7 をデプロイしました。このディストリビューションが iptables ではなく、firewalld を使用してアクセスを制御していることを知りませんでした。

もしも

ps-ae | grep firewall は 602 のようなものを返しますか? 00:00:00 ファイアウォール

システムは iptables ではなく、firewalld を実行しています。それらは一緒に実行されません。

VM を修正して、ホストから django サイトにアクセスできるようにするには、次のコマンドを使用します。

firewall-cmd --zone=public --add-port=8000/tcp --permanent firewall-cmd --reload

これを指摘してくれたhttp://www.scriptscoop.netサイトの pablo v に感謝します。

于 2015-12-26T02:16:20.990 に答える
4

必要に応じて Django を起動しています。接続が確立されるとすぐに、どこからでも接続を受け入れます。

ファイアウォールをチェックして、8000 ポートの接続が許可されていることを確認してください。このようなものが動作するはずです:

iptables -I INPUT -p tcp -m tcp --dport 8000 -j ACCEPT

必要に応じてINTERNAL_IPS、設定の変数を拡張してリモート デバッグを許可する必要があります: https://docs.djangoproject.com/en/dev/ref/settings/#internal-ips

于 2013-05-12T06:31:32.653 に答える