FTP クライアントを使用してサイトを配置する (C#)

作成者: Scott Mitchell

PDF のダウンロード

ASP.NET アプリケーションを配置する最も簡単な方法は、必要なファイルを開発環境から運用環境に手動でコピーすることです。 このチュートリアルでは、FTP クライアントを使用して、デスクトップから Web ホスト プロバイダーにファイルを取得する方法を示します。

はじめに

前のチュートリアルでは、いくつかの ASP.NET ページ、マスター ページ、カスタム 基底 Page クラス、複数の画像、3 つの CSS スタイル シートで構成される、簡単な Book Review ASP.NET Web アプリケーションについて説明しました。 このアプリケーションを Web ホスト プロバイダーに配置する準備ができたので、この時点で、インターネットに接続している任意のユーザーがアプリケーションにアクセスできるようになります。

"配置が必要なファイルを決定する" チュートリアルの説明から、Web ホスト プロバイダーにコピーする必要があるファイルがわかります。 (コピー対象のファイルは、アプリケーションが明示的にコンパイルされるか、自動的にコンパイルされるかによって異なることを思い出してください。)しかし、開発環境 (デスクトップ) から運用環境 (Web ホスト プロバイダーによって管理される Web サーバー) にファイルを取得するにはどうすればよいですか? ファイル転送プロトコル (F ile T ransfer P rotocol (FTP)) が、ネットワーク経由でファイルをコンピューター間でコピーするために一般的に使用されるプロトコルです。 もう 1 つのオプションは、FrontPage Server Extensions (FPSE) です。 このチュートリアルでは、スタンドアロン FTP クライアント ソフトウェアを使用して、必要なファイルを開発環境から運用環境に配置することに焦点を当てています。

Note

Visual Studio には、FTP 経由で Web サイトを公開するためのツールが含まれています。これらのツールと、FPSE を使用するツールについては、次のチュートリアルで説明します。

FTP を使用してファイルをコピーするには、 開発環境に "FTP クライアント" が必要です。 FTP クライアントは、それがインストールされているコンピューターから、"FTP サーバー" を実行しているコンピューターにファイルをコピーするように設計されたアプリケーションです。 (Web ホスト プロバイダーが FTP 経由のファイル転送をサポートしている場合は、ほとんどのファイル転送と同じように、Web サーバーで実行されている FTP サーバーがあります。)複数の FTP クライアント アプリケーションが使用できます。 Web ブラウザーは FTP クライアントとしての機能も備えています。 お気に入りの FTP クライアントであり、このチュートリアルで使用するのは FileZilla です。これは、Windows、Linux、Mac で使用できる無料のオープンソース FTP クライアントです。 ただし、どの FTP クライアントでも機能するので、自分が最も使いやすいクライアントを自由に使用してください。

先に進むにあたっては、このチュートリアルまたはその後のチュートリアルを完了する前に、Web ホスト プロバイダーでアカウントを作成する必要があります。 前のチュートリアルで説明したように、価格、機能、サービス品質がさまざまな Web ホスト プロバイダー会社の集団が存在します。 このチュートリアル シリーズでは、Web ホスト プロバイダーとして Discount ASP.NET を使用しますが、サイトが開発されている ASP.NET バージョンをサポートしている限り、任意の Web ホスト プロバイダーを使用できます。 (これらのチュートリアルは、ASP.NET 3.5 を使用して作成されました。)また、このチュートリアルと今後のチュートリアルでは FTP を使用して Web ホスト プロバイダーにファイルをコピーするため、Web ホスト プロバイダーが Web サーバーへの FTP アクセスをサポートすることが不可欠です。 ほぼすべての Web ホスト プロバイダーがこの機能を提供しますが、サインアップする前に再確認する必要があります。

Book Review Web アプリケーション プロジェクトの配置

Book Review Web アプリケーションには 2 つのバージョンがあることを思い出してください。1 つは Web アプリケーション プロジェクト モデル (BookReviewsWAP) を使用して実装され、もう 1 つは Web サイト プロジェクト モデル (BookReviewsWSP) を使用して実装されます。 プロジェクトの種類は、サイトが自動的にコンパイルされるか明示的にコンパイルされるかに影響し、コンパイル モデルによって、配置する必要があるファイルが指定されます。 したがって、BookReviewsWAP から始めて、BookReviewsWAP プロジェクトと BookReviewsWSP プロジェクトの配置について別々に説明します。 まだダウンロードしていない場合は、この 2 つの ASP.NET アプリケーションをダウンロードしてください。

BookReviewsWAP フォルダーに移動し、BookReviewsWAP.sln ファイルをダブルクリックして、BookReviewsWAP プロジェクトを 起動します。 プロジェクトを配置する前に、ソース コードに対する変更がコンパイル済みアセンブリに確実に含まれるようにプロジェクトをビルドすることが重要です。 プロジェクトをビルドするには、[ビルド] メニューに移動し、[Build BookReviewsWAP]\(BookReviewsWAP のビルド\) メニュー オプションを選択します。 これにより、プロジェクト内のソース コードが、Bin フォルダーに置かれている 1 つのアセンブリ BookReviewsWAP.dll にコンパイルされます。

これで、必要なファイルを配置する準備ができました。 FTP クライアントを起動し、Web ホスト プロバイダーの Web サーバーに接続します。 (Web ホスティング会社にサインアップすると、FTP サーバーへの接続方法に関する情報が電子メールで送信されます。これには、FTP サーバーのアドレスと共にユーザー名とパスワードが記載されています。)

デスクトップから Web ホスト プロバイダーのルート Web サイト フォルダーに次のファイルをコピーします。 Web ホスト プロバイダーの Web サーバーに FTP 接続すると、おそらくルート Web サイト ディレクトリが表示されます。 ただし、一部の Web ホスト プロバイダーには、Web サイト ファイルのルート フォルダーとして機能する、www または wwwroot という名前のサブフォルダーがあります。 最終的に、ファイルを FTP 転送するときに、運用環境で対応するフォルダー構造 (Bin フォルダー、Fiction フォルダー、Images フォルダーなど) を作成する必要がある場合があります。

  • ~/Default.aspx
  • ~/About.aspx
  • ~/Site.master
  • ~/Web.config
  • ~/Web.sitemap
  • Styles フォルダーの完全な内容
  • Images フォルダー (およびそのサブフォルダー BookCovers) の完全な内容
  • ~/Fiction/Default.aspx
  • ~/Fiction/Blaze.aspx
  • ~/Tech/Default.aspx
  • ~/Tech/CYOW.aspx
  • ~/Tech/TYASP35.aspx
  • ~/Bin/BookReviewsWAP.dll

図 1 は、必要なファイルがコピーされた後の FileZilla を示しています。 FileZilla には、左側にローカル コンピューター上のファイルと、右側にリモート コンピューター上のファイルが表示されます。 図 1 に示すように、About.aspx.cs などの ASP.NET ソース コード ファイルはローカル コンピューター (開発環境) 上にありますが、明示的なコンパイルを使用する場合はコード ファイルを配置する必要がないため、Web ホスト プロバイダー (運用環境) にはコピーされませんでした。

Note

ソース コード ファイルは無視されるため、運用サーバー上に存在しても問題はありません。 ASP.NET は、ソース コード ファイルに対する HTTP 要求を既定で禁止しているため、ソース コード ファイルが運用サーバーに存在する場合でも、Web サイトの訪問者からはアクセスできません。 (つまり、ユーザーが http://www.yoursite.com/Default.aspx.cs にアクセスしようとすると、これらの種類のファイル (.cs ファイル) が禁止されていることを説明するエラー ページが表示されます。)

Screenshot of the FileZilla FTP client, which shows that some ASP dot Net source code files were not copied to the remote server.

図 1: FTP クライアントを使用して、デスクトップから Web ホスト プロバイダーの Web サーバーに必要なファイルをコピーします (クリックするとフルサイズの画像が表示されます)

サイトを配置した後、少し時間を取ってサイトをテストします。 ドメイン名を購入し、DNS 設定を正しく構成している場合は、ドメイン名を入力してサイトにアクセスできます。 または、Web ホスト プロバイダーから、サイトへの URL が提供されているはずです。これは、accountname.webhostprovider.com または webhostprovider.com/accountname のようになります。 たとえば、Discount ASP.NET のアカウントの URL は http://httpruntime.web703.discountasp.net になります。

図 2 は、配置済みの Book Reviews サイトを示しています。 Discount ASP.NET のサーバー (http://httpruntime.web703.discountasp.net) でそのサイトを表示していることに注目してください。 この時点で、インターネットに接続しているユーザーは誰でも私の Web サイトを見ることができます。 予想通り、サイトの外観と動作は、開発環境でテストしたときとまったく同じです。

Note

アプリケーションの表示中にエラーが発生した場合は、ファイルの正しいセットを配置したことを確認してください。 次に、エラー メッセージを調べて、問題に関する手掛かりが明らかになっているかどうかを確認します。 その後、Web ホスト会社のヘルプデスクに問い合わせたり、ASP.NET フォーラムの適切なフォーラムに質問を投稿したりすることができます。

The Book Reviews Site is Now Accessible to Anyone with an Internet Connection

図 2: Book Reviews サイトには、インターネット接続を持つすべてのユーザーがアクセスできるようになりました (クリックするとフルサイズの画像が表示されます)

Book Review Web サイト プロジェクトの配置

BookReviewsWSP Web サイト プロジェクトなど、自動コンパイルを使用する ASP.NET アプリケーションを配置する場合、Bin フォルダーにコンパイル済みアセンブリはありません。 そのため、Web アプリケーションのソース コード ファイルを運用環境に配置する必要があります。 このプロセスを確認してみましょう。

Web アプリケーション プロジェクトと同様に、最初にアプリケーションをビルドしてから配置することをお勧めします。 Web サイト プロジェクトをビルドしてもアセンブリは作成されませんが、ページにコンパイル時エラーがないか確認します。 サイトの訪問者に見つけてもらうのではなく、今すぐこれらのエラーを見つけることをお勧めします。

プロジェクトを正常にビルドしたら、FTP クライアントを使用して、次のファイルを Web ホスト プロバイダーのルート Web サイト フォルダーにコピーします。 対応するフォルダー構造を運用環境で作成することが必要になる場合があります。

Note

BookReviewsWAP プロジェクトを既に配置しているにもかかわらず、BookReviewsWSP プロジェクトを配置しようとする場合は、最初に BookReviewsWAP の配置時にアップロードされた Web サーバー上のすべてのファイルを削除してから、BookReviewsWSP のファイルを配置してください。

  • ~/Default.aspx
  • ~/Default.aspx.cs
  • ~/About.aspx
  • ~/About.aspx.cs
  • ~/Site.master
  • ~/Site.master.cs
  • ~/Web.config
  • ~/Web.sitemap
  • Styles フォルダーの完全な内容
  • Images フォルダー (およびそのサブフォルダー BookCovers) の完全な内容
  • ~/App_Code/BasePage.cs
  • ~/Fiction/Default.aspx
  • ~/Fiction/Default.aspx.cs
  • ~/Fiction/Blaze.aspx
  • ~/Fiction/Blaze.aspx.cs
  • ~/Tech/Default.aspx
  • ~/Tech/Default.aspx.cs
  • ~/Tech/CYOW.aspx
  • ~/Tech/CYOW.aspx.cs
  • ~/Tech/TYASP35.aspx
  • ~/Tech/TYASP35.aspx.cs

図 3 は、必要なファイルをコピーした後の FileZilla を示しています。 ご覧のように、ASP.NET ソース コード ファイル (About.aspx.cs など) は、ローカル コンピューター (開発環境) と Web ホスト プロバイダー (運用環境) の両方に存在します。これは、自動コンパイルを使用する場合はコード ファイルを配置する必要があるためです。

Screenshot of the FileZilla FTP client window, which shows the ASP dot Net source code files have been successfully uploaded to the server.

図 3: FTP クライアントを使用して、デスクトップから Web ホスト プロバイダーの Web サーバーに必要なファイルをコピーします (クリックするとフルサイズの画像が表示されます)

ユーザー エクスペリエンスは、アプリケーションのコンパイル モデルの影響を受けません。 Web サイトの作成に Web アプリケーション プロジェクト モデルを使用したか、Web サイト プロジェクト モデルを使用したかに関係なく、同じ ASP.NET ページにアクセスでき、外観と動作は同じです。

運用環境での Web アプリケーションの更新

Web アプリケーションの開発と配置は、1 回限りのプロセスではありません。 たとえば、Book Review Web サイトを作成するときに、さまざまなページを作成し、付属のコードを個人用コンピューター (開発環境) に記述しました。 一定の安定した状態に到達した後、自分のアプリケーションを配置して、他のユーザーがサイトにアクセスしてレビューを読むことができるようにしました。 ただし、配置は、このサイトでの開発の終わりを示すものではありません。 書評を追加したり、訪問者が本を評価するか、独自のコメントを残すなどの新機能を実装したりする場合があります。 このような拡張機能は開発環境で開発され、完了したら配置する必要があります。 したがって、開発と配置は循環的です。 アプリケーションを開発してから、配置します。 サイトが有効で運用中は、時間の経過につれて新しい機能が追加され、バグが修正されるため、アプリケーションの再配置が必要になります。 以下同様です。

ご想像のとおり、Web アプリケーションを再配置する場合は、新しいファイルと変更されたファイルのみをコピーする必要があります。 変更されていないページやサーバー側またはクライアント側のサポート ファイルを再配置する必要はありません (ただし、再配置しても問題はありません)。

Note

明示的なコンパイルを使用するときに注意すべき点の 1 つは、新しい ASP.NET ページをプロジェクトに追加したり、コード関連の変更を加えたりするたびに、プロジェクトを再ビルドする必要があります。これにより、Bin フォルダー内のアセンブリが更新されます。 そのため、運用環境で Web アプリケーションを更新するときに、この更新されたアセンブリを (他の新しいコンテンツと更新されたコンテンツと共に) 運用環境にコピーする必要があります。

また、Web.config または Bin ディレクトリ内のファイルに対する変更を加えると、Web サイトのアプリケーション プールがいったん停止してから再起動されることも理解してください。 セッション状態が InProc モード (既定) を使用して 格納される場合、これらのキー ファイルが変更されるたびに、サイトの訪問者はセッション状態を失います。 この落とし穴を回避するには、StateServer または SQLServer モードを使用してセッションを格納することを検討してください。 このトピックの詳細については、「セッション状態モード」をご覧ください。

最後に、運用環境にコピーする必要があるファイルの数とサイズによっては、アプリケーションの再配置に数秒から数分かかる場合があることに注意してください。 この間、サイトにアクセスするユーザーには、エラーや異常な動作が発生する可能性があります。 アプリケーション全体を "オフ" にするには、アプリケーションのルート ディレクトリに App_Offline.htm という名前のページを追加します。このページは、サイトがメインテナンス (またはその他何でも) のためにダウンしていて、まもなく稼働することをユーザーに説明します。 App_Offline.htm ファイルが存在する場合、ASP.NET ランタイムは、すべての着信要求をそのページにリダイレクトします。

まとめ

Web アプリケーションを配置するには、必要なファイルを開発環境から運用環境にコピーする必要があります。 ファイルがネットワーク経由で転送される最も一般的な方法はファイル転送プロトコル (FTP) であり、ほとんどの Web ホスト プロバイダーは Web サーバーへの FTP アクセスをサポートします。 このチュートリアルでは、FTP クライアントを使用して必要なファイルを Web サーバーに配置する方法について確認しました。 配置すると、インターネットに接続している任意のユーザーが Web サイトにアクセスできるようになります。

プログラミングに満足!

もっと読む

この記事で説明したトピックの詳細については、次のリソースを参照してください。