Bargain Netのドメインを移行した話

Bargain Netはtaichino.comのサブドメイン(bargainnet.taichino.com)で運用していたのですが、諸事情ありまして別のドメイン(bargain-net.info)に移転しました。そのときの作業ログを残しておきます。なおBargain NetはDjangoで作成しています。

コードの修正
Djangoのテンプレート中で自身のURLをべた書きしている部分を修正します。

# before
<a href="http://bargainnet.taichino.com">link</a>

# after
<a href="http://{{request.META.HTTP_HOST}}">link</a>

なおテンプレート中でホスト名を取得するのにrequestオブジェクトを参照していますが、その為にsettings.pyでdjango.core.context_processors.requestを追加します。

from django.conf.global_settings import TEMPLATE_CONTEXT_PROCESSORS
TEMPLATE_CONTEXT_PROCESSORS += (                                                 
    'django.core.context_processors.request'
    )

SiteオブジェクトのURL変更
プロジェクト中でSiteオブジェクトを使用している場合は、django-adminを利用してURLを変更します。僕はサイトマップの生成で使用しているので必要でした。

nginxの設定ファイル
一番肝の設定ですね。もっと面倒なのかと思っていましたが、rewriteを1行書くだけで301リダイレクトを送れました。簡単です。リダイレクト後の設定はドメイン名を変更するだけで大丈夫でした。一覧性が良いので同一ファイルに書くのが良い気がします。

# before
server {
    listen      80;
    server_name bargainnet.taichino.com;
    location / {
       include uwsgi_params;
       uwsgi_pass      127.0.0.1:5101;
    }

    location /static/admin {
       alias /home/bargainnet/site/lib/python2.6/site-packages/django/contrib/admin/static/admin;
    }

    location ^~ /static {
       root    /home/bargainnet/site/bargainnet/main;
    }
}


# after
server {
    listen      80;
    server_name bargainnet.taichino.com;
    rewrite ^(.*)$ http://bargain-net.info$1 permanent;
}

server {
    listen      80;
    server_name bargain-net.info;
    location / {
        include uwsgi_params;
        uwsgi_pass      127.0.0.1:5101;
    }

    location /static/admin {
        alias /home/bargainnet/site/lib/python2.6/site-packages/django/contrib/admin/static/admin;
    }

    location ^~ /static {
        root    /home/bargainnet/site/bargainnet/main;
    }
}

以上の作業を新ドメインの浸透を待ってから行いました。思ったより簡単で、今のところ特に問題は起こっていない気がしますが、何か起こった場合は追記します。

またドメイン移転を行った諸事情については別途記事を書こうと思います。

Leave a Reply

Your email address will not be published. Required fields are marked *