ASP.NET Core フレームワークを用いて文献管理システムを作る 【第8回 環境構築とデプロイ】

1. 前回のあらすじ

文献一覧へのリンクを設定し、文献検索を行えるようにしました。日本語化した人はウェブページが日本語になっていると思います。

2. 今回の目標

完成したアプリを仮想マシンに移行します。また、仮想マシン上で dotnet コマンドを用いて実行できる形に (デプロイ) します。

2.5 拡張機能のインストール (6/23更新)

ここで、拡張機能をインストールしておきます。理由は後にわかりますが、Visual Studioから Nuget を開きます。

参照の欄から Pomelo.EntityFrameworkCore.MySql を検索して、バージョン2.1.0 でダウンロードします。プロジェクトへのチェックを忘れないでください。

"インストール済み" のタブで、これが導入されているかを確認してください。

3. プロジェクトファイルを移行する

まずは仮想マシンを立ち上げます。私は第1回のブログで CentOS7 を使うと記述していますので、CentOS7で進めていきます。Ubuntuの人、ごめんなさい。
WinSCP というアプリを使って CentOS7 へプロジェクトファイルごとアップロードします。このとき、必ず Visual Studio を閉じてください。CentOS のホームディレクトリに WebApplication1 が表示されれば成功です。 f:id:takunology:20190623015019j:plain

f:id:takunology:20190623015213p:plain

これでWindows上で作成したプロジェクトファイルを CentOS に移行できました。

4. dotnet の環境構築

ここからはアプリを動かせるように環境を整えていきます。
dotnetリポジトリからダウンロードします

sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm

アップデートしてソフトウェアパッケージを取り込みます

sudo yum update

dotnet SDK をインスト―ルします。実行環境では dotnet 2.2 を導入します。

sudo yum install dotnet-sdk-2.2

インストールできたらバージョン確認するコマンドを打ってみます。

dotnet --version
2.2.300

このように表示されれば OK です。(とある学校の学生さんへ) 学校のプロキシではうまくできなかったので自宅で頑張りましょう。

5. アプリのデプロイと実行

dotnet コマンドが使用できるようになったら、アプリをリリース版へビルドします。まずはプロジェクトディレクトリまで移動します。プロジェクトディレクトリの中身はこんな感じです。 f:id:takunology:20190623020243p:plain

いろんなファイルが入っています。ここで、アプリをリリース版にします。

dotnet publish --configuration Release

と入力すると、こんな感じに出力されると思います。黄色い文字は警告を示しているのですが、気にしないでいいです。publish の表示があればデプロイされています。 f:id:takunology:20190623020514p:plain

この状態でアプリを起動してみましょう。(起動するコマンドなので覚えておきましょう)

sudo dotnet run

すると、立ち上がっているサーバのIPアドレスとポート番号が表示されているので、ここにアクセスしてみましょう。 f:id:takunology:20190623020849p:plain

f:id:takunology:20190623021506p:plain う~ん、ターミナルを見れば接続されてはいるようですが、firefox のほうではじかれてしまっています。原因は証明書が正しくないからですね。これを回避する方法はいくつかありますが、ソースコードをいじってSSL認証ではない接続をさせてみます。(ローカルなのでセキュリティ対策はひとまず置いておきます)

6. httpプロキシへの変更

プロジェクトディレクトリの中にある Startup.cs を開きます。ここには起動時に読み込む設定が記述されています。ちなみに、プログラムの修正はCentOS上で行います。(Windows 側で修正してもいいですが、その都度移行させることを忘れないでください)
Startup.cs の Configure ( ) メソッドの中にある

app.UseHttpsRedirection(); 

の一文をコメントアウトして無効化します。これによって自動的に https プロトコルに遷移されるのを防ぎます。全体像はこんな感じです。 f:id:takunology:20190623022138p:plain

修正できたら戻って再び実行し、アクセスしてみます。 f:id:takunology:20190623022552p:plain

良い感じですね!
ちょっと文献一覧ページにアクセスしてみましょう f:id:takunology:20190623022653p:plain

嫌な感じですね! (笑)
エラーの原因は読めばわかりますが、「LocalDB は このプラットフォームに対応していません」です。つまり、Visual Studioで作成してきたデータベースでは実行できないのです。無念ですね。ここで私は一度挫折しました。が、その経験を生かして対処方法を公開したいと思います!

7. まとめ

このまま続けると長くなりそうなので、次回に持ち越します。次回はデータベース (MariaDB へ) の移行とローカルホストのアドレスを変更していきます。この移行が私にとっては大変で、1週間くらいかかりました。しかし、ブログ記事にまとめていると「こんなことで...」ということが多々あります。

では、お疲れさまでした。