先の記事「MariaDB 10.11 をインストールしました」で書きましたように、2024 年 12 月にこのブログで使っているホスティングサービスで新サーバーへの移行がありました。新サーバーでは MariaDB 10.11 が使用されており、それに自分がブログアプリで使っていたプロバイダ MySql.Data 6.3.6 でアクセスするとサーバーエラーになるという問題が生じました。
対応するには、プロバイダに MySql.Data 8.1.0 以降もしくは MySqlConnector を使えば良さそうだということは分かりましたが、いずれも .NET Framework 3.5 には対応しておらず、アプリのフレームワークを .NET Framework 4.6.2 以降にしなければなりません。
という訳で、既存の ASP.NET Web Forms アプリの Web サイトプロジェクトを開発環境で .NET Framework 4.8.1 で作り直し、それをホスティングサービスのサーバーにアップロードし、ホスティングサービスの Plesk コントロールパネルを使って既存のサイト/アプリケーションと置き換える作業を行いました。以下にどのように行ったかを備忘録として書いておきます。
既存の ASP.NET Web Forms アプリをどのように .NET Framework 4.8.1 で作り直したかの詳細は割愛しますが、一点だけプロバイダをどうしたかだけ書いておきます。
MySql.Data 8.1.0 以降であれば問題はないことは確認できたのですが、データベースが MySQL から MariaDB に変更されているので Oracle 製の MySql.Data を使うのはこの際やめて、MariaDB と相性が良さそうで、かつ性能もよさそうな MySqlConnector に変更することにしました。
MySqlConnector と MySql.Data の比較について、詳しくは記事 MySqlConnector vs MySql.Data を見てください。
ADO.NET で使うのに、MySql.Data と同じ名前の MySqlConnection, MySqlCommand などが使用できるところも良いと思います。この記事を書いた時点での最新版 MySqlConnector 2.4.0 を NuGet からインストールしました。
以下に、Plesk コントロールパネルを使って、どのように自分の PC からアプリをサーバーにアップロードしたか、既存のサイトをどのように置き換えたか、既存のアプリケーションをどのように置き換えたかを書きます。
(1) サーバーへのアップロード
自分の PC では、Visual Studio 2022 を使って、下の画像の通りのフォルダ構成でアプリケーションのソリューション / プロジェクトを作成しました。画像で赤枠で囲ったフォルダをサーバーにアップロードします。
Plesk コントロールパネルにアクセスします。「ウェブサイトとドメイン」で「ダッシュボード」タブを選択。[ファイル] をクリック。表示された「ファイルマネージャ」画面で [ホームディレクトリ] をクリック。+ のアイコンをクリックして [ディレクトリをアップロード] を選択します。
[ディレクトリをアップロード] 選択で表示された画面に自分の PC のエクスプローラーからアップロードするディレクトリをドラッグ&ドロップするとアップロードが始まります。
アップロードするフォルダ内に ,vs フォルダが含まれているとアップロードに失敗します (.suo ファイルが問題らしい)。一時削除してからアップロードすれば問題なかったです。
1 ファイル当たり 1 秒ほどかかりますのでファイルの数が多いとかなり時間がかかります。FTP を使った方が早いかもしれません (未検証・未確認ですが)。
MyHomePageNet48, BlogEngineNet48, BlogEngine2Net48 全てのフォルダのアップロードが完了すると以下の画像のようになります。赤枠で示したフォルダがサーバーにアップロードされたフォルダです。
(2) 既存のサイトの置き換え
サイトのフォルダはデフォルトで httpdocs に設定されていますが、コントロールパネル上で任意のフォルダに変更する事が可能です。
まず、「ウェブサイトとドメイン」 で「ホスティングと DNS」タブを選択し[ホスティング]をクリックします。「ホスティング設定」画面が表示されます。
その中の[ホスティングタイプ]の[ドキュメントルート]に、上の手順 (1) でアップロードしたホルダの中でサイトに該当する MyHomePageNet48 を設定し、[保存]ボタンをクリックします。
「ダッシュボード」タブをクリックし「開発ツール」の[ASP.NET 設定]をクリックします。表示された画面で [フレームワークバージョン] を 4.8.1 に設定します。
以上で MyHomePageNet48 はサイトとして動くようになりました。
(3) 既存のアプリケーションの置き換え
ホスティングサービス会社のナレッジベース「[DataWeb] 仮想ディレクトリの作成とアプリケーション化について」を参考に、BlogEngineNet48 と BlogEngine2Net48 を上の手順 (1) で作成したサイト下のアプリケーションに設定します。
まず既存のアプリケーション名を変更します。[ダッシュボード]タブをクリックし「ファイルとデータベース」から[仮想ディレクトリ]をクリックします。表示された一覧の中の既存のアプリケーション (この記事の例では blogengine と blogengine2) の[設定の編集]をクリックします。
[仮想ディレクトリのプロパティ]画面で[名前]を変更します。この記事の例では BlogEngine を oldBlogEngine に変更しています。BlogEngine2 の方も同様にして oldBlogEngine2 に名前を変更します。
blogengine と blogengine2 はアプリケーションのエイリアスです。なので、新しいフォルダ BlogEngineNet48 を blogengine、BlogEngine2Net48 を blogengine2 というエイリアスのアプリケーションとして設定しなければなりません。そのために上に述べた名前の変更は必須です。
次にアップロードした BlogEngineNet48 と BlogEngine2Net48 をアプリケーションに設定します。
「ファイルとデータベース」から[仮想ディレクトリ]をクリックして表示される画面で[仮想ディレクトリを作成]ボタンをクリックします。
表示された「仮想ディレクトリを作成」画面で[仮想ディレクトリ]の[名前]にアプリケーションのエイリアス (この記事の例では blogengine または blogengine2) を入力し、[パス」にアップロードしたディレクトリへのパス (この記事の例では BlogEngineNet48 または BlogEngine2Net48) を設定します。
「アプリケーション設定」の[アプリケーションの作成]にチェックが入ってなかったら入れてください。
[Save]をクリックすると上で設定した名前でアプリケーションが追加されます。
追加されたアプリケーションをクリックし、表示された設定画面で[ASP.NET]をクリックします。
「ASP.NET 設定の構成」画面が表示されるので、フレームワークバージョンを 4.8.1 に設定します。
以上を BlogEngineNet48 と BlogEngine2Net48 に対して行って、上の手順 (2) で設定したサイト下のアプリケーションとして動くようになりました。