日本ではまだまだ流行りきっていないが
PythonのがっつりフレームワークのDjangoを使う時に時々あるやつ。
Vagrantの仮想環境上でDjangoを使用してアプリを作ろうとした時
runserverを実行してもブラウザ上で表示できない!!というちょんぼに
見舞われることがるかとおもいます。
この記事をよんでいる君はまさにそんなところ。
下の3つを試してみれば大体は解決するはず。
環境はVagrant + Centos7です。
こうなるのがゴール
Centosのポート開放
Centos7はiptableは使いません。
firewalldを使用するので、8000番をちゃちゃっと開放しましょう。
1 |
sudo firewall-cmd --permanent --add-port=8000/tcp |
その後、firewallをリロードします。
1 |
sudo firewall-cmd --reload |
これでOk
もし8000番以外を使いたいよう。
数字を変えれば問題ありません。
Vagrantのポートフォーワード
Vagrantを使っていて時々忘れてしまうのが
ポートフォーワードの設定です。
Vagrantfileを書き換えてcentos側で開放したポートを
自分のパソコン側で見れるように設定します。
ループ内のconfigに下記を追加します。
1 2 3 4 5 6 7 8 9 |
Vagrant.configure(2) do |config| ## 中略 ####### config.vm.network "forwarded_port", guest: 8000, host: 8800 # <= これを追加 ######## ## 中略 |
あとは仮想マシンを再起動すれば、
ブラウザで127.0.0.1:8800を入力して見られます。
1 |
vagrant reload |
manage.py runserver のオプション
僕はこれでした。
接続できないことに焦っていたら、そういえばと。
そういえば
Railsでも同じような状況があったよね。
Vagratnt+Centos7+Rails4でブラウザにアクセス出来ない時にやったこと
ということで
Djangoでも0.0.0.0にしてしまえばいいんじゃろう!!
起動コマンドをちょっとだけ修正したらあら成功。
1 |
python manage.py runserver 0.0.0.0:8000 |
だいたい解決!!
うーん。
まあこれぐらいならサーバーサイドじゃなくても
できないと大変だよね。
じゃあね~