Vagrantで立て終わったUbuntu Guest OS上でdjango wepappを動かしてみた時の記録。
apache用の資材置く先とか怪しいので間違いが判明次第適宜直します。
環境
django 1.6.1
apache2 2.4.7
libapache2-mod-wsgi 3.4
vagrant 1.7.2
Vagrant Guest: Ubuntu 14.04
Vagrant Host: Cent OS 6.6 (というかConoha)
前提
Vagrant Guest OSはインストール及び起動済み。
djangoインストール
参考:http://qiita.com/mountcedar/items/179fb0d9f4f87f9241c6
$ sudo apt-get update
$ sudo apt-get install -y apache2 libapache2-mod-wsgi
$ sudo apt-get install -y python-django
djangoでテスト用に何か作る
django-admin startproject webservice
ディレクトリ構造は下記のような形になる。
webservices/
django.wsgi★最初は存在しないので追加する
manage.py
webservices/
__init__.py
settings.py
urls.py
wsgi.py
設定ファイル
#!/usr/bin/env python
# coding: utf-8
import os
import sys
sys.path.append('<webservicesを配置したディレクトリ>')
sys.path.append('<webservicesを配置したディレクトリ>/webservices')
os.environ[ 'DJANGO_SETTINGS_MODULE' ] = 'webservices.settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
/etc/apache2/sites-available/django
WSGIScriptAlias /services <django.wsgiの絶対パス>
<Directory /home/issei/django/webservices/>
Order deny,allow
Allow from all
</Directory>
VagrantのHost - Guest間を繋ぐ
Host | Guest | |
---|---|---|
HTTP | 8888 | 8000 |
Host側設定
iptables
Cent OSのiptablesはここ。
/etc/sysconfig/iptables
REJECTルールよりも上に書かないとREJECTされるので注意する。
(前略)
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8888 -j ACCEPT ★この行を追加する
-A INPUT -j REJECT --reject-with icmp-host-prohibited
Vagrantfile
参考:http://qiita.com/ftakao2007/items/0ec05c2ef3c14cdbea11#2-4
hostとguestを繋ぐルールと、NICをブリッジ接続する設定を有効にする。
#(前略)
# config.vm.network "forwarded_port", guest: 80, host: 8080
config.vm.network "forwarded_port", guest: 8000, host: 8888, id:"http" #★この行を追加する
config.vm.network "public_network" #★この行をコメントインする
Guest側設定
ファイアウォール"ufw(uncomplicated firewall)"を使う。
有効化
$ sudo ufw enable
ポート8000番を許可する
$ sudo ufw allow 8000
※SSHで作業してるので下記も恐らく必須。
$ sudo ufw allow 22
反映する
$ sudo ufw reload
確認する
$ sudo ufw status
django起動する
manage.pyのディレクトリに移動後
$ python manage.py runserver 0.0.0.0:8000
これでHost OSの"グローバルアドレス:8888"からdjangoにHTTPアクセスできるはず。