ひとつの開発マシンで複数のDjango開発サーバーを動かそうとすると、ポートが被ってしまうことがあるため、開いているポートを探してそのポートで起動するためのシェルスクリプトです。
使用するポートは8000~8009です。iptablesなどのファイヤーウォールを使っているときは、予めそのポートにアクセスできるようにしてください。
以下の内容を/usr/bin/djrunに保存すると、manage.pyがあるディレクトリで
djrun
を実行すれば、開いているポートで開発サーバが起動します。
#!/bin/sh
# djangoの開発サーバを8000~8009のうち開いてるポートを探して、eth0のIPアドレスで起動するコマンド
if [ "$1" = "--help" -o "$1" = "-h" ]
then
echo "Usage: djrun [ipaddress]" # ヘルプを表示する
exit
fi
if [ -z $1 ]
then
ip=`/sbin/ifconfig eth0 | grep 'inet addr:' | sed -e "s/^.*inet addr:\([0-9.]\+\).*$/\1/"` # 自分のIPを取得する
else
ip=$1
fi
if [ -z $ip ]
then
echo "Cannot retrieve IP address"
exit
fi
netstat=`netstat -ant` # netstatでTCPポートの状態を取得する
port=8000
while [ $port -le 8009 ]
do
count=`echo $netstat | grep "$ip:$port " -c` # ipaddress:port形式の文字列の出現回数を取得
if [ $count -eq 0 ]
then
python manage.py runserver $ip:$port
break
fi
port=`expr $port + 1`
done タグ : Django 開発サーバ シェルスクリプト shell script

