web-dev-qa-db-ja.com

Djangoの開発サーバーを公開する方法は?一般的に可能ですか?

私は現在Djangoフレームワークを試しているので、ワークメイトや友人に作ったものをいくつか共有/提示/表示します。VMware経由でWin7の下でUbuntuで作業します。/desireは、私の現在のpub-IPをポート(例: http://123.123.123.123:8181/Django-app/ )で私の友人に送信して、彼らがテストできるようにすることです。

問題は-私はDjangoのDevサーバーを使用しています(python /path-to-Django-app/manage.py runserver $ IP:$ PORT)。

開発サーバーを公開するにはどうすればよいですか?

編集:

ああ、言い忘れたことがあります。悲しいことに、私はUbuntuでVMwareを使用しています。現在のint-IP 192.168.xx.xxを返し、環境変数($ CUR_IP)に保存するシェルスクリプトがあるので、Djangoのdevserverを実行するたびに、単純に実行します

python /path-to-Django-site/manage.py runserver $CUR_IP:8080

このようにして、仮想マシン以外で使用できるhttpアドレス(例: http://192.168.40.145:8080/app-name/ )になります。私のホスト(win7)マシンでテストできました。それが私が質問した理由です。私はext-IPを使用してrunserverを外でも使えるようにする方法があると思った

33
V-Light

192.168.*.*はLANプライベートアドレスです。適切なVMWare(または他のVM manager))とファイアウォールの呪文を実行して、LANからアクセスできるようにしても、アクセスできません。 LANの外部から、つまりインターネット全体からアクセスできます(このような開発サーバーはではないセキュリティとスケーラビリティのために設計されているため)。

LANプライベートIPを備えたマシンの一部のポートをインターネット全体で認識できるようにするには、「仮想サーバー」機能を備えたルーターが必要です(多くのルーター、安価なルーターも提供しますが、具体的に有効にすることは不可能です)ブランドごとに独自の方法があるためです)。また、安定したDNS名を常に変化するパブリックIPに関連付けるために dyndns または他の同様のサービスをお勧めします(もちろん、接続プロバイダーから静的IPを要求している場合を除き、後者オプションは常にコストが高くなっています)。

superuser.comまたはserverfault.comは、問題のソフトウェア開発やサーバーの管理と構成に関することは何もないため、より良い回答と詳細を提供する場合があります(質問に構成の詳細を少しずつ入力すると)。

4
Alex Martelli
python manage.py runserver 0.0.0.0:8181

これは run development server を実行し、ポート8181ですべてのIPをリッスンします。

2011年6月17日以降)Django development サーバーはデフォルトでスレッド化されることに注意してください (ticket#1609)

ドキュメントから:

デフォルトのIPアドレス127.0.0.1は、ネットワーク上の他のマシンからアクセスできないことに注意してください。開発サーバーをネットワーク上の他のマシンから見えるようにするには、独自のIPアドレス(例:192.168.2.1)または0.0.0.0を使用します。

86
Davor Lucic

Rubyがインストールされていると仮定すると、localtunnelを取得する必要があります:

gem install localtunnel

次に、python開発サーバーを次のように起動します。

python manage.py runserver 0.0.0.0:8000

別のシェルで、localtunnelを起動します。

localtunnel -k ~/.ssh/id_rsa.pub 8000 

ローカルサーバーにアクセスするためのURLが出力されます。

Port 8000 is now publicly accessible from http://xxxx.localtunnel.com

それでおしまい。

11
trez

すでに回答済みですが、同じローカルトンネルのnpm代替を追加しています

Sudo npm install -g localtunnel

lt --port 8000 --subdomain yash
3
Yash

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

ALLOWED_HOSTS = ['*']

次に、次のコマンドでサーバーを実行しました。

python manage.py runserver 0.0.0.0:9595

Virtualboxを使用している場合は、VBのネットワーク設定を "NAT"から "Bridged Adaptor"に変更する必要があります。次にLinuxを再起動します。Sudo ifconfigを実行すると、 192.168.*.*などのIPアドレスを確認できます。最後のステップはrunserverです。

python manage.py runserver 192.168.*.*:8000

乾杯!

1
RezA

VMWareでブリッジネットワークを構成し、Ubuntuファイアウォールのターゲットポートへのアクセスを許可する必要もあります。

0
J. Random Geek