読者です 読者をやめる 読者になる 読者になる

しばやん雑記

ASP.NET とメイドさんが大好きなフリーランスのプログラマーのブログ

ExpressWeb から Azure Web Apps への移行方法を考える

Azure Web Apps

激安なのに ASP.NET が使えるレンタルサーバーとして一部で有名だった ExpressWeb が、残念ながらサービスを終了するというメールが届きました。私の TL ではかなり話題になりました。

f:id:shiba-yan:20151206202627p:plain

実はちょっと前に shibayan.jp は Web Apps への完全移行を終わらせていたので、特に問題は無いのですが ExpressWeb を紹介しまくってきたので、Web Apps への移行方法を考えました。

WordPress の場合は新しく Web Apps のアプリケーションギャラリーから WordPress を作成し、バックアップとインポート機能を使うのが一番手っ取り早いと思うので、ここでは扱わないことにします。

環境の比較

まずは ExpressWeb と Web Apps で実行環境にどのくらいの差があるか確認しておきます。

ExpressWeb Web Apps
OS Windows Server 2008 R2 Windows Server 2012
IIS 7.5 8.0
ASP.NET 4.5 4.6
PHP 5.3 5.4/5.5/5.6/(7)
Perl 5.8.0 なし
Python 2.6.2 2.7/3.4
Java なし 7/8
DB SQL Server 2008 / MySQL 5.1 SQL Database / ClearDB

全体的に Web Apps の方が新しくて機能も豊富です。Web.config で設定していた項目も、Web Apps なら殆ど全て対応しているので、移行には問題は無いと考えます。

WordPress を動かしていた場合には ClearDB を契約する必要があります。ClearDB は別サービスになるので、性能が欲しい場合は基本的に有料です。

ファイル

FTP から wwwroot 以下を全てダウンロード、もしくはファイルマネージャから zip でダウンロード、WebMatrix を使っていた場合はサイトのダウンロード機能を使って、ローカル環境に全て落としておきます。

f:id:shiba-yan:20151206202949p:plain

ダウンロードしたファイルを FTP や Web Deploy などを使って Web Apps の wwwroot 以下にアップロードするだけで、基本的にそのまま動作するはずです。

ただし SQL Server や MySQL の接続文字列を Web.config に入れていた場合は、修正が必要となります。

SQL Server

管理画面から SQL Server のバックアップが行えるので、ダウンロードして SSMS で復元します。

f:id:shiba-yan:20151206210728p:plain

ファイル形式は bacpac ではなく bak 形式なので、一度 SSMS に入れてから SQL Database に発行する方が簡単だと思います。メニューにあるデータベースの復元から実行します。

f:id:shiba-yan:20151206211315p:plain

これでローカルに復元出来るので、後は SE の雑記にお任せします。

SQL Database のデータベースをリージョン間で移行するにはどうするか?? at SE の雑記

と思っていたのですが、最新の SSMS だと SQL Database への発行が出来なくなっているみたいなので、データ層アプリケーションのエクスポートを選んで bacpac を作成し、Azure ポータルからインポートする必要がありそうです。

BACPAC ファイルをインポートして新しい Azure SQL Database を作成する

ストレージアカウントからしか bacpac を読み取れないので、ちょっと手間がかかりますね。

MySQL

バックアップは SQL Server と同様に、管理画面から SQL としてダウンロード出来るようになっています。

f:id:shiba-yan:20151206210433p:plain

ダウンロードした SQL を使って、Azure にバックアップを復元する形になります。

Azure は SQL Database のようにマネージドな MySQL サービスを持っていないので、必然的にパートナーである ClearDB を使うことになります。

ポータルにある MySQL Database は全て ClearDB のことを指しています。作成は簡単に出来るのと、支払いも Azure から請求されるので便利ですが、いろいろと評判が悪いのも事実です。

f:id:shiba-yan:20151206205701p:plain

ExpressWeb が提供していた MySQL と同じ性能を求める場合、どう頑張っても有料プランを契約する必要があります。月に $10 ぐらいは覚悟しないといけないかも知れません。

メール

Azure にはメールサービスがないので、Office 365 など外部のサービスを契約する必要があります。Office 365 については MVP のかずあきさんがとても詳しいので、そちらに解説をお願いしたいです。

ドメイン / DNS

GoDaddy とのパートナーシップで Azure ポータルからドメインは買えますが、移管は出来ないのでどっかのレジストラを使う必要があります。

DNS は Azure DNS を使うことも出来ますが、設定が PowerShell だけになるのでちょっと難しいです。

Azure DNS については世界のやまさがブログで紹介してくれているので、そっちを参考に。

料金について

あえて最後に持ってきましたが、大きく異なるのが料金で ExpressWeb は全機能を月額 250 円で使えますが、Web Apps は現実的には Shared 以上が必要になります。なので月額 1,160 円ぐらいになります。

やっぱり ExpressWeb はかなり安かったですね。