macOSでのASP.NET Framework 4.xの開発方法
ServBayは、内蔵の強力なMono環境を通じて、macOS上でASP.NET Framework 1.1/2.0/3.x/4.x(最大4.7.xまで)の開発とテストを簡単に行えるようにします。
ServBay v1.12.0以降、Mono 6.14.0を統合し、XSP開発サーバーを搭載しました。これにより、ASP.NET Framework 4.xアプリケーションを実行するための2つの主要な方法を提供します:
- XSPを使用した迅速な開発とテスト
- Nginx + FastCGIを使用した、より安定的で本番環境に近いアプリケーションのデプロイ
この文書では、ServBay環境下でASP.NET Framework 4.xプロジェクトを設定し、実行する方法を説明します。
前提条件
- ServBayのインストール: macOSにServBay v1.12.0以上がインストールされていることを確認してください。
- Monoのインストール:
- ServBayアプリケーションを開きます。
- 左側のナビゲーションバーで「ソフトウェアパッケージ」を選択します。
- ソフトウェアパッケージリストで「.NET」カテゴリを見つけて展開します。
- 「Mono 6」(バージョンは6.14.0以上)を見つけ、右側の「インストール」ボタンをクリックし、インストールが完了するまで待ちます。
ASP.NETプロジェクトの準備
- プロジェクトファイル: ASP.NET Framework 4.xのWebアプリケーションまたはWebサイトプロジェクトが用意されていることを確認します。
- 推奨保存位置: サイトプロジェクトをServBayが一元管理する
www
ディレクトリに配置することを強くお勧めします。つまり、/Applications/ServBay/www/
に置きます。各プロジェクトに別々のサブディレクトリを作成してください。- 例: プロジェクト名が
MyWebApp
の場合、推奨パスは/Applications/ServBay/www/MyWebApp
です。 - 今後のステップでは、
/Applications/ServBay/www/MyWebApp
を例示パスとして使用します。必ず実際のプロジェクトパスに置き換えてください。
- 例: プロジェクト名が
方法1:XSP(内蔵開発サーバー)を使用
XSPは、Mono向けに設計された軽量のASP.NET Webサーバーで、開発や迅速なテスト段階に非常に適しています。ServBayにインストールされたMono 6パッケージにはXSP4(ASP.NET 4.xに対応)が内蔵されています。
ヒント
- ASP.NET 1.1プロジェクトを実行する場合は、
xsp
コマンドを使用してください。 - ASP.NET 2.0プロジェクトを実行する場合は、
xsp2
コマンドを使用してください。
手順:
ターミナルを開く: macOSのターミナルアプリケーションを開きます。
プロジェクトディレクトリに移動:
cd
コマンドを使用して、ASP.NETプロジェクトのルートディレクトリ(web.config
ファイルを含むディレクトリ)に移動します。bash# 例:MyWebAppというプロジェクトディレクトリに移動 cd /Applications/ServBay/www/MyWebApp
1
2XSPサーバーを起動する: プロジェクトのルートディレクトリで、次のコマンドを実行してXSP4サーバーを起動します。ポート番号(例:8080または9000)を指定して、ServBay内の他のサービスとの衝突を避けることができます。
bash# 現在のディレクトリのプロジェクトを9000ポートで起動 xsp4 --port 9000
1
2xsp4
: .NET 4.x対応のXSPサーバーを呼び出します。--port 9000
: サーバーがリスニングするポート番号を指定します。
アプリケーションにアクセス: Webブラウザを開き、
http://localhost:9000
またはhttp://127.0.0.1:9000
にアクセスします。ASP.NETアプリケーションが実行されているはずです。サーバーを停止する: 開発またはテストが完了したら、ターミナルウィンドウに戻り、
Ctrl + C
またはEnterキー
を押してXSPサーバーを停止します。
利点:
- 設定が簡単で、すぐに起動できます。
- ローカル開発やデバッグに非常に適しています。
欠点:
- Nginxなどのプロダクションレベルのサーバーより性能が劣ります。
- 機能が比較的基本的で、本番環境の完全な模倣ではありません。
方法2:Nginx + FastCGIを使用
この方法では、ServBayが管理するNginxをフロントエンドWebサーバーとして使用し、FastCGIプロトコルを介して動的リクエストをMonoバックエンドプロセス(fastcgi-mono-server4
)に転送します。この方法は本番環境のデプロイに近く、パフォーマンスも向上します。
ヒント
- ASP.NET 1.1プロジェクトを実行する場合は、
fastcgi-mono-server
コマンドを使用してください。 - ASP.NET 2.0プロジェクトを実行する場合は、
fastcgi-mono-server2
コマンドを使用してください。
手順:
MonoとNginxがインストールされ、動作していることを確認:
- ServBayの「ソフトウェアパッケージ」を使用してMono 6とNginxをインストールします。
- ServBayの「サービス」セクションで、Nginxサービスが起動していることを確認します。
ASP.NETプロジェクトの準備: プロジェクトが推奨パス(例:
/Applications/ServBay/www/MyWebApp
)にあることを確認します。FastCGI Mono Serverを起動:
- 新しいターミナルウィンドウを開きます。
fastcgi-mono-server4
プロセスを実行します。このプロセスは、NginxからのFastCGIリクエストをリスニングし、ASP.NETコードを実行します。bash# 例:MyWebAppプロジェクトのためにFastCGIサービスを起動 fastcgi-mono-server4 --applications=/:/Applications/ServBay/www/MyWebApp \ --socket=tcp:127.0.0.1:9001 \ --loglevels=Standard \ --printlog
1
2
3
4
5--applications=/:/Applications/ServBay/www/MyWebApp
: サイトのルートパス(/
)をプロジェクトの物理パスにマッピングします。必ず/Applications/ServBay/www/MyWebApp
をプロジェクトの実際のパスに置き換えてください。--socket=tcp:127.0.0.1:9001
: FastCGIサーバーがリスニングするTCPアドレスとポートを指定します。このポート(例:9001)が他のプロセスで使用されておらず、以下のNginx設定内のfastcgi_pass
ディレクティブと一致することを確認してください。--loglevels=Standard --printlog
: (オプション)標準レベルのログをターミナルに表示し、デバッグに便利です。
- 注意: このターミナルウィンドウは、FastCGIサービスを実行するために開いたままにしておく必要があります。長期運用の場合、
nohup
またはscreen
/tmux
などのツールを使用してバックグラウンドで実行することをお勧めします。
Nginxサイトを設定:
ServBayで「サイト」セクションに移動します。
「サイトを追加」をクリックするか、既存のサイトを選択して編集します。
ドメイン名を設定: 例として
mywebapp.test
を指定します。ServBayは自動的にHostsファイルに追加します。ウェブサイトのルートディレクトリを設定: 非常に重要! これをASP.NETプロジェクトの実際のパス(例:
/Applications/ServBay/www/MyWebApp
)に設定します。これにより、Nginx設定のroot
ディレクティブが正しく設定されます。重要: Nginx設定ファイルを確認/編集する: サイト設定の右上にある「カスタム設定」選択ボックスをクリックします。ServBayは設定したウェブサイトのルートディレクトリに基づいて基本設定を生成します。
location /
および@mono
(または同様の命名のlocationブロック)の設定が正しいことを確認し、リクエストをFastCGI Mono Serverにプロキシできるようにします。ServBayが自動生成した設定に基づき、確認または追加が必要な部分の例を以下に示します:
nginxserver { listen 443; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers 'TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384'; ssl_prefer_server_ciphers on; ssl_session_timeout 1d; ssl_session_cache shared:ServBay:10m; ssl_session_tickets off; ssl_certificate /Applications/ServBay/ssl/private/tls-certs/mywebapp.test/mywebapp.test.crt; # 証明書が実際のパスと一致していることを確認 ssl_certificate_key /Applications/ServBay/ssl/private/tls-certs/mywebapp.test/mywebapp.test.key; # 証明書が実際のパスと一致していることを確認 server_name mywebapp.test; # ServBayで設定したドメイン名と一致する必要があります root /Applications/ServBay/www/MyWebApp; # **これが設定したウェブサイトのルートと一致することを確認してください** index index.html index.htm default.aspx Default.aspx; # ASP.NETのデフォルトドキュメントを追加 location / { try_files $uri $uri/ @mono; # 静的ファイルを試行、そうでなければ@monoに処理を委託 } # (オプションだが推奨)Nginxが一般的な静的ファイルを直接処理 # location ~* \.(ico|css|js|gif|jpe?g|png|svg|woff|woff2|ttf|eot)$ { # expires max; # log_not_found off; # access_log off; # } location @mono { # リクエストをFastCGI Mono Serverに渡す # **ポートは** fastcgi-mono-server4を起動する際に指定した--socketパラメータと一致しなければなりません fastcgi_pass 127.0.0.1:9001; # 必要なFastCGIパラメータ include fastcgi_params; # SCRIPT_FILENAMEはrootディレクティブと$fastcgi_script_nameに基づいて正しく設定されます fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO ""; } # ServBayは他のデフォルト設定(ログ、アクセス制御など)も含める場合があります # access_log /Applications/ServBay/logs/nginx/mywebapp.test.access.log; # error_log /Applications/ServBay/logs/nginx/mywebapp.test.error.log; }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43設定を保存してNginxを再起動: Nginx設定ファイルを保存します。ServBayは保存後に自動的にNginx設定をリロードします。設定に誤りがある場合、ServBayはエラーを提示します。必要に応じて、ServBayの「サービス」ページから手動でNginxを再起動できます。
アプリケーションにアクセス: ブラウザを開き、Nginxで設定したドメイン名(例:
https://mywebapp.test
、ここでHTTPSプロトコルを使用)にアクセスします。Nginxはリクエストをfastcgi-mono-server4
に転送し、MonoがASP.NETコードを実行します。
利点:
- パフォーマンスが向上し、安定性があります。
- 本番環境に近いデプロイ方式です。
- Nginxの静的ファイル処理、負荷分散、SSLなどの高度な機能を利用可能です。
- ServBayのサイト管理、ドメイン、Hosts管理との統合がより高いです。
欠点:
- XSPより設定が若干複雑です。
fastcgi-mono-server4
プロセスを手動で管理する必要があります。
どの方法を選ぶか
- 迅速な開発、デバッグ、および簡単なテストには、XSPが最も便利な方法です。
- より高い性能、本番環境に近いテストまたは内部デプロイが求められる場合や、Nginxの高度な機能とServBayのサイト管理機能を活用したい場合は、Nginx + FastCGIを選択する方が良い選択です。
注意事項とトラブルシューティング
- ファイル権限: Nginxプロセス(通常はServBayが管理)と
fastcgi-mono-server4
を実行しているmacOSユーザーが、プロジェクトファイル(/Applications/ServBay/www/YourProjectName
に位置)に読み取り権限を持っていることを確認してください。ディレクトリの権限を調整する必要がある場合もあります(chmod
やchown
)。 - パス: Nginx設定(
root
ディレクティブ)とfastcgi-mono-server4
コマンド(--applications
パラメータ)のプロジェクトパスが完全に正しいことを確認し、web.config
を含むディレクトリを指しているか確認してください。 - ポートの競合: XSPまたは
fastcgi-mono-server4
が使用するポート(例は9000または9001)が他のアプリケーションによって占有されていないことを確認してください。 - ログ:
fastcgi-mono-server4
起動時のターミナルの出力ログを確認します。- Nginxエラーログを確認します。ServBayのサイト設定内で該当するサイトのエラーログパスを見つけることができます(通常は
/Applications/ServBay/logs/nginx/mywebapp.test.error.log
)。
- Monoバージョンの互換性: Mono 6.14.0は、.NET Framework 1.1から.NET Framework 4.7.2までおおよそ互換性があります。より高いバージョンの.NET Frameworkの機能を使用する場合は、ServBayからMicrosoftの公式.NET Coreまたは.NETをインストールしてください。
ServBayに内蔵されたMono 6環境と推奨されるプロジェクト構造を使用することで、macOS上でASP.NET Framework 4.xアプリケーションの開発と実行がより標準化され、便利になります。この文書が、あなたの開発作業をスムーズに開始する手助けとなることを願っています!