macOSでServBayを使った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開発サーバー及び fastcgi-mono-server
ツールを標準搭載。ASP.NET Framework 4.xアプリの実行方法を2つご用意しました:
- XSPで素早く開発・テスト: XSPはMono向けの軽量ASP.NETサーバーで、開発や素早い動作確認に最適です。
- Nginx + FastCGIによる運用: より安定し高性能、実運用に近い形で、ServBay管理のNginxからMonoバックエンドへFastCGI経由でリクエストを転送します。
本ドキュメントでは、ServBay環境でASP.NET Framework 4.xプロジェクトを構成・実行する手順を案内します。
.NET Frameworkと.NETについて
ご注意ください。本ガイドはMonoベースのASP.NET Framework 4.x開発に関するもので、過去の.NET技術スタックです。
ServBayは、最新の .NET(.NET Coreや.NET 5/6/7/8+)の開発・デプロイにも完全対応しています。新規開発やモダンな.NET移行の場合は、この記事で扱うMono方式ではなく、ServBayのMicrosoft公式.NETランタイム/SDKサポートをご利用ください。
前提条件
- ServBayのインストール: macOSにServBay v1.12.0以上がインストール済みであること。
- Monoのインストール:
- ServBayアプリを起動します。
- 左ナビゲーションから「パッケージ」を選択。
- パッケージリストの「.NET」カテゴリを展開します。
- 「Mono 6」(バージョン6.14.0以上が望ましい)を見つけ、右側の「インストール」ボタンを押してインストール完了まで待ちます。
ASP.NETプロジェクトの準備
- プロジェクトファイル: ASP.NET Framework 4.xのWeb ApplicationまたはWeb Siteプロジェクト、
web.config
が存在すること。 - 推奨配置場所: サイトプロジェクトは、ServBay管理下の
www
ディレクトリ、すなわち/Applications/ServBay/www/
配下への設置を強く推奨します。プロジェクトごとにサブディレクトリを作成してください。- 例: プロジェクト名が
MyWebApp
の場合、ルートパスは/Applications/ServBay/www/MyWebApp
となります。 - 以下の手順では
/Applications/ServBay/www/MyWebApp
をサンプルパスとして使います。必ずご自身のプロジェクトパスへ読み替えてください。
- 例: プロジェクト名が
方法1:XSP(内蔵開発サーバー)の利用
XSPはMonoが同梱する軽量Webサーバーで、ASP.NET Frameworkアプリのローカル開発・テストに最適です。ServBay標準のMono 6にはXSP4(.NET Framework 4.x用)が含まれています。
ヒント
- ASP.NET 1.1 プロジェクトの場合は
xsp
コマンドを使います。 - ASP.NET 2.0/3.x なら
xsp2
を、 - ASP.NET 4.x では
xsp4
を使います。
手順:
ターミナルの起動: macOSの「ターミナル」(Terminal)を開きます。
プロジェクトディレクトリに移動:
cd
コマンドで、ASP.NETプロジェクト(web.config
がある場所)へ移動します。bash# 例:MyWebAppプロジェクトディレクトリに移動 cd /Applications/ServBay/www/MyWebApp
1
2XSPサーバー起動: プロジェクトルートで以下を実行し、XSP4サーバーを起動してください。未使用ポート(例:8080や9000)を指定し、他サービスとかぶらないようにします。
bash# 9000番ポートでプロジェクトを起動 xsp4 --port 9000
1
2xsp4
:.NET Framework 4.x向けXSPサーバーを呼び出し--port 9000
:サーバーのリッスンTCPポート指定
アプリにアクセス: ブラウザで
http://localhost:9000
またはhttp://127.0.0.1:9000
を開き、アプリが起動していることを確認します。サーバー停止: 開発・動作確認が終わったら、ターミナルウィンドウに戻って
Ctrl + C
またはEnter
を押し、XSPサーバーを停止します。
メリット:
- 設定が簡単で、すぐ起動できる
- ローカル開発・デバッグに最適
デメリット:
- Nginx等の本番Webサーバーより性能が劣る
- 機能がシンプルで本番環境の完全な再現ではない
- ターミナルを起動しっぱなしにする必要あり
方法2:Nginx + FastCGIの利用
この構成では、ServBay管理のNginxをWebフロントとして利用し、静的ファイルはNginxが、高速なFastCGIプロトコル経由の動的処理(.aspx
, .ashx
等)はMonoバックエンド(fastcgi-mono-server4
)が担当します。実運用に近い構成で、Nginxの拡張機能(SSL, キャッシュ, 圧縮等)も活用可能です。
ヒント
- ASP.NET 1.1 なら
fastcgi-mono-server
、 - ASP.NET 2.0/3.x は
fastcgi-mono-server2
、 - ASP.NET 4.x には
fastcgi-mono-server4
を使います。
手順:
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
5fastcgi-mono-server4
: .NET Framework 4.x用FastCGIサーバー起動--applications=/:/Applications/ServBay/www/MyWebApp
:URLパスと物理パスのマッピング設定。/:
はサイトルートを指し、/Applications/ServBay/www/MyWebApp
が実ディレクトリです。Nginxから/some/page.aspx
に来たリクエストは/Applications/ServBay/www/MyWebApp/some/page.aspx
が探されます。自身のプロジェクトパスに必ず置き換えてください。--socket=tcp:127.0.0.1:9001
:FastCGIサーバーがリッスンするTCPアドレスとポート。127.0.0.1
はローカルのみ、9001
は未使用のポート。Nginxのfastcgi_pass
設定と必ず一致させます。--loglevels=Standard --printlog
: (任意)標準的なログをターミナルに表示し、デバッグ時や出力確認が容易になります。
- 注意:
fastcgi-mono-server4
を起動したターミナルは閉じずにおいてください。開発用途ではこのままでOKですが、本格的な運用にはnohup
やscreen
、tmux
などでバックグラウンド化も検討してください。
Nginxサイト設定:
ServBayで「サイト」メニューへ。
「新しいサイトの追加」または既存サイトの編集を選択。
ドメイン名設定: 例として
mywebapp.servbay.demo
などを指定。ServBay側で自動的にmacOSのHostsファイルへエントリが追加され、127.0.0.1
へ紐付けされます。ウェブルート設定: 重要! サイトルートはプロジェクトの実ディレクトリ(例:
/Applications/ServBay/www/MyWebApp
)を指定。これはNginx内のroot
ディレクティブ配置先の定義になります。カスタム構成の有効化・編集: 右上の「カスタム設定」をONにしてファイルを編集。ServBayが自動生成したベースNginx設定に、ASP.NETリクエスト転送の記述を追加・修正します。
ServBay自動生成のテンプレートから確認・編集が必要な例:
nginxserver { listen 80; # HTTPポート listen 443 ssl http2; # HTTPS/SSL & HTTP/2 # ServBayが管理するSSL証明書 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.servbay.demo/mywebapp.servbay.demo.crt; ssl_certificate_key /Applications/ServBay/ssl/private/tls-certs/mywebapp.servbay.demo/mywebapp.servbay.demo.key; server_name mywebapp.servbay.demo; # サイト設定と同一であること root /Applications/ServBay/www/MyWebApp; # **サイトルートと同じに** # ASP.NETデフォルトドキュメント。index.html/htmがないときにこれも探索 index index.html index.htm default.aspx Default.aspx; # メインリクエスト処理 location / { # ファイル($uri)やディレクトリ($uri/)がなければ@monoへ try_files $uri $uri/ @mono; } # (推奨)静的ファイル群の効率的な処理+キャッシュ location ~* \.(ico|css|js|gif|jpe?g|png|svg|woff|woff2|ttf|eot)$ { expires max; log_not_found off; access_log off; } # @monoブロック:動的リクエスト処理 location @mono { # FastCGIでMonoサーバーへ転送。ポート番号はfastcgi-mono-server4起動時と一致必須 fastcgi_pass 127.0.0.1:9001; # 標準FastCGIパラメータ含める include fastcgi_params; # SCRIPT_FILENAME定義。Mono ServerはここでASP.NETファイルを見つけて実行 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; # PATH_INFOは空文字でOK fastcgi_param PATH_INFO ""; # (必要に応じて追加)HOSTなどパラメータも個別設定可能 # fastcgi_param HOST $host; } # ServBay標準のログパス設定例 # access_log /Applications/ServBay/logs/nginx/mywebapp.servbay.demo.access.log; # error_log /Applications/ServBay/logs/nginx/mywebapp.servbay.demo.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
44
45
46
47
48
49
50
51
52
53
54
55保存とNginxリロード: 設定ファイル保存後、ServBayがNginxのリロード(config再読み込み)を自動実行します。エラー時は通知が表示されます。必要に応じて「サービス」画面からマニュアル再起動も可能です。
アプリへアクセス: ブラウザでNginx側で設定した任意のドメイン(例:
https://mywebapp.servbay.demo
)を開いてください。SSL(443ポート)が設定済みなので、HTTPSの利用が推奨されます。静的ファイルはNginx、動的リクエストはfastcgi-mono-server4
へ転送され、MonoがASP.NETコードを実行します。
メリット:
- 高速かつ安定しており、本番運用に近いテスト環境が構築可能
- Nginxの各種高度機能(静的ファイル、SSL、ロードバランス等)もフル活用できる
- サイト管理・ドメイン/Hostsの自動連携等ServBay独自の利便性も享受
デメリット:
- XSP方式に比べて少し設定手順が多い
fastcgi-mono-server4
のプロセスは手動管理(バックグラウンド実行推奨)
最適な運用方法の選び方
- スピーディな開発・デバッグや簡単な動作確認にはXSPがおすすめ。ターミナルでコマンド一発起動ですぐに使えます。
- より高性能・本番環境並みの確認や、HTTPS/独自ドメイン/静的最適化を使いたい場合、もしくはServBayのサイト管理と連携したい場合はNginx + FastCGIがおすすめです。
注意点とトラブル対策
- ファイル権限: Nginx(ServBay管理のプロセス)と
fastcgi-mono-server4
を起動するユーザー双方が、プロジェクトディレクトリ(/Applications/ServBay/www/YourProjectName
)を読み取れる権限を持つようにしてください。必要に応じてchmod
やchown
で調整します。 - パスの一貫性: Nginxの設定ファイル内(
root
ディレクティブ)とfastcgi-mono-server4
の--applications
引数のパスが完全に正しいか、web.config
のあるプロジェクトルートを指しているかチェックしましょう。 - ポート競合: XSPや
fastcgi-mono-server4
が使用するポート番号(本例では9000や9001)が、他のサービスやアプリで使われていないか確認します。 - ログの確認:
fastcgi-mono-server4
起動時のターミナルログ(--printlog
使用)も都度チェック- Nginxのエラーログも重要です。ServBayサイト設定からパスが参照でき、通常は
/Applications/ServBay/logs/nginx/your-domain.error.log
です。Nginx設定ミスやFastCGI連携エラーの特定に役立ちます。
- Monoバージョン互換: ServBay組込のMono 6.14.0は、.NET Framework 1.1~4.7.2程度まで広く互換。4.7.x以上の最新機能利用時や互換性エラーの場合は、ServBay経由で公式Microsoft .NET SDK/ランタイムの利用、またはMono対応の既存バージョンへのダウングレードを検討ください。
- FastCGIプロセス管理: Nginx+FastCGI方式では、
fastcgi-mono-server4
を常に稼働させる必要があります。ローカル開発時はターミナル常駐でOK、本番適用時はサービス化やプロセスマネージャ導入が安心です。
ServBay標準のMono 6環境&推奨ディレクトリ構成を使えば、macOS上で従来型ASP.NET Framework 4.xアプリの開発・実行がよりスマートかつ手軽に行えます。あなたの開発スタートの一助となれば幸いです!