ASP.NET Core アプリケーションを MySQL と Nginx を使用して Ubuntu 18.04 にデプロイする方法
ASP.NET Core アプリケーションを Ubuntu 18.04 にデプロイする際、MySQL データベースを使用し、Nginx をリバースプロキシとして設定することは一般的な構成です。このガイドでは、これらのステップを順を追って説明します。
1. 必要なツールとパッケージのインストール
まず、必要なソフトウェアと依存関係をインストールします。これには、ASP.NET Core ランタイム、MySQL、Nginx などが含まれます。

a. .NET Core ランタイムのインストール
-
Microsoft のリポジトリを追加します。
bashsudo apt-get update
sudo apt-get install -y apt-transport-https
sudo wget https://packages.microsoft.com/config/ubuntu/18.04/prod.list
sudo mv prod.list /etc/apt/sources.list.d/microsoft-prod.list
sudo wget https://packages.microsoft.com/keys/microsoft.asc
sudo apt-key add microsoft.asc
-
必要なパッケージをインストールします。
bashsudo apt-get update sudo apt-get install -y dotnet-sdk-6.0
b. MySQL のインストール
-
MySQL の公式リポジトリを追加します。
bashsudo apt-get install -y software-properties-common sudo add-apt-repository ppa:ondrej/mysql-5.7
-
MySQL をインストールします。
bashsudo apt-get update sudo apt-get install -y mysql-server
-
MySQL をセットアップし、セキュリティ設定を行います。
bashsudo mysql_secure_installation
これで MySQL のインストールは完了です。次に、ASP.NET Core アプリケーション用のデータベースを作成します。
bashsudo mysql -u root -p
CREATE DATABASE your_database_name;
CREATE USER 'your_user'@'localhost' IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON your_database_name.* TO 'your_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
c. Nginx のインストール
-
Nginx をインストールします。
bashsudo apt-get install -y nginx
-
Nginx を起動し、システム起動時に自動的に開始するように設定します。
bashsudo systemctl start nginx
sudo systemctl enable nginx
2. ASP.NET Core アプリケーションのビルドと発行
次に、ASP.NET Core アプリケーションをビルドし、Ubuntu サーバーに発行します。
a. プロジェクトのビルド
-
プロジェクトディレクトリに移動します。
bashcd /path/to/your/project
-
アプリケーションを発行します。
bashdotnet publish --configuration Release --output /var/www/yourapp
b. 環境変数の設定
アプリケーションが MySQL に接続できるように、接続文字列を環境変数として設定します。例えば、appsettings.json
に次のように接続文字列を追加します。
json{
"ConnectionStrings": {
"DefaultConnection": "Server=localhost;Database=your_database_name;User=your_user;Password=your_password;"
}
}
3. ASP.NET Core アプリケーションをバックグラウンドで実行する
ASP.NET Core アプリケーションをバックグラウンドで実行するために、systemd
サービスを使用します。
-
新しい
systemd
サービスファイルを作成します。
bashsudo nano /etc/systemd/system/yourapp.service
-
サービスファイルの内容を以下のように設定します。
ini[Unit]
Description=ASP.NET Core Application
After=network.target
[Service]
WorkingDirectory=/var/www/yourapp
ExecStart=/usr/bin/dotnet /var/www/yourapp/yourapp.dll
Restart=always
User=www-data
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=ConnectionStrings__DefaultConnection=Server=localhost;Database=your_database_name;User=your_user;Password=your_password;
[Install]
WantedBy=multi-user.target
-
サービスを有効にして起動します。
bashsudo systemctl enable yourapp.service
sudo systemctl start yourapp.service
4. Nginx の設定
Nginx をリバースプロキシとして設定し、外部からのリクエストを ASP.NET Core アプリケーションに転送します。
-
Nginx サイト設定を編集します。
bashsudo nano /etc/nginx/sites-available/yourapp
-
以下のような設定を追加します。
nginxserver {
listen 80;
server_name yourdomain.com;
location / {
proxy_pass http://localhost:5000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
-
サイト設定を有効にして、Nginx を再起動します。
bashsudo ln -s /etc/nginx/sites-available/yourapp /etc/nginx/sites-enabled/
sudo systemctl restart nginx
5. ファイアウォール設定
もし UFW を使用している場合、HTTP トラフィックを許可します。
bashsudo ufw allow 'Nginx Full'
sudo ufw enable
6. 動作確認
-
サーバーの IP アドレスまたはドメイン名をブラウザに入力し、アプリケーションが正常に動作していることを確認します。
-
エラーログやアクセスログを確認して、問題がないか確認します。
bashsudo journalctl -u yourapp.service
まとめ
このガイドでは、ASP.NET Core アプリケーションを Ubuntu 18.04 上で MySQL と Nginx を使ってデプロイする方法を紹介しました。MySQL の設定、Nginx のリバースプロキシ設定、そしてアプリケーションのバックグラウンド実行を含む一連のプロセスをカバーしました。この設定により、強力でスケーラブルな ASP.NET Core アプリケーションのデプロイメントが可能になります。