しばやん雑記

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

ExpressWeb から 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 を作成する | Microsoft Docs

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

MySQL

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

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

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

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

https://www.cleardb.com/

ポータルにある 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 はかなり安かったですね。